Autor
|
Thema: script beenden (1025 mal gelesen)
|
snow Mitglied Ingenieur
Beiträge: 20 Registriert: 18.02.2008 CATIA V5 R28
|
erstellt am: 06. Mai. 2010 18:23 <-- editieren / zitieren --> Unities abgeben:
hallo cad-gemeinde ich habe ein relativ aufwändiges CATScript mit zahlreichen unterroutinen und funktionen. taucht irgendwo ein fehler auf, so soll er zu einer unterroutine "springen", die eine einheitliche fehlermeldung ausgibt und das makro beendet. sicherlich ein leichtes problem, aber weder Wscript.Quit noch der verpönte GoTo-befehl funktionieren. Exit Sub und Exit Function beenden nur die jeweilige routine/funktion. CATIA.Quit ist mir als lösung etwas zu ruppig würde mich über einen tipp oder gar eine lösung freuen, snow 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: 06. Mai. 2010 18:58 <-- editieren / zitieren --> Unities abgeben: Nur für snow
Servus Schau mal hier eine kleine Einführung in die Fehlerbehandlung. IMHO ist es der sauberste Weg, die Fehlerrückgabe einer Unterroutine wieder bis in die CATMain weiter zu geben und dort zentral die Fehlerauswertung und Fehlerausgabe zu erledigen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
snow Mitglied Ingenieur
Beiträge: 20 Registriert: 18.02.2008 CATIA V5 R28
|
erstellt am: 06. Mai. 2010 22:19 <-- editieren / zitieren --> Unities abgeben:
danke für den link, eine ganze reihe interessanter und wichtiger punkte mhhh alles zurückzugeben ist nat. nicht sinn der sache. gibt es eine möglichkeit einen fehler zu erzwingen, so dass das makro (vlt sogar ohne fehlermeldung) abgebrochen wird? dann könnte ich in meiner subroutine zur ausgabe des fehlers diesen gewollten fehler anhängen und das makro beenden lassen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. 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: 07. Mai. 2010 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für snow
Hallo Snow, du kannst doch ganz am Anfang des CATSCripts ein "On Error Resume next" Statement schreiben. Nach den Funktionen musst du dir halt dann mit einem If Err.Number <> 0 weiterhelfen. Ist die Fehlernummer nicht 0 dann springst du in eine Funktion, gibst deine MsgBox aus und beendest noch innerhalb deiner If Schleife die Sub CATMain (und somit das komplette Script). Ich habe hier mal ein kleines Beispiel angehängt in dem in einer Fehlerfunktion mit Hilfe der Methode Err.Raise ein Fehler ausgelöst wird. Das Err Objekt ist global. Somit kann ich in der CATMain Routine die Fehlernummer abfragen und dementsprechend reagieren. Das ist zwar auch nicht schön da du immer die If-Abfrage nach deinen Funktionen brauchst aber wenn du das Script sauber von oben nach unten aufbaust dann setzt du diese Zeile eben nur an strategischen Punkten Code:
Sub CATMain() '***Fehlerbehandlung einschalten On Error Resume next '***Funktion lösst Fehler aus Fehlerfunktion '***Abfrage ob die Funktion einen Fehler ausgelöst hat If Err.Number <> 0 then AppErr Exit Sub End If End Sub '***Testfunktion Private Function Fehlerfunktion()
Err.Raise 99, "Fehlerfunktion", "Testfehler" End Function '***Funktion zum ausgeben eines Fehlers Private Function AppErr()
MsgBox "Es ist ein Fehler aufgetretten:" + Chr(10) + Chr(10) + _ "Fehlernummer:" + chr(9) + CStr(Err.Number) + Chr(10) + _ "Fehlerquelle:" + chr(9) + CStr(Err.Source) + Chr(10) + _ "Beschreibung:" + chr(9) + CStr(Err.Description), vbCritical, "FEHLER" End Function
ANMERKUNG: Spricht etwas dagegen das ganze Projekt auf VBA zu realisieren? Dann hättest du wenigsten die Sprungmarken zur Verfügung. Am besten wäre natürlich das ganze Projekt auf VB.NET aufzusetzen. Erstens ist das die bessere Technologie und zweitens hast du hier du Möglichkeit der strukturierten Fehlerbehandlung mit Try...Catch ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischen Zeichner / Konstrukteur Anlagenplanung Walzwerk (m/w/d) | Wir sind ein smarter unabhängiger Mittelständler, der die Welt des Stahls besser macht. Wir sind die Pioniere der renommierten 3-Walzentechnologie in der internationalen Stahlbranche. Engineering bedeutet bei uns, über das Bestehende hinauszudenken. Seit mehr als sieben Jahrzehnten steht KOCKS rolled® steel für exzellente Güte. Die Kultur bei KOCKS ist weltoffen, kollegial & aufrichtig: ... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
snow Mitglied Ingenieur
Beiträge: 20 Registriert: 18.02.2008 CATIA V5 R28
|
erstellt am: 07. Mai. 2010 22:27 <-- editieren / zitieren --> Unities abgeben:
ja, so oder so ähnlich werd ich das wohl lösen müssen. problem an vba ist das es unter linux schwierigkeiten macht prinzipiell wäre es nat. die bessere methode, auch wenn ich gestehen muss noch nicht mit vba/vb.net gearbeitet zu haben da ich mich bisher um c++.net bemüht habe irgendwie wird das aber auch mal zeit mit vba vielen dank für die ausführliche erklärung Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |