Autor
|
Thema: Umbenennen oder DescriptionInst (1632 mal gelesen)
|
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 06. Aug. 2013 17:24 <-- editieren / zitieren --> Unities abgeben:
Hallo alle! Ich habe eine Frage, Who ist mein Fehler im dieser kode:
Code: Sub CATMain() 'Crear objeto, Documento. Dim tmpDoc As Product Set tmpDoc = CATIA.ActiveDocument 'Seleccionar todos los documentos abiertos. For Each tmpDoc In CATIA.Documents 'Modificar solo Parts y Products If InStr(1, tmpDoc.Name, ".CATProduct") > 0 Or InStr(1, tmpDoc.Name, ".CATPart") > 0 Then 'Editar propiedad Description Textdata = tmpDoc.Name Textdata = Left(tmpDoc.Name, 8) tmpDoc.DescriptionInst = Textdata End If Next tmpDoc.Product.Update End Sub
Ich will im alle CATPart und CATProduct von ein CATProduct Umbenennen oder füllen die DescriptionInst, aber ich habe die Fehler API und ich weiss nicht warum. Das ich will Benennen die letzten 7 Dateiname Zeichen Vielen Danke. Manuel 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: 07. Aug. 2013 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Manuel Welche Fehlermeldung kommt den? Mit der Schleife "For Each tmpDoc In CATIA.Documents" änderst du alle Dokument, also auch Baugruppen die du parallel geöffnet hast, also nicht nur die aktuell geöffnete, ist dir das bewusst? Willst du nun die Datei umbenennen, oder die "DescriptionInst" ändern? EDIT: Anbei ein überarbeiteter Code zum den DescriptionRef ausufüllen: Code: Sub CATMain() 'Crear objeto, Documento. Dim tmpDoc As Document Dim TextData 'Seleccionar todos los documentos abiertos. For Each tmpDoc In CATIA.Documents 'Modificar solo Parts y Products If InStr(1, tmpDoc.Name, ".CATProduct") > 0 Or InStr(1, tmpDoc.Name, ".CATPart") > 0 Then 'Editar propiedad Description TextData = tmpDoc.Name TextData = Left(TextData, InStrRev(TextData, ".") - 1) Set oProd = tmpDoc.Product oProd.DescriptionRef = TextData End If Next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 07. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 07. Aug. 2013 09:18 <-- editieren / zitieren --> Unities abgeben:
Gutt Morgen Bernd! Vielen Danke für deiner Schnell atwort, die API Fehler das ist der "ScriptERR_1002" Line 37, column 12, genau dieser code: Code: tmpDoc.DescriptionInst = Textdata
, ich habe deiner code probiert und das ist nicht die Antwort brauche ich, weil die Description ist für alle CATPart "Component>Description" und nicht im CATProduct "Product>Description" Dies ist ein Foto von meinem Bedürfnis
Viele CATPart leer sind und andere mit falschen Daten; und ich brauche alle richtig Ändern. Normal ein CATProduct mit zwei CATProduct max. und 50 CatPart max. Das Makro laufe ich von der Hauptstraße CATProduct immer. Vielen Danke Manuel 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: 07. Aug. 2013 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Die Eigenschaft "DescriptionInst" ist nur beim Exemplar (also innerhalb einer Baugruppe definiert). Du musst also, statt einer Schleife über alle geöffneten Dokumente, eine Schleife über alle Products einer Baugruppe benutzen. zB (ungetestet) Code: Sub CATMain()Dim RootProduct As Product Dim oProduct as product Set RootProduct = CATIA.ActiveDocument For each oProduct In RootProduct.Products 'zB hier die Teilenummer oProduct.DescriptionInst = oProduct.PartNumber Next End Sub
Gruß Bernd EDIT: Code korrigiert ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 07. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 07. Aug. 2013 11:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd! Dein code hat nochmal Fehler 1002, Code: For oProduct tmpDoc In RootProduct.Products
Fehler : Description Warten '=' Ich habe später geändert code:
Code: For oProduct = tmpDoc In RootProduct.Products
Und die Fehler kommt aber Fehler : Description Warten 'To'; usw, usw. und ich kann nicht damit es funktioniert. Bitte Hilfe V.D. Manuel
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: 07. Aug. 2013 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
|
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 07. Aug. 2013 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd! Ich habe mit dieser code
Code: Language="VBSCRIPT"Sub CATMain() Dim RootProduct As Product Dim oProduct as product Set RootProduct = CATIA.ActiveDocument For each oProduct In RootProduct.Products 'zB hier die Teilenummer oProduct.DescriptionInst = oProduct.PartNumber Next End Sub
probiert und funktioniert nicht, das Fehler sagt : Das object aceptiert nicht dieser metode:'RootProduct.Procuts' Line:10
Code: For each oProduct In RootProduct.Products
Ich habe die API zu lesen, aber ich finde es nicht funktioniert, und wo ist der Fehler. Sie wissen, wo er ist? V.D. Manuel
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: 07. Aug. 2013 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Vermutlich muss es heißen: Code: Set RootProduct = CATIA.ActiveDocument.Product
Was steht in der Doku dazu? Programmierst du im VBA-Editor, dann schau mal in das Watchfenster. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 07. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 07. Aug. 2013 12:15 <-- editieren / zitieren --> Unities abgeben:
|
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 07. Aug. 2013 12:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd! Ich habe jetzt im VBA editor probiert und das Fehler ist exact, Run-Time error '438' Object doesn't support this property or method code: Set RootProduct = CATIA.Product.ActiveDocument m.f.G. Actung!! Ich arbeitet mit Catia V5 R18 SP8, weil China(mein kunde) dieser version Arbeit. Manuel [Diese Nachricht wurde von xyon126 am 07. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Zeichner CAD (m/w/d) Voll- und Teilzeit | Umwelt verantwortlich gestalten ? unter diesem Leitmotiv bearbeiten wir bereits seit drei Jahrzehnten Tiefbau- und Umweltschutzprojekte für unsere Kunden. Wir als KuP sehen in unserer täglichen Arbeit das Prinzip bestätigt, dass ökonomischer Erfolg dauerhaft nur unter Beachtung ökologischer Aspekte und sozialer Bedürfnisse möglich ist. Mit nun über 80 Mitarbeiterinnen ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
ferdo Mitglied engineer
Beiträge: 34 Registriert: 15.04.2009 Windows 7, 64 CATIA v5r25 , 3DEXPERIENCE on cloud
|
erstellt am: 07. Aug. 2013 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo, Eine Variante für ersten posten ('Seleccionar todos los documentos abiertos.) Language = "VBSCRIPT" Sub CATMain ()
Set windowsopen = CATIA.Windows Msgbox (windowsopen.count) for i = 1 to windowsopen.count msgbox (Catia.windows.item(i).name) Catia.windows.item(i).Activate Dim mainDocument Set mainDocument = CATIA.ActiveDocument Dim oProduct Set oProduct = mainDocument.Product oProduct.DescriptionRef = oProduct.PartNumber NEXT End Sub ------------------ Best regards Fernando Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |