Autor
|
Thema: Teilenummern mit Makro umbennen (5081 mal gelesen)
|
Holger Meyer Mitglied Maschinenbautechniker
Beiträge: 97 Registriert: 02.08.2001 CATIA V5 R12 SP10 MDT6PP Inventor 5.3 HiCAD 16
|
erstellt am: 30. Aug. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bräuchte ein Makro mit dem man die Teilenummern der Parts in einem Produkt automatisch umbenennen kann. Z. Bspl. "Symmetry of ..." in "Symmetrie von..". Hat vielleicht einer schon mal so was oder etwas ähnliches gemacht? Gruß Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CTenschert Mitglied Wissenschaftlicher Mitarbeiter
Beiträge: 67 Registriert: 04.09.2000
|
erstellt am: 07. Sep. 2005 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Habe mal ein Beispiel geschrieben. Dürfte ein Grundgerüst sein. ' *** Beispiel für Ersetzung des Teilenamen *** ' * von Carl Tenschert * ' * vom 07.09.2005 * ' * Win2K R12 SP5 * ' ********************************************* Sub CATMain() Dim myDocuments As Documents Dim mypartDocument As PartDocument Dim myProduct As Product Dim TeileName_Neu$, TeileName_Alt$ Dim myDocument As Document Set myDocuments = CATIA.Documents For Each myDocument In myDocuments If TypeOf myDocument Is PartDocument Then Set myProduct = myDocument.Product TeileName_Alt = myProduct.PartNumber TeileName_Neu = Replace(TeileName_Alt, "Symmetrie von", "Symmetry of") If TeileName_Alt <> TeileName_Neu Then myProduct.PartNumber = TeileName_Neu End If Next End Sub ' ****** Ende ******
Würd mich über eine vollständige Version des Programms freuen.
------------------ Mit freundlichem Gruß von Carl Tenschert [Diese Nachricht wurde von CTenschert am 07. Sep. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2018 bis V5-6R2022
|
erstellt am: 12. Apr. 2006 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo! Warum kann ich bei folgendem Code nicht den Exemplarnamen ändern? Dim myDocuments As Documents Dim mypartDocument As PartDocument Dim myProduct As Product Dim myDocument As Document Dim Teilename_neu As String Dim Exemplarname_neu As String Dim Teilename_alt As String Dim Exemplarname_alt As String Set myDocuments = CATIA.Documents For Each myDocument In myDocuments If TypeOf myDocument Is PartDocument Then Set myProduct = myDocument.Product Teilename_alt = myProduct.PartNumber Exemplarname_alt = myProduct.Name Teilename_neu = Replace(Teilename_alt, txtzuersetzenderString, txtzuschreibenderString) Exemplarname_neu = Replace(Exemplarname_alt, txtzuersetzenderString, txtzuschreibenderString) If Teilename_alt <> Teilename_neu Then myProduct.PartNumber = Teilename_neu If Exemplarname_alt <> Exemplarname_neu Then myProduct.Name = Exemplarname_neu End If Next Das Problem besteht meiner Meinung nach bei myProduct.Name = Exemplarname_neu Im Forum hab ich schon etwas mit GetItem() gelesen, allerdings komm ich damit nicht ganz klar... Vielen Dank schon mal im voraus! Martin! P.S. W2K SP4 mit R14 SP5 [Diese Nachricht wurde von martin2 am 12. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 13. Apr. 2006 05:49 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo martin2, die Infos zur Instance, also auch der InstanceName selbst sind nicht dem PartDocument zugeordnet, sondern dem übergeordneten Product. D.h. wenn du die CATIA.Documents countest kannst du die Intance nicht ändern. Du musst das Part über sein Parent aufrufen. Also Bsp.: Product1 I I_____Part1(Part1.1) I_____Part1(Part1.2) Catia.ActiveDocument.Product.Products.Item(1).Name = "Test" Dazu gibts schon jede Menge Beiträge hier im Forum. Die Such-Funktion verwenden. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 13. Apr. 2006 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo! Erst mal Danke für Deine Antwort! Leider komm ich aber nicht auf die Lösung des Problems. (Suchfunktion hab ich gestern schon ausgiebig benutzt.) Im Anhang hab ich mal mein bisheriges Makro, sowie ein Beispielprodukt abgespeichert. Mein Ziel ist es in den Namen und Exemplarnamen der Teile und Produkte einen einzugebenden String durch einen anderen zu ersetzen. Bislang funktioniert aber nur das Ändern des Namens. Beim Arbeiten mit Catia.ActiveDocument.Product.Products.Item(1).Name = "Test" schaffe ich es noch das erste Teil umzubenennen, bei zweiten kommt aber schon eine Fehlermeldung. Kann mir bitte dazu nochmal jemand unter die Arme greifen? Weiterhin bin ich mir auch nicht ganz sicher, ob man nicht eine Funktion programmieren sollte, die dann bei Unterprodukten rekursiv aufgerufen werden müsste. (Es handelt sich nur um ein Beispielprodukt - später soll das Makro für jede Art von Produkt funktionieren, d.h. in wieviele Ebenen das Produkt verschachtelt ist, ist variabel.) BIN FÜR JEDE HILFE DANKBAR!!! Gruß Martin!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2018 bis V5-6R2022
|
erstellt am: 13. Apr. 2006 14:05 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
|
Filippo Mitglied CAx-Systemverwalter
Beiträge: 168 Registriert: 09.11.2003
|
erstellt am: 13. Apr. 2006 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo martin2, die Fehlermeldung bekommst du weil man einen Namen nicht mehrmals verwenden kann. Du musst deine For-Schleife z.B. so ändern: For i = 1 To CATIA.ActiveDocument.Product.Products.Count MsgBox (CATIA.ActiveDocument.Product.Products.Item(i).Name) CATIA.ActiveDocument.Product.Products.Item(i).Name = "Test" + CStr(i) 'If TypeOf CATIA.ActiveDocument.Product.Products.Item(i) Is ProductDocument Then 'MsgBox ("als Produkt erkannt") 'End If Next Ciao Filippo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2018 bis V5-6R2022
|
erstellt am: 13. Apr. 2006 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo nochmal! Mittlerweile hab ich das Programm noch etwas umgestaltet. Das letzte Problem, daß ich noch hab ist nun der korrekte Aufruf der Rekursion in der Funktion. Kann mir Bitte hier nochmal jemand weiterhelfen? Danke! Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 18. Apr. 2006 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo! Da ich leider mit der ganzen Geschichte überhaupt nicht weiterkomme evtl. mal eine kleine Zwischenfrage: Wie kann man beim Durchlaufen der Produktstruktur mittels: For i = 1 To Produktname.Products.Count feststellen, ob es sich beim item (Produktname.products.item(i) ) um ein Produkt oder ein Part handelt? Leider funtioniert nämlich If TypeOf Produktname.Products.Item(i) Is ProductDocument Then bei mir nicht. Auch If TypeOf Produktname.Products.Item(i) Is Product Then bringt nicht den erhofften Erfolg. Bin für jede Hilfe dankbar. MfG Martin!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 18. Apr. 2006 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
|
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 18. Apr. 2006 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo tomtom1972, erst mal Vielen Dank für Deine Antwort! Leider schaffe ich es jedoch immer noch nicht mit folgender Anweisung zu erkennen, ob es sich um ein Produkt oder ein Part (im Gesamtprodukt) handelt... Set oProducts = CATIA.ActiveDocument.Product.Products For n = 1 To oProducts.Count MsgBox (n & " " & TypeName(oProducts.Item(n))) Next Es erscheint stets "Product" - somit habe ich kein Unterscheidungsmerkmal... Deine Meinung / Hilfe? Danke Martin!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 18. Apr. 2006 17:08 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo, das ist klar, da du den TypeName der Instance ausliest, und die ist stehts ein Product, egal ob es sich um ein CATPart oder ein CATProduct handelt. Du suchst nach dem TypeName des zur jeweiligen Instance gehöhrenden Documents. Also so: TypeName(oProducts.Item(n).ReferenceProduct.Parent) Hast du Zugriff auf VB oder VBA? Zieh' mal das Catia.ActiveDocument ins WatchWindow und schau dir die ObjectStruktur an. Dann wirds klar. Beispiel siehe Anhang. Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 19. Apr. 2006 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo nochmal! Das Problem zu Unterscheiden, wann es sich um ein Unterprodukt handelt, und wann nicht konnte ich nun lösen - Vielen Dank dafür tomtom1972 Allerdings verstehe ich nicht, warum ich nicht meine Exemplarnamen in Unterprodukten ändern kann. (siehe kompletter Anhang) Meiner Meinung nach sollte die Rekursion korrekt aufgerufen werden. Das Makro erkennt zwar noch, daß es die Namen ersetzen soll, kann aber keine korrekte Zuweisung machen??? Wer weiß Rat? Gruß Martin! System: W2KSP4 mit R14SP5 P.S. @tomtom1972: geile Auflösung
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Filippo Mitglied CAx-Systemverwalter
Beiträge: 168 Registriert: 09.11.2003
|
erstellt am: 19. Apr. 2006 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
|
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2018 bis V5-6R2022
|
erstellt am: 19. Apr. 2006 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
|
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27
|
erstellt am: 19. Apr. 2006 14:01 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
|
Loody Mitglied Student
Beiträge: 4 Registriert: 17.04.2008
|
erstellt am: 03. Jun. 2008 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo Martin und Filippo, Vielen Dank für eure tollen Beiträge zum Umbennennungsmakro. Ich habe versucht, eure gezippten VBA-Makros auszulesen, finde allerdings selbst im Visual Basic Editor von CATIA leider hauptsächlich kryptische Zeichen vor. Kann mir einer von euch sagen, was ich falsch mache oder mir eventuell eine Version schicken, die man auch als CATScript oder als CATVBS abspeichern kann? Vielen Dank schon einmal im Voraus Ludwig Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projekt Manager (m/w/d) Messeprojekte | Die E3 World vereint das Beste aus zwei Welten und ist der führende Dienstleister im Bereich Live Marketing, Messe und Events. Professionelle Consultingleistung für neue hybride Veranstaltungskonzepte mit digitalem Content sind genauso Teil unserer DNA, wie das klassische Markenerlebnis. Mit starken Tochterunternehmen bieten wir unseren Kunden sowohl lokale als auch globale Kreativleistungen in Bezug auf Kommunikation, Digitalisierung und Realisierung ihrer Marketingherausforderungen.... | Anzeige ansehen | Projektmanagement |
|
martin2 Mitglied Konstrukteur
Beiträge: 941 Registriert: 05.2002.27 Windows 11 / 64bit CATIA V5-6R2018 bis V5-6R2022
|
erstellt am: 16. Aug. 2008 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Holger Meyer
Hallo! Hab's grad durch Zufall erst wieder mal gelesen... Also: Unter CATIA - Tools - Makro - Makros Dann Makrobibliotheken - VBA-Projekte bei Bibliothekstyp auswählen - vorhandene Bibliothek hinzufügen Dann das downgeloadete Makro auswählen - Schließen - Bearbeiten Und schon siehst Du den Quellcode. Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |