| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
|
Autor
|
Thema: Makro soll warten (1649 mal gelesen)
|
adrian83 Mitglied student

 Beiträge: 62 Registriert: 22.11.2012 -Windows 7 64 bit -Catia V5 r21
|
erstellt am: 27. Jun. 2013 18:19 <-- editieren / zitieren --> Unities abgeben:         
hi! ich starte mit einem shell eine anwendung von catia,die rechnet dann viel. wie ist es möglich,dass mein makro solange anhält,bis catia die berechnungen durchgeführt hat? habe es provisorisch mit ner sehr langen for shcleife gemacht.aber es geht doch sicher besser? ------------------ -Windows 7 64 bit -Catia V5 r19 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: 28. Jun. 2013 08:46 <-- editieren / zitieren --> Unities abgeben:          Nur für adrian83
|
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: 28. Jun. 2013 09:44 <-- editieren / zitieren --> Unities abgeben:          Nur für adrian83
Beim Aufruf kannst Du, glaube ich, ein TRUE oder FALSE mitgeben, ob gewartet werden soll. Alternative wäre, aber irgend eine Rückmeldung des Prozesses, auf den der startende Prozess wartet. Das kann auch sein, dass Dein prozess verschwindet, kenne die Aufgbaenstellugn jetzt nicht. Könntest ja eine Ausgabedatei erzeugen. Auf diese prüft der aufrufende Prozess (Polling), was auch immer ein DoEvents enthalten sollte. Besser wäre aber irgend ein Rückgabewert oder etwas in der Prozessliste, hier hast Du sehr viele Möglichkeiten (z.B. auch Umgebugnsvariablen), ich glaube aber, dass es, je nachdme wie Dein Aufruf aussieht, bereits einen Parameter im CATIA gibt. ------------------ 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 |
adrian83 Mitglied student

 Beiträge: 62 Registriert: 22.11.2012 -Windows 7 64 bit -Catia V5 r21
|
erstellt am: 28. Jun. 2013 11:25 <-- editieren / zitieren --> Unities abgeben:         
ich habe Code von hoblila auf meine berdürfnisse angepasst: Set WshShell = CreateObject("WScript.Shell") Call CATIA.StartCommand("Global Feature Recognition") CATIA.RefreshDisplay = True Call WshShell.AppActivate("Global Feature Recognition", True) Call WshShell.SendKeys("%{TAB}", True) Call WshShell.SendKeys("{ENTER}", True) For i = 1 to 10000000 'Pause erzwingen Next WshShell.SendKeys "Text"
es ist ja schon mehrmals zu broblemen mit win7 und sendkeys gekommen. unter welchem windows läuft sowas stabiler? ------------------ -Windows 7 64 bit -Catia V5 r19 [Diese Nachricht wurde von adrian83 am 28. Jun. 2013 editiert.] 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: 28. Jun. 2013 12:27 <-- editieren / zitieren --> Unities abgeben:          Nur für adrian83
Hier, wie besprochen, die FindWindowA-Methoden mal versuchen. Also entweder bis der Dialog weg ist eine While-Schleife drüber oder besser, wie ich es in der Testautomatisierung mache (ist aber ne andere Sprache), warten bis das CATIA-Fenster wieder reagiert. In der While-Schleife aber umbedingt ein DoEvents() einbauen um den anderen Prozessen die Chance zu geben zu reagieren und die Prozessorlast etwas rauszunehmen. Ein Sleep() von ner Sekunde wär eventuell auch sinnvoll, wenn Du schon weißt, dass es länger dauert. SendKeys() ist immer instabil, das liegt schon allein daran, dass Du in nem Dialog rumklickst und es immer etwas unvorhersehbares geben kann (z.B. ein PopUp für irgend ein Update). Schlechter wird es dann ab Windows 6.0 durch die UAC, die die Fensterbedienung erschwert um den User zu bevormunden (lässt sich aber auch deaktivieren). Im Windows 6.1 wird's besser, aber die Fensterklassen haben sich deutlich verändert. Hier habe ich noch keine gute neue kostenlose Methode gefunden, die Windows-Windows-DLL's sollten aber weiterhin gut funktionieren. Ich selbst unterlasse solche Späßchen jetzt bei Windows7 und mach es lieber im CAA oder mit kommerziellen Lösungen. ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |