| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
|
Autor
|
Thema: umbennen (521 mal gelesen)
|
silverangel Mitglied

 Beiträge: 12 Registriert: 18.11.2009 Catia V5 R18
|
erstellt am: 09. Dez. 2009 09:15 <-- editieren / zitieren --> Unities abgeben:         
Hei Leute, möchte gerne über ein Skript den Instancename eines Part ändern. Auf der 1. Ebene vom Baum kriege ich es auch hin. Befindet sich das Part auf auf Ebene 2 kannn ich die Instance nicht änder. Hier mein Codeversuch: Sub catmain() Set docc = CATIA.ActiveDocument Set docp = docc.Product Set docko = docp.Products.Item(2)
MsgBox docc.Product.Products.Item(2).Products.Item(2).Name docko.Products.Item(2).Name = "AAAAAAAAAAAAAAAAAAA" MsgBox docc.Product.Products.Item(2).Products.Item(2).Name MsgBox docko.Count
End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
 
 Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 09. Dez. 2009 09:36 <-- editieren / zitieren --> Unities abgeben:          Nur für silverangel
|
silverangel Mitglied

 Beiträge: 12 Registriert: 18.11.2009 Catia V5 R18
|
erstellt am: 09. Dez. 2009 10:10 <-- editieren / zitieren --> Unities abgeben:         
Hei Danke für die schnelle antwort, die Struktur sieht folgender massen aus ober Produkt und darunter befinden sich jeweil parts, products bzw komponeten, in den komponeten sollen die Partname + Instancenames gleich gesetzt werden. Habe ich schon gesucht aber leider nichts passendes gefunden. Für Partname gleich Instancename habe ich folgenden code gefunden greift aber jeweils nur auf die erste ebene. Sub catmain() Dim oTopProductDoc As ProductDocument Dim oTopProduct As Product Dim ItemToRename As Product Dim ItemToRenamePartNumber As String Dim oDict1 'Dictionary Object Dim lNumberOfItems As Long Dim i As Integer On Error Resume Next Set oTopProductDoc = CATIA.ActiveDocument Set oTopProduct = oTopProductDoc.Product 'The top product containing the items to rename Set oDict1 = CreateObject("Scripting.Dictionary") lNumberOfItems = oTopProduct.Products.Count For i = 1 To lNumberOfItems Set ItemToRename = oTopProduct.Products.Item(i) ItemToRenamePartNumber = ItemToRename.PartNumber 'See if the item is already in list, in that case increment the suffix number by 1 before renaming If oDict1.Exists(ItemToRenamePartNumber) Then oDict1.Item(ItemToRenamePartNumber) = oDict1.Item(ItemToRenamePartNumber) + 1 Else: oDict1.Add (ItemToRenamePartNumber), "1" End If 'Rename the items instance name like this: Part Number + "." + suffix number ItemToRename.Name = ItemToRenamePartNumber & "." & oDict1.Item(ItemToRenamePartNumber) Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
silverangel Mitglied

 Beiträge: 12 Registriert: 18.11.2009 Catia V5 R18
|
erstellt am: 09. Dez. 2009 10:12 <-- editieren / zitieren --> Unities abgeben:         
Hei Danke für die schnelle antwort, die Struktur sieht folgender massen aus ober Produkt und darunter befinden sich jeweil parts, products bzw komponeten, in den komponeten sollen die Partname + Instancenames gleich gesetzt werden. Habe ich schon gesucht aber leider nichts passendes gefunden. Für Partname gleich Instancename habe ich folgenden code gefunden greift aber jeweils nur auf die erste ebene. Sub catmain() Dim oTopProductDoc As ProductDocument Dim oTopProduct As Product Dim ItemToRename As Product Dim ItemToRenamePartNumber As String Dim oDict1 'Dictionary Object Dim lNumberOfItems As Long Dim i As Integer On Error Resume Next Set oTopProductDoc = CATIA.ActiveDocument Set oTopProduct = oTopProductDoc.Product 'The top product containing the items to rename Set oDict1 = CreateObject("Scripting.Dictionary") lNumberOfItems = oTopProduct.Products.Count For i = 1 To lNumberOfItems Set ItemToRename = oTopProduct.Products.Item(i) ItemToRenamePartNumber = ItemToRename.PartNumber 'See if the item is already in list, in that case increment the suffix number by 1 before renaming If oDict1.Exists(ItemToRenamePartNumber) Then oDict1.Item(ItemToRenamePartNumber) = oDict1.Item(ItemToRenamePartNumber) + 1 Else: oDict1.Add (ItemToRenamePartNumber), "1" End If 'Rename the items instance name like this: Part Number + "." + suffix number ItemToRename.Name = ItemToRenamePartNumber & "." & oDict1.Item(ItemToRenamePartNumber) Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager

 Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 09. Dez. 2009 10:30 <-- editieren / zitieren --> Unities abgeben:          Nur für silverangel
Hallo, was schonmal falsch ist ist, dass du das Programm in der CATMain hast. Du solltest eine eigene Prozedur (Objektorientiert) schreiben, an die das Produkt bzw. die Produktstruktur über eine Variable übergeben wird. Dann musst du das so umschreiben, dass das Programm bei jeder Komponente prüft, ob es sich um A (ein Produkt) oder B (ein Part) handelt. Bei einem Part soll es dann den Namen ändern und bei einem Produkt soll es den Namen ändern, die Produktstruktur in eine Variable lesen, das Programm in sich selbst (rekursiv) neu öffnen und dabei die Produktstruktur über die Variable übergeben. So wird das Programm für jede Stufe in sich neu geöffnet. Ich hoffe es verständlich erklärt zu haben.  ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |