Autor
|
Thema: Catia Events in VBA abfangen (2772 mal gelesen)
|
johann.burghuber Mitglied
Beiträge: 19 Registriert: 06.03.2012
|
erstellt am: 08. Mrz. 2012 15:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, kann ich in Catia mittels VBA verschiedene Events abfangen? Ich habe in Catia z.B. 2 Files geöffnet. Ein Part und ein Drawing. Nun möchte ich ich jedes mal wenn ich zwischen den geöffneten Files hin und her wechsle das ein VBA-Makro ausgeführt wird. Gibt's da eine Möglichkeit? Danke Hans Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rfriedrich Mitglied
Beiträge: 39 Registriert: 11.05.2005
|
erstellt am: 09. Mrz. 2012 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für johann.burghuber
Hallo Hans, das geht nur "von außen", aber nicht mit VBA, da dies die CATIA-Applikation während des Makrolaufs blockiert. Man kann also eine exe programmieren, die zeitgetaktet die CATIA-Applikation abprüft. Auf diese Weise ist es auch möglich, die gewünschten "Events" abzufangen. Gruß Roland
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² 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: 09. Mrz. 2012 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für johann.burghuber
Zitat: Original erstellt von rfriedrich: Man kann also eine exe programmieren, die zeitgetaktet die CATIA-Applikation abprüft. Auf diese Weise ist es auch möglich, die gewünschten "Events" abzufangen.
Hallo zusammen, naja zeitgesteuert abfragen und damit die gewünschten Events abfangen, ist IMHO ein Widerspruch in sich. Entweder prüfe ich zeitgesteuert eine Veränderung, auf die ich reagiere, oder ich reagiere auf die Events bzw. werde von diesen ausgelöst. Letzeres wäre die saubere Variante, allerdings müsste man dann in den direkten Code von CATIA eingreifen (können) oder mit einem Backdoorprogramm die Applikation erweitern, aber diese sind nur über sehr problematische Wege einzubinden. Es gibt z.B. eine Möglichkeit ein Backdoorprog via Registry im System so einzubinden, dass es mit jedem! Programm gestartet und in dessen Programmstack geladen wird. Daher möchte ich diese Möglichkeit nicht erklären... Der Schaden bei einer falschen Handhabung wäre viel zu groß! Ich möchte dir daher nahelegen, in diesem Bereich nicht weiter Zeit zu investieren, da es über einen "einfachen" und vor allem sicheren Weg nicht geht. CATIA selbst sieht es in jedem Fall nicht vor, Eventgesteuert Makros auszuführen... ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities 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: 09. Mrz. 2012 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für johann.burghuber
Hallo Rick, nicht ganz richtig. :-) Ich würde zwar dennoch davon abraten, da ich vermute, kann mich aber auch irren, die Erfahrung fehlt. Keine Kritik, aber der Hintergrund ist der, dass das Verfahren, was ich gleich vorschlage relativ unsauber ist und auch Probleme verursachen kann. Man kann die Events über CAA abfangen, das wäre relativ kompliziert da CAA, aber auch über Polling. Polling ist das, was Rick mit zeitgesteuerter Abfrage meint, ich würd's jedoch nicht über die Zeit steuern, sondern wirklich aggressiv die ganze Zeit. :-) Ich habe mal ein Makro geschrieben, welches die Views der geöffneten Teile synchronisiert, also die Ansichtsänderungen auf alle Fenster überträgt. Dies habe ich, der Einfachkeit halber, im CATVBA gemacht. Einfach Polling und gut ist. War auch erst sehr skeptisch zwecks der Performance, aber juckt unsere Rechner nicht weiter und für diesen Fall hat's gut geklappt. Einziger, für den Anwender wirklich erkennbarer Nachteil: Der Mauszeiger wird ein Kringel oder eine Sanduhr sein, es lässt sich, durch DoEvents aber alles, genauso weiter benutzen. Ich kann Dir das Makro nicht fertig schreiben, da es mit meiner Arbeit kollidiert, aber nun kennst Du die Werkzeuge: - Polling - DoEvents - Schleife (do while) - CATIA.ActiveWindow ------------------ 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 |
johann.burghuber Mitglied
Beiträge: 19 Registriert: 06.03.2012
|
erstellt am: 09. Mrz. 2012 14:53 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort. Ich kenne das mit den Events noch von Excel. Es ging darum das ich ein selbst erstelltes UserForm habe welches, je nach dem ob ein Part, Product oder Drawing geöffnet ist, verschiedene Schaltflächen anzeigt. Da ich bei geöffneten Form zwischen den geöffneten Files hin- und herschalten kann sollte dies idealerweise direkt mit dem Wechsel zwischen den Fenstern geschehen. Habe es jetzt so gelöst das die Anzeige aktualisiert wird wenn der Benutzer mit der Maus über das Form oder deren Elemente fährt (Move Event). Ist zwar nicht die sauberste Lösung, aber es genügt für unsere Zwecke. Danke nochmals Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² 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: 09. Mrz. 2012 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für johann.burghuber
|
johann.burghuber Mitglied
Beiträge: 19 Registriert: 06.03.2012
|
erstellt am: 09. Mrz. 2012 18:10 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|