Autor
|
Thema: Sub vorzeitig beenden (1099 mal gelesen)
|
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: 27. Jan. 2009 15:19 <-- editieren / zitieren --> Unities abgeben:
Hi, nachdem die Suchfunktion nichts passendes ausgeworfen hat scheib ich nun doch mal. Angenommen ich hab ne Sub CATMAin() und weitere Subs. Wenn mein Makro sich gerade in einer der anderen Subs (nicht in den CATMain) befindet klappt das beenden irgendwie nicht so recht. Exit, End auch in Kombination mit Sub gehen nicht. Entweder es passiert garnichts oder es kommt ne Fehlermeldung. Wie beende ich ein Makro wenn es sich in einer Sub xxx() grad befindet? Als Notlösung hatte ich ne globale Variable mit dem Wert 1 belegt und dann in der CATMain den Wert abgefragt und dann das "Exit Sub" gesetzt - das funktionierte. Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 27. Jan. 2009 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Ich glaube das Exit Sub funktioniert nur in catvba / VB und nicht in CATScript, bin mir aber unsicher. Anonsten ist es aber Exit Sub. Wenn es sich um eine Function handelt dann analog End Function und End For... ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 27. Jan. 2009 21:43 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo allerseits, @Tiberius: Aus meiner Erfahrung funktioniert das auch nur mit einer Übergabe-Variable. "Exit Sub" beendet eben nur die aktuelle Sub, nicht aber das gesamte Makro. Du landest also in der Abarbeitung des Scriptes wieder hinter dem Aufruf der Sub, die Du mit "Exit Sub" beendet hast! @HoBLila: "Exit ..." funktioniert nach meiner Erfahrung sowohl mit catvba als auch mit CATScript und auch noch bei beiden gleich: Es wird nur die aktuelle "Auswahl" beendet, nicht das gesamte Script (s.o.)! 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 |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 28. Jan. 2009 07:31 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo, wenn du Funktionen anstelle von Subs aufrufst, kannst du den Wert der Funktion am Ende zuweisen (wenn diese also komplett abgearbeitet wurde) und dann in der MAIN abfragen. Z.B. ein Boolean, also so: Sub CATMain() Set oRoot = CATIA.ActiveDocument If Not bRootIsProd(oRoot) Then MsgBox "Das Root ist kein .CATProduct", 16, "Abbruch" Exit Sub End If '--- sonst was MsgBox "Fertig. ", 64, "Info" End Sub Function bRootIsProd(oRoot) As Boolean If TypeName(oRoot) <> "ProductDocument" Then Exit Function '<--- CATPart geöffnet = Exit Function = End Script End If Set oProd = oRoot.Product Set oProds = oProd.Products '--- sonst was bRootIsProd = True '<--- wird diese Zeile nicht abgearbeitet (wegen Exit Function) ist der Wert der Function = False End Function Gruß TomTom
------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 28. Jan. 2009 08:03 <-- editieren / zitieren --> Unities abgeben:
|