Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makroausführung testen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Makroausführung testen (1613 mal gelesen)
Helmut Steeg
Mitglied
Programmierer


Sehen Sie sich das Profil von Helmut Steeg an!   Senden Sie eine Private Message an Helmut Steeg  Schreiben Sie einen Gästebucheintrag für Helmut Steeg

Beiträge: 19
Registriert: 30.05.2007

Catia V5R16

erstellt am: 26. Sep. 2007 15:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

sodele, ich bins mal wieder 

Besteht eine Möglichkeit zu testen, ob im geöffneten Catia aktuell gerade ein Makro ausgeführt wird?

Ich habe das Problem, das ich ein Formular mit einer Liste von Skripten habe, die ich von dort aus starte. Wenn mir allerdings ein Benutzer wild drin rumklickt (oder in Anwender-deutsch sagt 'ich hab bloss probiert, wie das geht'), bleibt ab und zu das CATIA stehen.

Diese Stelle ist auch nicht wirklich das grosse Problem, da ich im Click-Ereignis der Listbox vor der Ausführung die Listbox deaktiviere und danach wieder einschalten kann. Wenn der Benutzer allerdings das Formular schliesst und danach wieder öffnet, weiss ich nicht, ob gerade ein Makro ausgeführt wird und der Benutzer kann daher unter Umständen ein Makro doppelt ausführen und Catia rennt mir wieder in die Ewigen Chipgründe.

Die Idee wäre jetzt, beim Öffnen des Formulars Catia zu checken, ob gerade ein Makro läuft und dann auf das Ende der Ausführung warten. Gefunden hab ich in der Hinsicht leider nichts.

Ausgeführt werden die Skripte via SystemService.ExecuteSkript()
Catia Version V5R16
OS: Windows
Sprache: VB/VBA oder C#, egal 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens Hansen
Mitglied
Senior Consult


Sehen Sie sich das Profil von Jens Hansen an!   Senden Sie eine Private Message an Jens Hansen  Schreiben Sie einen Gästebucheintrag für Jens Hansen

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 26. Sep. 2007 19:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Hallo,
im Grunde arbeitet V5 diesbezüglich wie ein Schachspiel: Es kann immer nunr einer einen Zug machen. Will sagen: Wenn V5 gerade ein Makro ausführt, kann der User nixhts anderes in V5 machen. Man kann in V5 keine parallelen Prozesse laufen lassen.
Die Gefahr besteht somit eher darin, dass bei mehrmaligen Betätigen des Makros auch das Makro mehrmals hintereinander ausgeführt wird. Daher wird sich v5 verbabschieden.
Hier hilft nur eine konsequente Fehlerroutine.

SG

Jens Hansen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut Steeg
Mitglied
Programmierer


Sehen Sie sich das Profil von Helmut Steeg an!   Senden Sie eine Private Message an Helmut Steeg  Schreiben Sie einen Gästebucheintrag für Helmut Steeg

Beiträge: 19
Registriert: 30.05.2007

Catia V5R16

erstellt am: 27. Sep. 2007 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, das mit der Doppelausführung ist klar. Das hab ich auch schon größtenteils verhindert (bis auf eben das Problem mit dem Formular schliessen und neu öffnen).

Das Problem ist eher, kann ich irgendwie feststellen, ob gerade ein Makro läuft? im SystemService-Objekt kann ich ja ein Skript/Prozess starten, aber ich seh nichts zum Checken ob gerade etwas ausgeführt wird.

Wenn das möglich wäre, wäre mein Problem gelöst und die Benutzer könnten wild rumklicken, wie sie gerade lustig sind und ich bin trotzdem noch sicher, das CATIA weiterhin funktioniert. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens Hansen
Mitglied
Senior Consult


Sehen Sie sich das Profil von Jens Hansen an!   Senden Sie eine Private Message an Jens Hansen  Schreiben Sie einen Gästebucheintrag für Jens Hansen

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 27. Sep. 2007 13:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Hm.. soweit aber mein Verständnis reicht, kann doch während der Ausführung des Makros kein anderer Befehl - auch kein anderes Makro - ausgeführt werden. Demnach kann der User rein theoretisch auch nichts wildes anklicken; oder liege ich da komplett falsch ?? 

SG

Jens Hansen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut Steeg
Mitglied
Programmierer


Sehen Sie sich das Profil von Helmut Steeg an!   Senden Sie eine Private Message an Helmut Steeg  Schreiben Sie einen Gästebucheintrag für Helmut Steeg

Beiträge: 19
Registriert: 30.05.2007

Catia V5R16

erstellt am: 27. Sep. 2007 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Doch, ich hab festgestellt, das es geht - aber CATIA fängt dann entweder an zu würfeln oder es bleibt irgendwo stehen und man muss den CNEXT-Prozess erschiessen 

Ich habe wie gesagt, eine Listbox in einem VBA-Formular, in dem ich Skriptaufrufe per Doppelklick ausführe. Wenn ein Benutzer jetzt hergeht, ein Skript startet - welches dann z.B. bei einem Selection.SelectElement2() wartet - und sofort entweder das gleiche Skript oder ein anderes neu startet, platzt alles 

Aber ich kann direkt vor dem SystemService.ExecuteScript() Aufruf die Listbox abschalten und danach wieder einschalten, dann ist das Problem nicht mehr existent.

Ich würde jetzt gerne beim Öffnen des Formulars prüfen, ob gerade ein Skript ausgeführt wird - also das Formular "benutzersicher" machen. 

Gruss,
  Helmut

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens Hansen
Mitglied
Senior Consult


Sehen Sie sich das Profil von Jens Hansen an!   Senden Sie eine Private Message an Jens Hansen  Schreiben Sie einen Gästebucheintrag für Jens Hansen

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 27. Sep. 2007 14:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Hm ... sieht schlecht aus 
Als Ausweg würde mir einfallen, einen Paramter im Part zu erzeugen und diesem einen Wert geben. Wenn das Formular ausgeführt wird könnte der Parameter abgefragt und ausgelesen werden.... nur so als Idee.

Viel Erfolg

Jens Hansen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bobby_Joe2001
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Bobby_Joe2001 an!   Senden Sie eine Private Message an Bobby_Joe2001  Schreiben Sie einen Gästebucheintrag für Bobby_Joe2001

Beiträge: 81
Registriert: 15.01.2006

erstellt am: 27. Sep. 2007 19:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Hallo,
das mit dem Parameter erstellen wird wahrscheinlich auch nicht funktionieren, da ja dann CATIA schon wieder angesprochen wird.

Da würd ich mir lieber irgendwo ne Datei anlegen (Home, Temp?!) und nach der Skriptausführung löschen.

Nur dann besteht das Problem, dass du nicht festellen kannst ob ein Skript läuft oder vielleicht unterbrochen wurde und die Datei noch existiert.

Viele Grüße

------------------
Du musst die Leute einmal richtig ärgern, dann wirst du endlich ernst genommen.
Konrad Adenauer

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut Steeg
Mitglied
Programmierer


Sehen Sie sich das Profil von Helmut Steeg an!   Senden Sie eine Private Message an Helmut Steeg  Schreiben Sie einen Gästebucheintrag für Helmut Steeg

Beiträge: 19
Registriert: 30.05.2007

Catia V5R16

erstellt am: 27. Sep. 2007 19:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, und das Problem ist zusätzlich, das ich in fremde Skripte eventuell nichts einbauen kann, weil die obfuskiert sind... naja, muss ich halt mit 75% leben statt 100% 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tomtom1972
Mitglied
dipl ing maschinenbau


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

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. Sep. 2007 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Hallo,
wenn das Problem lediglich die nicht zu kontrollierenden Finger des Users sind prbiere es doch einmal damit:
Catia.Interactive = False
Dann kann der User klicken wie ein Weltmeister: Catia reagiert nicht mehr.
Am Ende wieder ein Catia.Interactive = True und weiter gehts.
Lediglich ein Errorhandling muss du noch einbauen: wenn das Makro abbricht oder sich aufhängt muss du gewährleisten, das Catiawieder ansprechbar ist. Sonst bleibt nur noch das Kill im Task...

Gruß TotmTom

------------------
tomtom1972

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens Hansen
Mitglied
Senior Consult


Sehen Sie sich das Profil von Jens Hansen an!   Senden Sie eine Private Message an Jens Hansen  Schreiben Sie einen Gästebucheintrag für Jens Hansen

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 28. Sep. 2007 09:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

Die Idee mit Interactive=False hatte ich auch aber leider sieht es so aus, dass zwar die Symbolleisten inativ sind, allerdings die Menüeinträge weiterhin verfügbar sind; Datei öffnen und sowas ist demnach weiterhin möglich.

SG

Jens Hansen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bobby_Joe2001
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Bobby_Joe2001 an!   Senden Sie eine Private Message an Bobby_Joe2001  Schreiben Sie einen Gästebucheintrag für Bobby_Joe2001

Beiträge: 81
Registriert: 15.01.2006

erstellt am: 28. Sep. 2007 14:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Steeg 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Helmut Steeg:
Ja, und das Problem ist zusätzlich, das ich in fremde Skripte eventuell nichts einbauen kann, weil die obfuskiert sind... naja, muss ich halt mit 75% leben statt 100%   

Hi,

du kannst ja ein Zwischenskript bauen, dass das "Richtige" aufruft und nur diese Datei erstellt.

Dieses "vorgeschaltete" Skript wartet dann bis das andere beendet ist und kann so gut wie nie abstürzen, weil es ja nicht viel mehr macht als eine Datei vor Beginn anzulegen und hinterher zu löschen.

Stürzt dein "richtiges" Skript ab, kriegt dein "vorgeschaltetes" Skript einen Fehler, den du mit Err abfängst.

In die Datei, die du vor der Ausführung des "richtigen" Skripts erstellst schreibst du den Namen vom Makro und Datum+Uhrzeit wanns gestartet wurde.

Wenn der User noch ein Makro starten will dann prüfst du, ob die Datei existiert und brichst ab falls sie da ist. Bzw. lässt nach einer Laufzeit von z.B. über 10 min zu, das zu ignorieren und warnst vor einem Totalabsturz von CATIA.

Das sollte eine sichere Lösung sein.

Viele Grüße

------------------
Du musst die Leute einmal richtig ärgern, dann wirst du endlich ernst genommen.
Konrad Adenauer

[Diese Nachricht wurde von Bobby_Joe2001 am 28. Sep. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz