Autor
|
Thema: CATIA friert ein während Makro läuft (1185 mal gelesen)
|
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 16. Jul. 2008 12:11 <-- editieren / zitieren --> Unities abgeben:
Hi, ich hab mir nen Makro gebastelt mit dem ich beliebige Elemente im Baum auf bequeme Art und Weise umbenennen kann. Das Makro hat bisher problemlos auf PC und Workstation funktioniert, sofern man keinen Exkurs mit CATIA ins Drawing gemacht hat. Angenommen ich habe eine Reihe von 3D Punkten in einem geometrischen Set. Durch ein anderes Makro erzeuge ich mir eine Messpunkttabelle auf dem Drawing was auch noch funktioniert. Die Messpunkttabelle auf dem Drawing und die 3D Punkte im geometrischen Set haben keinerlei verbindungen was die aktualisierung angeht, denn wenn ich auf einen Messpunkt klicke und über die Eigenschaften den namen ändere kann ich das. Setze ich nun aber das makro zum umbenennen an dann frieren mir PC und Workstation immer ein. Wenn ich aber jetzt vor dem Umbenenne alles abspeichere und das Part/Produkt in dem die 3D Punkte sind wieder neu lade kann ich mit meinem Makro alles wie gewohnt umbenennen. Ist da im 3D noch irgendwo ne Variable die mein Makro zum Fall bringt? Grüße Tiberius 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: 16. Jul. 2008 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Servus Wird durch dein makro nur das aktuelle Dokument bearbeitet, oder werden alle offenen Dokumente (somit auch deine Zeichung) abgearbeitet? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 16. Jul. 2008 12:43 <-- editieren / zitieren --> Unities abgeben:
|
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002 SWX 2013 SP2 (unter anderen) Windows 7 Prof. 64 Bit Intel Xeon E5-2643 NVIDIA Quadro 4000 32 GB Ram
|
erstellt am: 16. Jul. 2008 13:15 <-- editieren / zitieren --> Unities abgeben:
Ich glaub ich hab nen Ansatzpunkt gefundnen. Kurz bevor er mir einfriert benennt er nicht die 3D Punkte um sondern fängt mit dem geometrischen Set an. Dieses bezeichnet er noch richtig, aber da es ab da nicht mehr passt schmiert er sang und klanglos ab. Das geometrische Set das umbenannt wird vor dem Absturz, wurde für die Selektion im vorhergehenden Makro benutzt. Es wäre doch dann sicher einen Versuch wert das Makro das zuvor gelaufen ist zum Schluss mit dem befehl zu versehen, dass alle Selektionen aufgehoben werden. Gibts sowas wie ein generelles Selection.clear das ich ganz an das Ende des Makros setze? Grüße Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Jul. 2008 13:27 <-- editieren / zitieren -->
Hallo Tiberius, in der V5Automation.chm zu finden. Clears the selection. Example: This example clears the selection. The selection is then empty. CATIA.ActiveDocument.Selection.Clear() Gruß Martin
------------------ mb |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 16. Jul. 2008 14:17 <-- editieren / zitieren --> Unities abgeben:
Danke Martin für die schnelle Antwort aber so richtig weiter gekommen bin ich damit leider nicht. Ich hab die Zeile einfach noch in die CATMain() ganz zu schluss gepackt. Leider ohne Erfolg. Nachdem er mir immer anfängt das darüber liegende geometrische Set umzubenennen anstatt die Punkte hab ich einfach mit Selection.count die markierten Elemente gezählt. Leider stimmen die genau mit der von mir selektierten Punktanzahl überein. Hab dann auch nochmal versucht noch ein zusätzliches geometrisches Set (welches leer ist) vor das besagte zu legen und in bearbeitung zu schalten. Hatte evtl. gedacht er schnappt sich das erst beste Set und fängt dort an. Aber meine Vermutung, dass es das geometrische Set aus der Auswahl vom vorhergehenden Makro nimmt hat sich bewahrheitet........ Wenn von Euch noch einer ne Idee hat bin ich dankbar dafür. Grüße Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 17. Jul. 2008 00:20 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo Tiberius, wenn ich das Ganze richtig verstehe, ist der Befehl "Selection.Clear" schon der richtige Ansatz. Hier aus dem Forum geht hervor, das es nur eine Selektion gibt. Daher muss ich nach Operationen, die eine Selektion "hinterlassen", bei der nächsten Selektion diese erst "leeren", bevor ich weiterarbeite. Das ist Punkt Eins. Punkt Zwei ist aus meiner Erfahrung genauso wichtig: Die Laufzeit! Ich habe es schon oft erlebt, dass in Skripten die Fortsetzung der Abarbeitung VOR der Ankunft des vorherigen Ergebnisse erfolgt. Vielleicht liegt hier Dein Problem. Ich sehe erst einmal zwei Lösungsversuche: 1.) Im vorherigen Makro die Selektion so früh wie möglich löschen. 2.) Im aktuellen Makro die Selektion so früh wie möglich "deklarieren" und "löschen", weit bevor Du die Selektion nutzt. 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 |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 17. Jul. 2008 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo, ich gebe Lusilnie recht. Manchmal bearbeitet ein Script schon eine Sache bevor die andere zu 100% abgearbeitet ist (das sollte zwar nicht so sein aber das ist ein anderes Thema). Es ist daher immer sinnvoll beim deklarieren der Selektion diese gleich zu leeren. Das sieht dann folgendermaßen aus: Code: ' oSel as Selektion deklarieren Dim oSel as Selection' oSel dem aktiven Dokument zuweisen Set oSel = CATIA.ActiveDocument.Selection 'Hier wird die Selektion geleert obwohl ihr noch nie ein Wert zugewiesen wurde. Aber falls aus irgendeinem 'Grund (anderes Makro, etc.) noch was in der Selektion steht wird diese gelöscht! oSel.Clear
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 17. Jul. 2008 11:32 <-- editieren / zitieren --> Unities abgeben:
|