Autor
|
Thema: Überprüfungsmakro (1830 mal gelesen)
|
donbastiano Mitglied
Beiträge: 19 Registriert: 17.01.2011 Intel Core 2 Duo 3.00 Ghz 3 GB Arbeitsspeicher Windows XP Professional SP3 Catia V5 R18
|
erstellt am: 09. Mrz. 2011 10:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, Ich habe folgendes Problem: Ich möchte über ein Makro abfragen, ob ein User defined Feature in meinem Part vorhanden ist. Code ist folgender: Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim Bodies1 As Bodies Set Bodies1 = part1.Bodies Dim Paläm As AnyObject Set Paläm = part1.Bodies.GetItem("Paläm") If Err.Number <> 0 Then MsgBox ("Test funktioniert") Err.Clear End If End Sub Mein Problem ist, dass das Makro nur einmal Funktioniert, nachdem ich Catia neu gestartet habe. Wo liegt mein Fehler? mfg, donbastiano ------------------ bau den sofa grade Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 11. Mrz. 2011 00:10 <-- editieren / zitieren --> Unities abgeben: Nur für donbastiano
Hallo donbastiano, vielleicht solltest Du mal die Grundregeln (aus MEINER Sicht!) beherzigen und "Sonderzeichen" ("ä") in Variablennamen außen vor lassen. In Deiner Version läuft der Code bei mir in einem R19 als "CATScript" überhaupt nicht. Bei Umbenennung von "Paläm" in "Palaem" kann ich überhaupt keine Probleme mehr erkennen, d.h. Deine Aussage nicht mehr bestätigen. 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 |
donbastiano Mitglied
Beiträge: 19 Registriert: 17.01.2011 Intel Core 2 Duo 3.00 Ghz 3 GB Arbeitsspeicher Windows XP Professional SP3 Catia V5 R18
|
erstellt am: 11. Mrz. 2011 10:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, danke schon mal für die Hilfe.... an sowas hab ich schon gar nicht mehr gedacht ^^. Jetzt arbeitet das Programm auf jeden Falls schonmal... nur tut es nicht das, was es soll. Ich dachte nämlich, dass wenn ich den Parameter palaem mit dem GetItem("UDF") belege und dieser "UDF" nicht im part vorhanden ist, sich die Fehlerzahl erhöht und das tut Sie aber nicht. also kommt immer nur die Nachricht, die ich ausgeben lasse, wenn kein Fehler auftritt, also der nach dem else. Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim Bodies1 As Bodies Set Bodies1 = part1.Bodies Dim Palaem1 As AnyObject Set Palaem1 = part1.Bodies.GetItem("UDF_Scheibe.1") If Err.Number <> 0 Then MsgBox ("Test funktioniert") Err.Clear Else MsgBox ("Palaem vorhanden") End If On Error GoTo 0 End Sub ------------------ bau den sofa grade 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: 11. Mrz. 2011 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für donbastiano
Servus Verwende einfach bodies.item statt bodies.getitem. Code: Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim Bodies1 As Bodies Set Bodies1 = part1.Bodies on error resume next Dim Palaem1 As Body Set Palaem1 = part1.Bodies.Item("UDF_Scheibe.1") If err.Number <> 0 Then MsgBox ("Test funktioniert") Else MsgBox ("Palaem vorhanden") End If on error goto 0 End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
donbastiano Mitglied
Beiträge: 19 Registriert: 17.01.2011 Intel Core 2 Duo 3.00 Ghz 3 GB Arbeitsspeicher Windows XP Professional SP3 Catia V5 R18
|
erstellt am: 11. Mrz. 2011 11:57 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 11. Mrz. 2011 12:01 <-- editieren / zitieren --> Unities abgeben: Nur für donbastiano
Servus Was für ein Objekt willst du erkennen? Ein Body? Ein UDF im Quellpart? (ggf hilft ein Bild) Hast du "on error resume next" gesetzt? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
donbastiano Mitglied
Beiträge: 19 Registriert: 17.01.2011 Intel Core 2 Duo 3.00 Ghz 3 GB Arbeitsspeicher Windows XP Professional SP3 Catia V5 R18
|
erstellt am: 11. Mrz. 2011 12:05 <-- editieren / zitieren --> Unities abgeben:
Also: Ich füge über ein Makro ein UDF in ein neues Part ein. Dieses wird als erstes Objekt in den Hauptkörper eingesetzt. Und in diesem neuen Part soll mit dem angegebenen Makro überprüft werden, ob das UDF bereits vorhanden ist, oder nicht. Ich hoffe, dass ich das verständlich erklärt hab ^^. .... Ha... Moment..... ich glaube ich habe das On error resume next an der falschen Stelle eingefügt. Ich denke es läuft jetzt wie es soll. Ich werd das nochmal überprüfen. Danke aber schonmal für die Hilfe. @Bernd: Du scheinst dich ja wirklich gut auszukennen mit Makroprogrammierung. Vielleicht könntest du auch mal in meinen anderen Thread schauen (Komponenten verschwinden beim Speichervorgang). Da liegt nämlich das gravierendste Problem mit meinem Programm. So... neuer Nachtrag: Jetzt springt er zwar in die if-Anweisung, wenn ich aber mein UDF eingebaut habe, sollte er eigentlich ja in die else-Anweisung springen, was das Makro leider noch nicht tut lg, donbastiano ------------------ bau den sofa grade [Diese Nachricht wurde von donbastiano am 11. Mrz. 2011 editiert.] [Diese Nachricht wurde von donbastiano am 11. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
em Michael Kirsch Mitglied Teamleiter KBE Methoden & Tools
Beiträge: 222 Registriert: 21.10.2002 CATIA V5 R16 CATIA V5 R18 CATIA V5 R19 NX 5 NX 6 NX 7.5
|
erstellt am: 29. Mrz. 2011 22:10 <-- editieren / zitieren --> Unities abgeben: Nur für donbastiano
Hallo donbastiano, was, wenn jemand das UDF anderswo eingebaut hat. Mit der Suche findest Du UDFs überall: Sub CATMain() Dim i As Long Dim strMessage As String Dim oSelection As Selection Set oSelection = CATIA.ActiveDocument oSelection.Clear oSelection.Search "'Generative Shape Design'.Userfeature;all" strMessage = oSelection.Count & " Elements found:" If oSelection.Count > 0 Then For i = 1 To oSelection.Count strMessage = strMessage & Chr(10) & Chr(13) & oSelection.Item(i).Value.Name Next End If MsgBox strMessage End Sub Grüße, Michael Kirsch ------------------ CATIA, sonst NX ;-)
www.em.ag
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |