Autor
|
Thema: Fehlermeldung bei Skriptausführung (515 mal gelesen)
|
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 31. Jan. 2007 13:01 <-- editieren / zitieren --> Unities abgeben:
Hallo da draussen, habe ein Makro zugespielt bekommen, welches den "Exemplarnamen" durch die "Teilenummer" ersetzt. Das Makro läuft auch meistens fehlerfrei durch. Leider nicht immer. Im angehängten Bild ist die Fehlermeldung. Zeile 23 bis 25 sind Set ProductObject = ProductParentProds.Item(ListeProduct.Item(A).Value.Name) ProductObject.Name = ProductObject.PartNumber & "." & a Next Leider hab ich von Makroprogrammierung keine Ahnung und so bitte Euch mir zu helfen. Vielen Dank. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 31. Jan. 2007 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 31. Jan. 2007 18:41 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 01. Feb. 2007 11:13 <-- editieren / zitieren --> Unities abgeben:
Also, hier das ganze Script Fehler tritt nur bedingt auf. Konnte aber leider die Fehlerursache nicht eingrenzen. Hatte erst an nicht lesbare Zeichen in der Namesdeklarierung gedacht. Aber ich glaub das ist es nicht. Mehr Infos kann ich leider nicht zur Verfügung stellen. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 01. Feb. 2007 11:15 <-- editieren / zitieren --> Unities abgeben:
Upps, da fehlte wohl was: Sub CATMain() Set ListeProduct = CATIA.ActiveDocument.Selection ' Suche nach Instanzen vom jeweiligen CATPart im gesamten Dokument ListeProduct.Clear ListeProduct.Search "CATAsmSearch.Part,all" 'Ausgabe der Meldung, wieviele Produkte gefunden wurden Dim BoxProduct BoxProduct = MsgBox("Anzahl der gefundenen Instanzen:" & ListeProduct.count & "", 64) Dim ProductDoc Dim ProductParent Dim ProductParentProds Dim ProductObject Dim A Dim i As Integer For A = 1 To ListeProduct.count Set ProductDoc = ListeProduct.Item(A).Value.Parent.Parent.ReferenceProduct.Parent Set ProductParent = ProductDoc.Product Set ProductParentProds = ProductParent.Products Set ProductObject = ProductParentProds.Item(ListeProduct.Item(A).Value.Name) ProductObject.Name = ProductObject.PartNumber & "." & a Next BoxProduct = MsgBox("Instanzen der CATParts wurden umbenannt", 64) End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 01. Feb. 2007 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 01. Feb. 2007 13:55 <-- editieren / zitieren --> Unities abgeben:
|
KlausJ Mitglied
Beiträge: 1336 Registriert: 17.03.2003 CATIA V4.2.4 Ref 2 CATIA V5R16SP7 AIX 5.3 Windows 2000 und XP
|
erstellt am: 01. Feb. 2007 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
Hallo, A ist doch eine Zahl. Mußt Du da nicht eine Konvertierung zu String machen ? Also : ProductObject.Name = ProductObject.PartNumber & "." & STR(A) ------------------ Nichts ändern ist langweilig !! Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 01. Feb. 2007 20:36 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
Hallo Eisbär, das Problem wird sicher sein, das der Instancen-Name, den das Script vergeben will, z.B. "Teil.4", schon existiert und er deshalb nicht mehr vergeben werden kann. Abhilfe würde hier schaffen, die Instancen-Namen in einem ersten Durchlauf mit einer normal nicht verwendeten Erweiterung, z.B. "Teil.istnunneu_4", zu versehen und diese dann in einem zweiten Durchlauf auf das gewünschte Ergebnis, also "Teil.4", zu ändern. 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 |
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 02. Feb. 2007 08:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus und Lusilnie, @Klaus kannst Du bitte etwas genauer ausführen was Du meinst. Ich kann Dir nicht ganz folgen. Liegt wahrscheinlich an meinen mangelden Makrokenntnissen. @Lusilnie ich probier mal den von Dir erklärten Fehler zu replizieren. Vielleicht ist es das ja. Aber arbeitet das Script den Strukturbaum nicht hierarchisch ab. Frage nur weil das Script die Exemplarnamen durchlaufend weiternummeriert. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 02. Feb. 2007 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 02. Feb. 2007 10:46 <-- editieren / zitieren --> Unities abgeben:
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001
|
erstellt am: 02. Feb. 2007 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 02. Feb. 2007 12:32 <-- editieren / zitieren --> Unities abgeben:
|
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 02. Feb. 2007 12:46 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
Moin alle zusammen, wenn du den Integer in einen String umwandeln willst ist Str(Ausdruck) schon das richtige. Als Alternative kannst du noch Cstr(Ausdruck) verwenden. z.B Str(a) -> geht bei dir anscheinen ja nicht oder Cstr(A) Gruß Proofin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 02. Feb. 2007 13:05 <-- editieren / zitieren --> Unities abgeben:
|
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 02. Feb. 2007 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 04. Feb. 2007 23:59 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
Hallo Eisbär, probier doch mal diesen Code, vielleicht löst der Dein Problem: Code: Sub CATMain() Set ListeProduct = CATIA.ActiveDocument.Selection ' Suche nach Instanzen vom jeweiligen CATPart im gesamten Dokument ListeProduct.Clear ListeProduct.Search "CATAsmSearch.Part,all" 'Ausgabe der Meldung, wieviele Produkte gefunden wurden Dim BoxProduct BoxProduct = MsgBox("Anzahl der gefundenen Instanzen:" & ListeProduct.count & "", 64) Dim ProductDoc Dim ProductParent Dim ProductParentProds Dim ProductObject Dim A Dim i As Integer For A = 1 To ListeProduct.count Set ProductDoc = ListeProduct.Item(A).Value.Parent.Parent.ReferenceProduct.Parent Set ProductParent = ProductDoc.Product Set ProductParentProds = ProductParent.Products Set ProductObject = ProductParentProds.Item(ListeProduct.Item(A).Value.Name) ProductObject.Name = ProductObject.PartNumber & ".istnunneu_" & a Next For A = 1 To ListeProduct.count Set ProductDoc = ListeProduct.Item(A).Value.Parent.Parent.ReferenceProduct.Parent Set ProductParent = ProductDoc.Product Set ProductParentProds = ProductParent.Products Set ProductObject = ProductParentProds.Item(ListeProduct.Item(A).Value.Name) ProductObject.Name = ProductObject.PartNumber & "." & a Next BoxProduct = MsgBox("Instanzen der CATParts wurden umbenannt", 64) End Sub
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 |
Eisbär Mitglied Konstrukteur
Beiträge: 259 Registriert: 15.10.2002 V5R14SP9 V5R16SP6 WIN XP64-Bit 3,4GHz IntelPentium 8GB Memory
|
erstellt am: 05. Feb. 2007 08:11 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 05. Feb. 2007 20:24 <-- editieren / zitieren --> Unities abgeben: Nur für Eisbär
Hallo Eisbär, wenn es nun funktioniert, lag es genau an dem Problem, welches ich beschrieben habe: Der "neue" Instancen-Name wurde schon verwendet! Ich habe das Gesagte nur in Dein Script implementiert. 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 |