Autor
|
Thema: Wie kann Mann ein kopierte GeoSet mit Parent Name umbennen? (1869 mal gelesen)
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 21. Aug. 2014 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute Ich habs Mal ein Makro gesrieben, welches mehrere GeoSets (mit original Name "Part_Geometry")aus Produkt-Strukturbaum kopiert und im neues Part eingefügt. meine Frage ist: wie kann Mann jedes Item aus Selektion umbennenen mit Parent.Name? Z.B.: oSel.Item(1), welches heisst "Part_Geometry"-wie alle Elemente aus oSel, kommt aus Part1 - Ich will oSel.Item(1) heissen "Part1" statt "Part_Geometry". Mein Kode unten:
Code:
Sub CATMain() 'start by declaring the selection Dim oSel Set oSel = CATIA.ActiveDocument.Selection 'Create an array for CATParts ReDim strArray(0) strArray(0)="Part"osel.Search "CATPrtSearch.PartFeature,all" 'Count the number of selected parts iCount = oSel.Count 'Create a For Next loop to cycle through all selected parts 'Isn't vb scripting fun? For i= 1 to iCount Dim myObject2 Set myObject2 = oSel.Item(i).value 'Search only the selected objects for the object named "Part_Geometry" oSel.Search "Name=Part_Geometry,sel" 'now we take all the Part_Geometry objects found and copy them ReDim copies(iCount) For k=1 to iCount Set copies(k)=oSel.Item(k).Value oSel.Add copies(k) oSel.Copy 'close the loops Next 'k Next 'i 'Now use CATIA scripting basics to create a new part Dim part2 Set part2 = CATIA.Documents.Add("CATPart") Dim partDocument2 'As PartDocument 'rename the new part part2.Product.PartNumber = "My New Part" 'optional step: create a new geometrical set and rename it Dim GSet1 'As HybridBody Set GSet1 = part2.part.HybridBodies.Add () GSet1.Name = "Flachen" 'set the newly create part to the active document Set partDocument2= CATIA.ActiveDocument Dim ActSel 'As Selection Set ActSel=partDocument2.Selection ActSel.Add GSet1 'paste special the PartBody objects from the orginial file and paste as result without link ActSel.PasteSpecial("CATPrtResultWithOutLink" ) 'clear the selection ActSel.Clear End Sub
Dazu habe ich noch eine Frage: wie kann ich kopierte GeoSets einfach unten Partbody statt "Flachen" einfugen? Sorry fuer mein Deutsch Danke im Voraus fuer jede Antwort 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: 21. Aug. 2014 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus Wo die Elemente eingefügt werden, wird durch die Selekton im Zieldokument bestimmt. Wenn du dort statt der GeoSet das Part angibst, sollt die GeoSets auf oberster Ebene erscheinen. Code: ActSel.Add partDocument2.Part
IMHO musst du um die Namen der GeoSets anzupassen das Makro folgend ändern: - Über Suche werden die GeoSets selektiert - Objekte der Selektion zwischen speichern (Array, Collection) - GeoSets einzeln kopieren und in Zielpart einfügen - GeoSet (das letzte in der GeoSet-Collection) umbenennen Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 21. Aug. 2014 11:54 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann:
IMHO musst du um die Namen der GeoSets anzupassen das Makro folgend ändern: - Über Suche werden die GeoSets selektiert - Objekte der Selektion zwischen speichern (Array, Collection) - GeoSets einzeln kopieren und in Zielpart einfügen - GeoSet (das letzte in der GeoSet-Collection) umbenennen
Korrekt mich wenn ich das falsch verstanden habe: Statt ganze Selektion einfuegung, soll Ich ein Loop machen mit zwei Schritte: einfuegen & umbennenen fuer jedes oSel.Item? Warum soll ich nur letzte GeoSet umbenennen? Sie kommen von mehrere, unterschiedliche Teile....
[Diese Nachricht wurde von Sylas am 21. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 22. Aug. 2014 09:49 <-- editieren / zitieren --> Unities abgeben:
Halo noch Mal Kann mir jemand zeigen, wie kann ich der Code Code:
ReDim copies(iCount) For k=1 to iCount Set copies(k)=oSel.Item(k).Value oSel.Add copies(k) oSel.Copy 'close the loops Next 'k Next 'i
so ändern, das jedes Objekt im oSel seinem Fater-name hat, bevor dem Kopieren ins einen neuen Part? 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: 22. Aug. 2014 19:18 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
Servus AFAIR solltest du den Namen über Code: oSel.Item(k).Value.Name = "Bla"
ändern können. Allerdings wrid dann das Ursprungsobjekt umbenannt. Die Kopie kann man IMHO erst nach dem Einfügen umbenennen. Sollen alle GeoSets nach dem kopieren gleich heißen, oder den Partnamen/Exemplanamen des Ursprungsobjekts erhalten? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 25. Aug. 2014 08:06 <-- editieren / zitieren --> Unities abgeben:
Halo Bernd Zitat: Original erstellt von bgrittmann:
Sollen alle GeoSets nach dem kopieren gleich heißen, oder den Partnamen/Exemplanamen des Ursprungsobjekts erhalten? Gruß Bernd
Die GeoSets sollen Partnamen/Exemplanamen des Ursprungsobjekts erhalten. EDIT: Nach folgende Makro-Änderung:
Code:
ReDim copies(iCount) ReDim names(iCount) For k=1 to iCount Set copies(k)=oSel.Item(k).Value Set names(k)=oSel.Item(k).Value.parent.parent.name Set copies(k).name=names(k) oSel.Add copies(k) oSel.Copy 'close the loops Next 'k Next 'i
kriege ich eine Meldung das:
entsprechende String "BLECH1" ist auffindbar aber wie kann ich jetzt weiter gehen? P.S. I entschuldige für Polnische Sprache auf dem Bild - Ich komme aus Polen Gruß [Diese Nachricht wurde von Sylas am 25. Aug. 2014 editiert.] [Diese Nachricht wurde von Sylas am 25. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |