| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | Schnell, effizient und günstig: Mit der Kisters 3DViewStation 3D Arbeits- und Reparaturanleitungen einfach erstellen und pflegen, eine Pressemitteilung
|
Autor
|
Thema: Fehlermeldung unterdrücken (3862 mal gelesen)
|
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 21. Nov. 2011 09:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo cad.de erstmal großes Lob an euer Forum, find ich Klasse, nutze ich gerade täglich! Diesmal hab ich aber trotz stundenlanger Suche weder eine Alternative zu on error, noch sonst eine Lösung für mein Problem gefunden. Beim isolieren meiner Links verwende ich CATIA.StartCommand "Isolate_VBA", das ich vorher in Catia konfiguriert habe. Beim Ausführen auf einem anderen Rechner fehlt die Konfiguration und mein Macro zeigt hunderte Male die Fehlermeldung "Unknown command: Isolate_VBA" an. Um diese Fehlermeldung zu unterdrücken lasse ich den befehl am anfang testen und hab wie immer diesen code verwendet, der allerdings diesmal nicht funktioniert: on error resume next CATIA.StartCommand "Isolate_VBA" if err.number <> 0 then msgbox end end if on error goto 0 meine Einzige Lösung wäre den user mit einer MsgBox zu fragen ob gerade eine Fehlermeldung aufgetaucht ist um dann das Programm zu unterbrechen aber ich hätte auch nichts gegen eine etwas elegantere Lösung. Weis da jemand was? Danke schonmal für eure Ideen, Doni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 21. Nov. 2011 09:39 <-- editieren / zitieren --> Unities abgeben:         
Als Alternative hab ich gerade den Tipp eines Kollegen bekommen, das Konfiguriern des Befehls einzubauen. Damit wär mein Problem ja auch gelöst. Das wäre: Catia > View > Toolbars > customize > Commands > Categorie: All Commands > Isolate (das ohne Description: Removes the associativity with the point) > Show Properties > User Alias: "Isolate_VBA" Wüsste aber auch nicht wie man das programmieren könnte... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager

 Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 21. Nov. 2011 14:22 <-- editieren / zitieren --> Unities abgeben:          Nur für doni211
Hallo Doni und herzlich willkommen im Forum, also hier könnte es mehrere Möglichkeiten geben. Ich kenne das Makro leider nicht, daher kann ich nur wild stochern, aber vll. sind da Gedankenansätz dabei, die dich weiterbringen. 1.) Ich würde, wie schon oft geschrieben, aktuell nurnoch in .Net (VB/C) programmieren, da man sehr viel flexibler ist und z.B. mit Try-Catch eine sehr mächtige Fehlerkorrektur/-abfrage nutzen kann. 2.) Wenn du doch ein Element isolierst/isolieren möchtest, dann frage doch nach dem Isolieren ab, ob der vorher vorhandene Link noch vorhanden ist, und wenn ja, dann breche das Programm mit einer Fehlermeldung ab. 3.) Du kannst z.B. mit der FindWindow-API prüfen, ob eine Fehlermeldung offen ist und diese ggf. auch auslesen. Daher kannst du auch gezielt das Fenster abfragen und ggf. dann eben aussteigen. So wie du das Programm beschrieben hast, fehlt da so oder so noch einiges bzw. scheint es sehr unsauber zu sein. Normalerweise würde man immer prüfen, ob Abhängigkeiten gegeben sind. So aber genug davon  HTH BTW So wie dir das Forum hilft, kannst bzw. solltest du natürlich auch dem Forum helfen, daher wäre es vll. nicht verkehrt gewissen Code, der erstens deinem Fehlerbild und zweitens vll. auch anderen zu einer Lösung beitragen kann, zu posten. Schließlich erbringt die Gemeinschaft dieses Wissen und nur nehmen hat noch nie funktioniert. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 21. Nov. 2011 15:33 <-- editieren / zitieren --> Unities abgeben:         
Danke für die schnelle Antwort! Tipp 1 klingt gut, hab ich leider noch nie gelesen. Tipp 2 ist bereits im code enthalten. Tipp 3 werd ich morgen mal ausprobieren, falls ich das hinbekomme. Beim letzten Absatz stimm ich dir natürlich zu, aber der code ist mitlerweile viele Seiten lang. Habe aber schon vor, mich im Forum mit zu beteiligen. Zugegeben besonders sauber ist es nicht, aber ich bin schon glücklich wenn es funktioniert. Bin ja kein Informatiker ^^ Dieser Teil des Macros soll alle Links isolieren. Ich finde mit CAIEngine raus, wieviele Links da sind Zitat: Dim oStiEngine As StiEngine Set oStiEngine = CATIA.GetItem("CAIEngine") Dim oStiDBItem As StiDBItem Set oStiDBItem = oStiEngine.GetStiDBItemFromAnyObject(partDocument1) Dim oDocument As Document Set oDocument = oStiDBItem.GetDocument 'MsgBox oDocument.Name Dim oStiDBChildren As StiDBChildren Set oStiDBChildren = oStiDBItem.GetChildren()
gehe dann mit einer recursiv-schleife durch sämtliche Elemente eines Parts, isoliere sie nacheinander, prüfe ob die Links weniger geworden sind. Wenn nicht benutze ich catia.startcommand "undo". Bis ich damit durch ein komplettes Product bin kanns schonmal ne stunde dauern.. aber dauert immer noch ein vielfaches kürzer als das manuell zu machen. ;) Das liegt wahrscheinlich an der unsauberen Programmierung und an meinem wahnsinnig schnellen PC. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 25. Nov. 2011 10:03 <-- editieren / zitieren --> Unities abgeben:         
Zitat:
3.) Du kannst z.B. mit der FindWindow-API prüfen, ob eine Fehlermeldung offen ist und diese ggf. auch auslesen. Daher kannst du auch gezielt das Fenster abfragen und ggf. dann eben aussteigen.
hat leider nicht funktioniert. wenn die fehlermeldung in Zeile X kommt, kommt er ja nicht weiter und kann die FindWindow-API in Zeile X+1 nicht ausführen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Nov. 2011 11:11 <-- editieren / zitieren --> Unities abgeben:          Nur für doni211
Servus Ich nehme an, dass du den Befehl "Isolate_VBA" selbst definiert hast. Warum verwendest du dafür nicht eine normale Function/Sub? Dann würde zumindest die Fehlermeldung nicht mehr erschienen? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 25. Nov. 2011 12:38 <-- editieren / zitieren --> Unities abgeben:         
|
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Nov. 2011 18:00 <-- editieren / zitieren --> Unities abgeben:          Nur für doni211
Servus AFAIK kann man den Befehl zum Isolieren (unabhängig von der Sprache) über: CATIA.StartCommand "Isolate"aufrufen. Falls es beim Ausführen von Isolate zu einem Fehler bei dir kommt, musst du wahrscheinlich dein Makro auslagern und von außen auf de Fehlermeldung reagieren (vergleiche auch hier) Gruß Bernd PS: Hier findest du noch eine Beschreibung zu den StartCommands ------------------ Warum einfach, wenn es auch kompliziert geht.
[Diese Nachricht wurde von bgrittmann am 25. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
doni211 Mitglied Raumfahrt-Ingenieur
 Beiträge: 7 Registriert: 21.11.2011 Windows XP, Catia V5,R18
|
erstellt am: 01. Dez. 2011 10:43 <-- editieren / zitieren --> Unities abgeben:         
hm ok, mit CATIA.StartCommand "Isolate" gibts leider bei manchen Links Probleme, deswegen spech ich mit Isolate_VBA gezielt ein bestimmtes Isolate an. auf die Fehlermeldung zu reagieren klingt gut, hab ich auch mit in meinen Code eingebaut, allerding habe ich da das selbe Problem wie mit dem einfachen on error: sobald die Fehlermeldung aufgeht macht das Programm nicht weiter, sondern wartet bis ich die Fehlermeldung geschlossen habe... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rfriedrich Mitglied

 Beiträge: 39 Registriert: 11.05.2005
|
erstellt am: 13. Feb. 2015 17:55 <-- editieren / zitieren --> Unities abgeben:          Nur für doni211
Hallo, ich muss diesen alten Thread nochmal rauskramen, da mir das Problem aktuell in R24 wieder aufgefallen ist, und ich bisher leider keine zufriedenstellende Lösung gefunden habe. Das eigentliche Problem ist hier, dass in der Liste unter View - Commands List... ZWEI Isolate-Befehle auftauchen. Beim ersten steht der Hilfetext "Removes the associativity with the point", beim zweiten steht gar nichts. Hat man eine Geometrie, z.B. Punkt/Linie/Plane selektiert und ruft im PowerInput c:Isolate oder per Makro CATIA.StartCommand "Isolate" auf, dann wird der erste Befehl aus der Liste ausgeführt, der leider nichts bewirkt. Geht man (interaktiv) in die Liste und wählt den zweiten Isolate-Befehl aus und startet diesen, wird wunderbar isoliert. Der Trick ist es nun, dem zweiten Isolate einen eindeutigen User-Alias zuzuweisen, den man per CATIA.StartCommand aufrufen kann. So weit, so gut. Das funktioniert zwar, aber nicht auf Anhieb auf jedem Rechner (Settings-Anpassung erforderlich - entweder durch den User oder zentral über die Reference-Settings). Das ist nicht schön. Kennt jemand hierfür einen Workaround? Danke und Gruß Roland
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |