Autor
|
Thema: CATIA.StartCommand synchron? (2118 mal gelesen)
|
AlexE78 Mitglied Ing.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 05. Okt. 2005 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, ist jemandem von euch eine Möglichkeit bekannt, wie man einen CATIA.StartCommand("CommandX")-Befehl (CommandX ist in meinem Fall eine CAA-Funktion) innerhalb eines .catvbs- oder .catscript-Makros synchron ablaufen läßt? D.h., daß das Script erst dann weiterläuft, wenn StartCommand beendet ist oder zumindest eine gewisse Zeit wartet. Das ganze muß auf Unix und XP laufen, daher kann ich's nicht mit einem out-process-macro realisieren. Mit externen Sleep-Prozessen (z.b. CATIA.SystemService.ExecuteProcessus "sleep 1") hab ichs schon versucht, scheint aber nix zu bewirken. Im Moment funktioniert es nur, wenn ich jeweils eine "MsgBox" danach aufzurufe... aber das kanns auf Dauer auch nicht sein. vielen dank schonmal... mfg alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
crash Mitglied
Beiträge: 158 Registriert: 12.06.2004
|
erstellt am: 06. Okt. 2005 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für AlexE78
Hallo AlexE78, wenn du in V5Automation schaust unter SystemService, gibt es dort u.a. ExecuteBackgroundProcessus = Executes an asynchronous process. ExecuteProcessus = Executes a synchronous process gruss crash Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexE78 Mitglied Ing.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 12. Okt. 2005 08:40 <-- editieren / zitieren --> Unities abgeben:
Danke für den Rat, aber das meinte ich nicht damit. Es geht nicht um ein synchron ausgeführtes externes Programm, sondern um einen synchronen, INTERNEN CATIA-Befehl. Und der startet mit "CATIA.StartCommand" leider nur asynchron. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 12. Okt. 2005 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für AlexE78
Moin Alex, das ist aber bei V5 so, dass Prozesse nur asynchron ausgeführt werden können. Im Grunde genommen arbeitet V5 wie ein Schachspiel; erst wenn der eine Zug fertig ist, kann ein anderer gemacht werden. Mir ist keine Funktion oder Prozess bekannt, wo innerhalb von V5 wirklich 2 Sachen gleichzeitig ablaufen. Schöne Grüße Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite http:\\catia.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 12. Okt. 2005 20:04 <-- editieren / zitieren --> Unities abgeben: Nur für AlexE78
Hallo Jens Hansen, entschuldige, daß ich mich hier einmische, aber vielleicht liegt hier ein Verständigungsproblem mit synchron und asynchron vor. Die wirkliche Frage ist aus meiner Sicht, wie man dem Script beibringt, daß es auf die Vollendung des mittels CATIA.StartCommand() gestarteten Prozesses wartet. Dies ist nämlich nicht immer der Fall, treffsicher zu Testen mit dem Command "Generate CATPart from Product..." bei R14, z.B.: Sub CATMain() CATIA.StartCommand "Generate CATPart from Product..." MsgBox "Fertig!!!" End Sub Hier ist das Script längst beendet, eh man die Abfrage vom Befehl bekommt, und auch die Message-Box ist schon eher aufgeblendet. Allerdings bringst Du mich hier auf eine Idee. Wenn CATIA SELBST nur einen Schritt nach dem anderen macht, müßte man nur eine von CATIA abzuarbeitende ?Routine? oder ?Abfrage? als nächste Programmzeile einfügen und es sollte das gewünschte Ergebnis erzielt werden. Hast Du oder hat jemand anderes dazu eine Idee oder gar schon Lösung? mfg, Lusilnie
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 12. Okt. 2005 21:38 <-- editieren / zitieren --> Unities abgeben: Nur für AlexE78
Hallo Lusilnie, außerhalb von V5 wäre es leichter; ich erschalge solche Probleme mittles "LateBinding"-Methoden; d.h. ich greife von außen auf V5 zu und muss logischerweise warten, bis V5 mit der Funktion fertig ist. Innerhalb eines Makros könnte man eine Do-While-Schleife einbauen, die z.B. fragt, ob ein Part vorhanden ist. Das wäre son ein Ansatz. schöne grüße Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite http:\\catia.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexE78 Mitglied Ing.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 13. Okt. 2005 09:02 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen allerseits, das mit dem Zugriff eines externen Programms auf CATIA hab ich schon getestet und funktioniert auch prima... aber halt nur unter XP. Wenn allerdings da jemand ne Idee hat, wie man das unter UNIX anstellt, laß ich mich gerne eines besseren belehren. und was die abfrage des ergebnisses angeht, bin ich eher skeptisch. soweit ich CATIA verstehe, ist CATIA.StartCommand "CommandX" gleichzusetzen mit einem Mausklick auf das entsprechende Icon bzw. der Eingabe von "c:CommandX" ... und solange da noch ein Makro läuft, das z.B. auf das Ergebnis wartet, stellt sich der befehl hinten an. zumindest bin ich da schon ein paar mal in endlosschleifen geraten. mfg alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TimoT Mitglied
Beiträge: 16 Registriert: 25.03.2003
|
erstellt am: 18. Nov. 2005 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für AlexE78
Hallo Alex, wenn Du eine selbst implementierte CAA Funktion innerhalb von Catia aufrufen möchtest kannst Du auch einen Corba oder SOAP Server als eigenständigen Thread beim starten von Catia hochfahren. Dieser Server bietet Dir dann eine Schnittstelle die Du von außen aufrufen kannst. Das funktioniert sowohl unter Windows als auch unter Unix. Wir haben solche Funktionen bereits auf WIN32, AIX, HP und Solaris realisiert. Viele Grüße Timo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |