Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makroprogrammierung Startschwierigkeiten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Makroprogrammierung Startschwierigkeiten (4912 mal gelesen)
N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 09. Sep. 2013 10:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

arbeite mich gerade in die Makroprogrammierung ein. Bisherige Programmiererfahrung: VBA, C++, Matlab.
Möchte zum Einstieg ein Makro programmieren, welches einen Body die Eigenschaft hide bzw. show ändern.
Diverse Fachliteratur hat mir bis jetzt nicht weitergeholfen. In den Büchern gibt es zwar Beispiele, aber der Code wird finde ich nicht erklärt.

Zur Info, Strukturbaum sieht so aus:

Code:
PartBody --> leer
Body.2 --> Pad.1
Body.3 --> Pad.2

Mein erstes Problem ist die Auswahl. Damit ich eine Eigenschaft ändern kann muss ich das Pad.1 zunächst auswählen?
"Insert Object Solution" liefert mir das:

Code:
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Body.2")

Set shapes1 = body1.Shapes
Set pad1 = shapes1.Item("Pad.1")



Ist das Pad.1 nun ausgewählt? Was ist der Unterschied zwischen Selction (z. B. Dim VARIABLE as Selction)?

Wie kann ich jetzt die VisProperties von Pad.1 ändern?


Makrorecording liefert mir diesen Code:

Code:
Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

Dim visPropertySet1 As VisPropertySet
Set visPropertySet1 = selection1.VisProperties

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Body.3")

Set bodies1 = body1.Parent

Dim bSTR1 As String
bSTR1 = body1.Name

selection1.Add body1

Set visPropertySet1 = visPropertySet1.Parent

Dim bSTR2 As String
bSTR2 = visPropertySet1.Name

Dim bSTR3 As String
bSTR3 = visPropertySet1.Name

visPropertySet1.SetShow 1

selection1.Clear

End Sub



Ich verstehe den Code nicht. Ich möchte nur die Eigenschaft VisProperty ändern.
Warum der so viele Variablen deklariert ist mir schleierhaft.

Danke schonmal für Eure Hilfe!

PS.: Gibt es einen art Debugger wie in C++ / Matlab zum fehlerfinden?

[Diese Nachricht wurde von N2high am 09. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 09. Sep. 2013 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich hab das Problem jetzt gelöst 

Code:
set Selection1 = CATIA.ActiveDocument.Selection
selection1.Search "Name=Pad.1,all"
'Auswahl von Pad.1 via Fkt suchen

'set Element = selection1.VisProperties
'Element.SetShow 1
'Hide Show mit Zusatzveriable

selection1.VisProperties.SetShow 1
'Hide Show ohne Zusatzveriable


nun möchte ich via if/else eine Meldung ausgeben falls das Objekt bereits versteckt ist.
Den Status sollte ich über
selection1.VisProperties.GetShow
bekommen und möchte ihn in einer Integer Variable speichern.

Code:
dim status As Integer
status = selection1.VisProperties.GetShow

So geht es jedoch nicht. Gibt es eine Hilfe wo ich finde was GetShow zurück gibt? (Denke mal 0 oder 1) bzw. eine art Debugger?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 09. Sep. 2013 12:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin moin,

bin auch kein meister, aber hier meine Antwort.

Zitat:
Ist das Pad.1 nun ausgewählt? Was ist der Unterschied zwischen Selction (z. B. Dim VARIABLE as Selction)?

Item("Pad.1") ist als Object Pad1 referenziert. Selektiert ist hier nichts.

Zitat:

Ich verstehe den Code nicht. Ich möchte nur die Eigenschaft VisProperty ändern.
Warum der so viele Variablen deklariert ist mir schleierhaft.


Das macht CATIA so, warum weiß ich auch nicht. Aber man gewöhnt sich dran. Man muss nur die Syntax etwas verstehen, dann kann man einiges in eins zusammen fassen.
zb:

Code:
Dim selection1 As Selection
Set selection1 = CATIA.ActiveDocument.selection

oder

Code:
Dim visProp As VisProperties
set VisProperties = CATIA.ActiveDocument.selection.VisProperties

Zitat:
PS.: Gibt es einen art Debugger wie in C++ / Matlab zum fehlerfinden?

=Alt + F11 oder  Tools->Macros->Visual Basic Editor

Code:

Sub CATMain()

Dim oBody As Body
Set oBody = CATIA.ActiveDocument.Part.Bodies.Item("Body.2")
'--->das ist der direkter weg.
'sollte es keinen Body mit dem Namen "Body.2" im geöffneten Document geben,
'wird das makro abstürtzen.


dim oSelection As Selection
set oSelection = CATIA.ActiveDocument.Selection
'damit haben wir einen Objekt der die Selektion des AktivenDokuments wieder gibt
' hier müssen wir nun das Body hinzufügen.

oSelection.Add(oBody)

' das Show/Hide wird wie im aufgenommen makro gezeigt über VisProperties gesteuert bzw
' VisProperties.SetShow
' VisProperties bewirkt sich auf alle Elemente der Selection aus!

oSelection.VisProperties.SetShow 1

End Sub


Damit wird es durchlaufen, aber wie gesagt, es schlechter geht es fast nicht mehr. Das Makro ist sehr fehler anfällig.

Gruß,

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Sep. 2013 12:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Was dir "getShow" zurückliefert kannst in der V5Automation.chm nachschauen. Ein Beispiel von dort:
Code:
Dim showstate As CatVisPropertyShow
Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties
visProperties1.GetShow showstate
MsgBox "show = " & showstate

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 09. Sep. 2013 14:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Code:
set Selection1 = CATIA.ActiveDocument.Selection
selection1.Search "Name=Pad.1,all"
'Auswahl von Pad.1 via Fkt suchen

selection1.VisProperties.SetShow 1


ich erzeuge hier mit der Methode VisProperties die Klasse VisPropertySet von dieser ich wiederum mit der Methode SetShow das Atribut Hide/Show ändern kann. Hab ich das korrekt verstanden?

Möchte das ganze nun übertragen auf ein neues Problem:
Ich wähle mir ein Geometrie-Objekt aus und Catia soll die Art zurück geben.
Als Klasse brauch ich laut meinem Buch "GeometricElement". Aber welche Methode?

---------------------------------------------------------------------------------

bin wieder etwas weiter:

Code:
Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("Geometrical Set.1")

set art = hybridBody1.GeometricElements


nun müsste in art eine Liste sein mit den jeweiligen Objekten sein? Ausgegeben bekomme ich diese jedoch nicht

[Diese Nachricht wurde von N2high am 09. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Sep. 2013 17:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
"GeometricElements" sind AFAIR die Elemente in einer Skizze. Über de Methode "GeometricType" kann man von diesen den Typ ausgeben lassen.
Allgemein geht das teilweise auch über "TypeName" also zB Element markieren und folgendes Script durchlaufen lassen:
Code:
Sub CATMain()
Dim osel As Object
Set osel = CATIA.ActiveDocument.Selection
MsgBox osel.Item2(1).Name & " = " & TypeName(osel.Item2(1).Value)
End Sub
Grß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 09. Sep. 2013 20:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke bgrittmann 
Ich möchte den Typ eines Intersect's (Punkt oder Gerade) auslesen. Denke die Methode mit dem Namen geht da nicht.

hier die Objektauflösung von Catia

Code:
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")
Set hybridShapes1 = body1.HybridShapes
Set hybridShapeIntersection1 = hybridShapes1.Item("Verschneiden.1")
End Sub

Als Methode von welchem Objekt kann ich jetzt GeometricTyp anwenden?
Gibt es einen Ort wo ich das nachschauen kann? Im Objektbrowser finde ich das nicht

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Sep. 2013 21:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Schau dir dazu mal die Methode "GetGeometricalFeatureType" an:
Code:
Sub CATMain()
Dim partDocument1 As partDocument
Dim part1 As part
Dim hybridBody As hybridBody
Dim hybridShapes1 As Hybridshapes
Dim hybridShapeIntersection1 As Hybridshape
Dim hybridShapeFactory As hybridShapeFactory

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.part
Set hybridBody = part1.hybridBodies.Item(1)
Set hybridShapes1 = hybridBody.Hybridshapes
Set hybridShapeIntersection1 = hybridShapes1.Item("Verschneiden.2")
Set hybridShapeFactory = part1.hybridShapeFactory

MsgBox hybridShapeFactory.GetGeometricalFeatureType(hybridShapeIntersection1)

End Sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 09. Sep. 2013 22:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke jetzt läufts 

gibt eine 1 zurück für Punkt und 3 für Linie

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 10. Sep. 2013 09:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin moin,

TypeName(Objekt) liefert keine Zahl sondern ein Wort was etwas verständlicher ist. Ob Punkt oder doch nicht etwa intersection raus kommt muss du selbst probieren.

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hier ist mein Code mit dem es funktioniert:

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("abc")
Set hybridBodies2 = hybridBody1.HybridBodies

Set hybridBody2 = hybridBodies2.Item("Geometrical Set.1")
Set hybridShapes1 = hybridBody2.HybridShapes

Set hybridShapeIntersection1 = hybridShapes1.Item("Intersect.1")
Set hybridShapeFactory = part1.hybridShapeFactory

art=hybridShapeFactory.GetGeometricalFeatureType(hybridShapeIntersection1)

Select Case art
Case "1"
MsgBox "Intersect ist ein Punkt", vbOKOnly + vbInformation
Case "3"
MsgBox "Intersect ist eine Gerade",vbOKOnly + vbInformation
Case Else
MsgBox "Art des Intersect konnte NICHT bestimmt werden",vbOKOnly + vbCritical
End Select


End Sub


Gibt es eine Möglichkeit das ganze Änderungsfreundlicher zu machen, sprich nach dem Intersect zu suchen mit Namen?
Falls die Struktur geändert wird.


[Diese Nachricht wurde von N2high am 10. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2013 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Ja klar kann man das Strukturunabhäniger machen:
- Intersect vom User selektieren lassen
- mit der Suche alle Intersects suchen (zB nur in einem GeoSet, oder in einem gewählten GeoSet)
- ...
(siehe dazu auch Forensuche, Literatur und Doku)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 12:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

mit
Code:
set Selection1 = CATIA.ActiveDocument.Selection
selection1.Search "Name=Intersect.1,all"

kann ich das Intersect selektieren, allerdings wie ich das mit
Code:
hybridShapeFactory.GetGeometricalFeatureType()

"verbinde" ist mir noch nicht klar
Code:
hybridShapeFactory.GetGeometricalFeatureType(selection1.Search "Name=Intersect.1,all")

funktioniert nicht

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 10. Sep. 2013 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin moin,

Code:
selection1.Search "CATPrtSearch.Intersect.Name='Intersect.1',all"

sucht nach type Intersect mit der Name "Intersect.1" und das überall.
Gru0

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2013 12:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Mit "selection1.Search" hast du alle bzw ggf mehrere Intersects gesucht.
Mit "selection1.item2(1).value" kannst du zB auf das erste selektierte Element zugreifen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 12:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

das wars danke 

zu vollständigkeit hier mein Code:

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

set Selection1 = CATIA.ActiveDocument.Selection
selection1.Search "Name=Intersect.2,all"
set intersect = selection1.item2(1).value

art=part1.hybridShapeFactory.GetGeometricalFeatureType(intersect)

Select Case art
Case "1"
MsgBox "Intersect ist ein Punkt", vbOKOnly + vbInformation
Case "3"
MsgBox "Intersect ist eine Gerade",vbOKOnly + vbInformation
Case Else
MsgBox "Art des Intersect konnte NICHT bestimmt werden",vbOKOnly + vbCritical
End Select

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 10. Sep. 2013 13:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin moin,

freut mich das du zum Ergebnis gekommen bist, aber dürfte ich fragen warum du dieses macro brauchst?
Es scheint mir relative fehlerhaft zu sein. Sobald intersect.2 intersect.3 heisst oder es zwei elemente mit dem namen Intersect.2 gibt, bekommst du nicht die richtige Antwort-Msgbox.
Ausserdem für sowas "simples" ist die manuelle funktion STRG+F->"*intersect.2" einhacken->Search->reframe on. schon fast genau so schnell.

Gruß,

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 13:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe ein Part mit mehreren Intersects. Diese heißen alle unterschiedlich und sind keine Standartnamen. Darum ist das mit den Namen gewollt.
Je nach dem was bei dem Intersect herauskommt ( Punkt oder Gerade) muss eine andere Logik ablaufen.
Ich bin es einfach leid jedes mal manuell nach zu schauen was herauskommt und die entsprechende Logik dann auszuwählen.

Wenn Du weitere Verbesserungsvorschläge hast, immer her damit

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 10. Sep. 2013 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

wieder mal moin,

also, da die Intersections einzigartigen Namen besitzen, macht das ganze wieder "stabiler".

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ferdo
Mitglied
engineer


Sehen Sie sich das Profil von ferdo an!   Senden Sie eine Private Message an ferdo  Schreiben Sie einen Gästebucheintrag für ferdo

Beiträge: 34
Registriert: 15.04.2009

Windows 7, 64
CATIA v5r25 , 3DEXPERIENCE on cloud

erstellt am: 10. Sep. 2013 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Hallo,

In CATScript

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

set Selection1 = CATIA.ActiveDocument.Selection
selection1.Search "Name=Intersect*,all"

For i  = 1 TO selection1.Count

set intersect = selection1.item2(i).value

art=part1.hybridShapeFactory.GetGeometricalFeatureType(intersect)

Select Case art
Case "1"
MsgBox "Intersection " & intersect.Name & " is a Point", vbOKOnly + vbInformation
Case "3"
MsgBox "Intersection " & intersect.Name & " is a Line",vbOKOnly + vbInformation
Case Else
MsgBox "Type of Intersection was not determined",vbOKOnly + vbCritical
End Select

Next

End Sub

------------------
Best regards
Fernando

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 17:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

vielen Dank! Das als Schleife zu programmieren wäre mein nächster Schritt gewesen
Steh nun vor einem neuen Problem.
Je nach dem ob ein Punkt oder Gerade herauskommt muss ein gewisses Geoset aktiviert bzw. deaktiviert werden.
Bin ähnlich vorgegangen:
Code:
...
set Selection2 = CATIA.ActiveDocument.Selection
selection2.Search "Name=Intersect_123,all"
'Suche nach Geoset

set intersect2 = selection2.item2(1).value
'Erstes Element der Suche auswaehlen
part1.Inactivate intersect2



Die Methode schlägt jedoch fehl.
Was muss mein bei Geoset's beachten?
Mit einem Pad funktioniert es

[Diese Nachricht wurde von N2high am 10. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2013 17:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Was hast du selektiert?
Kannst du manuell ein GeoSet aktivieren/deaktivieren?
Bei mir geht es nicht, dann geht es wohl auch nicht per Makro. (ggf kannst nur alle Elemente darunter deaktivieren oder per StartCommand "Komponenten deaktivieren" aufrufen)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 10. Sep. 2013 17:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

manuell funktioniert es bei mir.
Hab mal den Makrorecorder im Testpart laufen lassen:

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("PartBody")

Set hybridBodies1 = body1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("qwert")

Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapePointCoord1 = hybridShapes1.Item("Point.4")

part1.Inactivate hybridShapePointCoord1
part1.UpdateObject hybridBody1


End Sub



damit funktioniert es auch.
Daraus schleiße ich: um part1.Inactivate zum laufen zu bringen brauche ich also eine Variable vom Typ HybridShape.
Code:
set Selection2 = CATIA.ActiveDocument.Selection
selection2.Search "Name=Intersect_123,all"
set intersect2 = selection2.item2(1).value


das liefert mir aber ein AnyObject
Wie ich jetzt aus meinem selectierten AnyObject ein HybridShape mache weiß ich allerdings noch nicht


[Diese Nachricht wurde von N2high am 10. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2013 18:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Als was hast du intersect2 dimensioniert?
Was liefert dir TypeName(intersect2 ) zurück?
Ist "part1" deklariert?
ggf solltest du die Suche gleich einschränken, dass nur Verschneidungen gesucht werden.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 10. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 11. Sep. 2013 09:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich bin davon abgekommen die Geosets zu Aktivieren bzw Deaktiveren sondern möchte die Sachen, welche zuvor darin waren programmieren.
Denke so kann ich mehr lernen.
Als einfachsten Fall dachte ich, nehme ich das Intersect als Referenz und mach einen Punkt mit X,Y,Z jeweils 0. Macht zwar keinen Sinn, da ich das Intersect gleich verwenden könnte, möchte das nur zum Verständis machen

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set Wzk3D = part1.HybridShapeFactory

Set h_pkt = part1.FindObjectByName ("Intersect.4")
Set ref = part1.CreateReferenceFromObject (h_pkt)

set Pkt = Wzk3D.AddNewPointCoordWithReference (0,0,0,h_pkt)

Set HBody = part1.HybridBodies.Item ("Geometrical_Set.2")
HBody.AppendHybridShape Pkt
Part1.Update


End Sub


das ganze funktioniert so lange, wie das Geoset in der Struktur direkt unter dem CATparts ist. Ist dazwischen ein weiteres Geoset funktioniert die Sache nicht mehr.
Gibt es hier eine Möglichkeit das ganze Änderungsfreundlich zu machen? Sprich unabhängig wo das Geoset sich nun befindet?

[Diese Nachricht wurde von N2high am 11. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Sep. 2013 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Über Name auf Element zuzugreifen ist immer etwas gefährlich (Fehlerbehandlung falls Element nicht vorhanden ist).
Du könntest:
- über h_pkt.parent.parent das GeoSet auslesen wo sich die Verschneidung befindet und dort auch deinen Punkt erstellen (was passiert wenn mehre Elemente "Intersect.4" heißen??)
- über eine Suche das GeoSet (per Namen) suchen
- das GeoSet vom User wählen lassen
- ....

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 11. Sep. 2013 09:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Unbenannt.JPG

 
Zitat:
Original erstellt von bgrittmann:
- über h_pkt.parent.parent das GeoSet auslesen wo sich die Verschneidung befindet und dort auch deinen Punkt erstellen (was passiert wenn mehre Elemente "Intersect.4" heißen??)

super mit parent.parent konnte ich das Geoset auslesen :)
Ich verwende in meinem eigentlichen Part keine Standardnamen. So kann ich halbwegs sichergehen, die Optimale Lösung ist das nicht. Dafür fehlt mir noch das Knowhow ;)
Das hier ist mein Versuchspart.

Hab nun parent.parent hinzugefügt.
Allerdings funktioniert das ganze nur mit Geoset direkt unterhalb des CATparts.
Anbei meine Teststruktur. Mit "Geometrical_Set.1" funktioniert das ganze nicht, mit "Geometrical_Set.2" wiederrum schon

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set Wzk3D = part1.HybridShapeFactory

Set h_pkt = part1.FindObjectByName ("Intersect.3")
Set ref = part1.CreateReferenceFromObject (h_pkt)

set Pkt = Wzk3D.AddNewPointCoordWithReference (0,0,0,h_pkt)

Set HBody = part1.HybridBodies.Item (h_pkt.parent.parent.name)
HBody.AppendHybridShape Pkt
Part1.Update

End Sub



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 11. Sep. 2013 09:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin,

wo und was spuckt er als fehler meldung aus?

Eigentlich müsste HybridBodies. eine KOllektion alle HYBRID Bodies im Part1. sein. Auf welchen "Baum" level sie sich befinden müsste egal sein.

[Diese Nachricht wurde von DasDon am 11. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 11. Sep. 2013 10:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Unbenannt2.JPG

 
die Fehlermeldung hab ich als Anhang angehängt.
Die Fett markierte Zeile ist es

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set Wzk3D = part1.HybridShapeFactory

Set h_pkt = part1.FindObjectByName ("Intersect.1")
Set ref = part1.CreateReferenceFromObject (h_pkt)

set Pkt = Wzk3D.AddNewPointCoordWithReference (0,0,0,h_pkt)

Set HBody = part1.HybridBodies.Item (h_pkt.parent.parent.name)
HBody.AppendHybridShape Pkt
Part1.Update

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 11. Sep. 2013 10:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

mein fehler!
part.HybridBodies listet nur alle HYBodies die auf level1 des Baumes sind!

Um es einfach zu halten würde ich es so machen

Code:
Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set Wzk3D = part1.HybridShapeFactory

Set h_pkt = part1.FindObjectByName ("Intersect.2")
Set ref = part1.CreateReferenceFromObject (h_pkt)

set Pkt = Wzk3D.AddNewPointCoordWithReference (0,0,0,h_pkt)

Set HBody = part1.FindObjectByName (h_pkt.parent.parent.name)
HBody.AppendHybridShape Pkt
Part1.Update

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 11. Sep. 2013 10:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke so klappts 

Wo kann man des nachschauen, dass es nur auf Level 1 gilt?
In der Catia Hilfe hab ichs nicht gefunden

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Sep. 2013 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Warum so komplex über FinObjectbyName? Es geht doch direkt über
Set HBody = h_pkt.parent.parent

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 11. Sep. 2013 10:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

moin,

ich habe mir im VBA Editor part1 als Watch Objekt hinzugefügt und dann gesehen das unter Hybridbodies nur 2 Elemente waren, Nämlich 123 und Geometrical_Set.2.

Ich würde dir empfehlen den VBA Editor zubenutzen bei schwerigkeiten. Ich habe das CATIA Macro scripten ohne ihn gelernt, aber gerade am amfang spart es viel Zeit beim Debuggen. Einfach das WatchTool fenster benutzen.

Gruß,
Dean

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 11. Sep. 2013 10:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Zitat:
Warum einfach, wenn es auch kompliziert geht.
 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 11. Sep. 2013 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

kann ich dem Punkt gleich bei der Erstellung einen Namen zuweisen?
Oder den Standardnamen lassen und nachträglich ändern. Dann muss ich halt wieder selektieren usw. ...

[Diese Nachricht wurde von N2high am 11. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Sep. 2013 11:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Schon mal
Code:
Pkt.name  = "BlaBla"
probiert?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

N2high
Mitglied



Sehen Sie sich das Profil von N2high an!   Senden Sie eine Private Message an N2high  Schreiben Sie einen Gästebucheintrag für N2high

Beiträge: 44
Registriert: 09.09.2013

Catia V5R19 SP9

erstellt am: 13. Sep. 2013 15:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke hat geklappt.

Ich möchte nun ein neues Geoset in bereits vorhandenes Geoset einfügen

Code:
name_new_geoset_parent = "Test"
name_new_geoset = "123"
       
Set Hbody = part1.FindObjectByName(name_new_geoset_parent)
       
Set HKoerper = Hbody.HybridBodies.Add
HKoerper.Name = name_new_geoset

bekomme so dann die Fehlermeldung:
Object variable or With block variable not set (Error 91) in der fettgedruckten Zeile

Habe daraufhin die Variablen deklariert:

Code:
name_new_geoset_parent = "Test"
name_new_geoset = "123"

Dim Hbody As Hybridbodies        
Set Hbody = part1.FindObjectByName(name_new_geoset_parent)

Dim Hbody As HybridBody      
Set HKoerper = Hbody.HybridBodies.Add
HKoerper.Name = name_new_geoset



Die Fehlermeldung kommt aber immer noch. Wo liegt das Problem?

[Diese Nachricht wurde von N2high am 13. Sep. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 13. Sep. 2013 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für N2high 10 Unities + Antwort hilfreich

Servus
Ein Hybribody hat keine eigene COllection mit Hybridbodies, du kannst direkt "Add" nutzen (wie es auch sicher intellisens vorschlägt):
Code:
Dim name_new_geoset_parent As String
Dim name_new_geoset As String

name_new_geoset_parent = "Test"
name_new_geoset = "123"

Dim Hbody As hybridBodies
Set Hbody = part1.FindObjectByName(name_new_geoset_parent)

Dim HKoerper As hybridBody
Set HKoerper = Hbody.add
HKoerper.Name = name_new_geoset


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz