Autor
|
Thema: Parent Function (1356 mal gelesen)
|
N2high Mitglied
Beiträge: 44 Registriert: 09.09.2013 Catia V5R19 SP9
|
erstellt am: 31. Okt. 2013 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte mit meinem Makro den Namen der Parent's im Strukturbaum auslesen. Der Aufbau
Code: Geoset 1 -->Geoset 2 --->Geoset 3 --->Plane.Explicit --->Fill
Hab es mit einer Schleife realisiert (do-While solange name_parent <> CATPart Name). Die Funktion Parent spuckt nun beim Geoset 3 folgenden aus oSel.Parent.Name = Geoset 2 oSel.Parent.Parent.Name = Geoset 1 bei Plane.Explicit oSel.Parent.Name = Parameters oSel.Parent.Parent.Name = Name CATPart bei Fill oSel.Parent.Name = HybridShapes oSel.Parent.Parent.Name = Geoset 2 die Logik dahinter erschließt sich mir nicht. Gibt es eine Methode welche unabhängig vom Typ des Startelementes arbeitet?
[Diese Nachricht wurde von N2high am 31. Okt. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 31. Okt. 2013 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für N2high
|
N2high Mitglied
Beiträge: 44 Registriert: 09.09.2013 Catia V5R19 SP9
|
erstellt am: 02. Nov. 2013 09:56 <-- editieren / zitieren --> Unities abgeben:
Danke, das sieht mir ziemlich aufwendig aus. Muss für fast jedes Element eine Ausnahme machen Ich möchte ein Makro schreiben, welchen mir Elemente wieder auf show setzt. Dafür muss ich die Parent Elemente auch auf show setzten. Hat jemand vielleicht noch eine andere Idee?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Nov. 2013 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für N2high
Servus Vielleicht klappt der Trick: die Methode "GetNameToUseInRelation" auf zB dein Fill "loslassen" und danach den String auswerten. Die Methode liefert gibt dir ein String zB "GeoSet.1\GeoSet.3\Fill.1" zurück. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
N2high Mitglied
Beiträge: 44 Registriert: 09.09.2013 Catia V5R19 SP9
|
erstellt am: 02. Nov. 2013 13:06 <-- editieren / zitieren --> Unities abgeben:
top Bernd, damit klappts im part! Im Product schau ich mir das nächste Woche an. Code: Sub catmain() Set part1 = CATIA.ActiveDocument.Part Set objekt = part1.FindObjectByName("Fill") Set Parameter = part1.Parameters Link = Parameter.GetNameToUseInRelation(objekt) 'Name Objects to show help_array = Split(Link, "\") End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
N2high Mitglied
Beiträge: 44 Registriert: 09.09.2013 Catia V5R19 SP9
|
erstellt am: 06. Nov. 2013 10:12 <-- editieren / zitieren --> Unities abgeben:
falls jemand das gleiche Problem hat, hier meine erste Version als Funktion. Das Input ist ein String, welcher die Elemente mit Komma getrennt beinhaltet. Code: Function show_elements(input_names As String) As Boolean Dim productDocument1 As ProductDocument Set productDocument1 = CATIA.ActiveDocument Dim product1 As Product Set product1 = productDocument1.Product Dim parameters1 As Parameters Set parameters1 = product1.Parameters Dim selection1 As selection Set selection1 = productDocument1.selection Dim oVisPropSet As VisPropertySet Set oVisPropSet = selection1.VisProperties Dim input_names_split() As String input_names_split = Split(input_names, ",") Dim i As Integer Dim j As Integer Dim temp_str As String Dim temp_blank() As String 'Split Input Array "säubern" For i = 0 To UBound(input_names_split) temp_str = input_names_split(i) temp_str = LTrim(temp_str) temp_str = RTrim(temp_str) If temp_str <> "" Then ReDim Preserve temp_blank(j) temp_blank(j) = temp_str j = j + 1 End If Next input_names_split = temp_blank Dim m As Integer 'Schleife für alle Input-Elemente For m = 0 To UBound(input_names_split) selection1.Clear selection1.Search "Name='" & input_names_split(m) & "',all" oVisPropSet.SetShow 0 Dim oSel As Object Set oSel = selection1.Item2(1).Value Dim names_parent_to_show As String names_parent_to_show = parameters1.GetNameToUseInRelation(oSel) Dim names_parent_to_show_split() As String names_parent_to_show_split = Split(names_parent_to_show, "\") Dim n As Integer 'Schleife für alle Parent Elemente des Input-Elements For n = 0 To (UBound(names_parent_to_show_split) - 1) selection1.Clear selection1.Search "Name='" & names_parent_to_show_split(n) & "',all" oVisPropSet.SetShow 0 Next selection1.Clear Next show_elements = TrueEnd Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |