Autor
|
Thema: Instancename umbenennen 2te Ebene (2656 mal gelesen)
|
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 13. Mai. 2007 23:40 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habe folgendes Problem, ich möchte die Instancename von Parts neu benennen. Leider benennt er nur die Instancen unter dem Hauptprodukt um, aber nicht die erfassten Instancen in Unterprodukten. Ich komme mit .Name an den alten Instancename ran, aber ich kann diesen aber danach nicht ändern. mfg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Mai. 2007 00:09 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo leipziger, ich weiß leider nicht, wie Du die "Instancen in Unterprodukten" erfasst, doch wenn Du die Struktur rekursiv durchsuchst, funktioniert es (prinzipiell). D.h., wenn Du die Struktur rekursiv durchläufst und jeweils prüfst, ob es die Instance vom gesuchten Part ist, solltest Du sie auch umbenennen können. Ob und wie das mit z.B. in einer Suche erfassten Parts funktioniert, weiß ich leider nicht. mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 14. Mai. 2007 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo also ich benutze Codezeilen von tomtom1972! Sub Main() Set oRoot = oCatia.ActiveDocument Set oProd = oRoot.Product Set oProducts = oRoot.Product.Products SUB_ProdScan oProducts End Sub Sub SUB_ProdScan(oProducts) For i = 1 To oProducts.Count If oProducts.Item(i).Products.Count = 0 Then
oProducts.Item(i).Name = strNeuerInstancename Else Set oProductsUebergabe = oProducts.Item(i).Products SUB_ProdScan oProductsUebergabe End If Next End Sub End Sub Leider klappt das mit dem "oProducts.Item(i).Name = strNeuerInstancename" nicht, wenn das ich dann Instancename in Unterprodukten umbenennen will.
mfg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 14. Mai. 2007 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo Leipziger, dann nimm noch diese Codezeilen von tomtom1972 dazu, dann klappts Zitat: Hallo zusammen,das geht einfacher. Das Part, dessen Instance umbenannt werden soll, muss nur über sein Parent (CATProduct) aufgerufen werden. Selectionen sind keine notwendig. Set oInstNameChangeProd = Catia.Documents.Item(oPartToRenameTheInstance.Parent.Parent.ReferenceProduct.Parent.Name) Set oInstNameChangeItem = oInstNameChangeProd.Product.Products.Item(oPartToRenameTheInstance.Name) oInstNameChangeItem.Name = sNewInstanceName Gruss TomTom ------------------ tomtom1972
Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 14. Mai. 2007 14:31 <-- editieren / zitieren --> Unities abgeben:
Hier erst einmal der Links zum passenden Beitrag [URL=http://ww3.cad.de/foren/ubb/Forum137/HTML/001678.shtml#000003][/URL] Aber was ist jetzt "oPartToRenameTheInstance" ???
Ist denn oPartToRenameTheInstance = oProducts.Item(i).ReferenceProduct.Parent Und was ist, wenn der Part sich in einer Componente befindet, dann komm ich mit dem Zugriff über das Documente nicht mehr weiter :-(.
mfg
[Diese Nachricht wurde von leipziger am 14. Mai. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 14. Mai. 2007 17:36 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo Leipziger, ich hab das mal in deinen Code eingefügt:
Code: For i = 1 To oProducts.Count If oProducts.Item(i).Products.Count = 0 Then Dim SubProduct As Product Set SubProduct = oProducts.Item(i) Set ProdToRename = SubProduct.Parent.Parent.ReferenceProduct.Parent.Product.Products.Item(SubProduct.Name) ProdToRename.Name = strNeuerInstancename Else Set oProductsUebergabe = oProducts.Item(i).Products SUB_ProdScan oProductsUebergabe End If Next
End Sub Bei Components gehst du nicht bis zum Document, sondern nur über das ReferenceProduct:
Code: Set ProdToRename = SubProduct.Parent.Parent.ReferenceProduct.Products.Item(SubProduct.Name)
Ich hab den Code gerade nochmal getestet, und der Code für Components hat auch bei Products funktioniert?!?!
Mußt du halt mal austesten Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 15. Mai. 2007 07:22 <-- editieren / zitieren --> Unities abgeben:
guten morgen vielen vielen Dank :-) du hast mir sehr geholfen - 10 Punkte! Ich mache es jetzt für folgenden Code
Code: Set ProdToRename = SubProduct.Parent.Parent.ReferenceProduct.Products.Item(SubProduct.Name)
dieser funktioniert bei mir nicht Code: Set ProdToRename = SubProduct.Parent.Parent.ReferenceProduct.Parent.Product.Products.Item(SubProduct.Name)
mfg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |