Autor
|
Thema: Automation API per CAA erweitern (3169 mal gelesen)
|
tobias.t Mitglied
Beiträge: 11 Registriert: 07.05.2007 WinXP x64 CATIA V5R19-SP9
|
erstellt am: 03. Apr. 2012 10:50 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich stecke gerade an einer grundsätzlichen Stelle fest. Ich möchte von einem Programm aus auf ein laufendes CATIA zugreifen und dort dann Dateien öffnen, Parameter auslesen usw. Da ich den Zugriff per CAA nicht hinbekommen habe, bin ich dafür auf die Automation API (in C/C++) ausgewichen, wo das mit GetActiveObject() ja relativ leicht geht. Diese API bietet allerdings einige benötigte Befehle nicht, so dass ich diese mit CAA irgendwie bereitstellen muss. Dazu gibt es auf http://catiatutor.com/CAA-V5/Advanced-topics-of-CAA-V5/ eine einfache Schritt-für-Schritt-Anleitung, mit der man neue Interfaces für Automation erstellen kann. Die erstellten DLLs befinden sich dann auch in meiner CATIA-Environment. Das Problem, was ich jetzt habe, ist, dass ich in meinem externen Programm einfach nicht auf mein neues Interface zugreifen kann. In der Anleitung wird in VB der Application-Pointer einfach dem Interface zugewiesen. In C habe ich das auch versucht mit
Code: TestIntf *myIntf = (TestIntf*) pApp;
und alternativ mit
Code: pApp->QueryInterface (IID_TestIntf, (void**)&myIntf);
aber beide Versuche führen nicht zum gewünschten Erfolg.Hat jemand von euch schon mal ein eigenes Interface erfolgreich in Automation eingebunden und könnte mir mal erklären, wo mein Ansatz fehlerhaft ist? Was noch besser wäre: gibt es mit CAA eine Möglichkeit, ein bereits laufendes CATIA anzusprechen? Dann würde ich mir den Umweg über Automation sparen. Vielen Dank. Tobias 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: 04. Apr. 2012 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für tobias.t
Hallo Tobias, zunächst einmal: Nein ich habe das noch nicht gemacht, aber es steht auf meiner Liste. :-) Was ich noch nicht so ganz verstehe: Wenn Du ein CAA schreibst, dann bist Du doch schon im CATIA und zwar in den Internas, direkt an allem dran. Gut okay, es ist nichts dokumentiert und Du musst alles erraten, wie man es genannt haben könnte, aber wieso jetzt noch das CATIA aus der Prozessliste fischen? Du bist Doch das CATIA. :-) Oder verstehe ich da was grundlegend falsch? CAA wird meiner Meinung nach in das CATIA eingebettet. Edit: Der Link liefert übrigens: Database Error: Unable to connect to the database:Could not connect to MySQL Edit2: Was hast Du in pApp stehen und von welchem Typ ist es? ------------------ 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 [Diese Nachricht wurde von HoBLila am 04. Apr. 2012 editiert.] [Diese Nachricht wurde von HoBLila am 04. Apr. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tobias.t Mitglied
Beiträge: 11 Registriert: 07.05.2007 WinXP x64 CATIA V5R19-SP9
|
erstellt am: 04. Apr. 2012 14:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, in CAA kann man Programme schreiben, die zur Laufzeit intern ein CATIA starten, dort alle angegebenen Befehle ausführen und sich dann beenden. Quasi ein richtig schöner Batch-Betrieb. Evtl. kann man auch eigene Programme / Kommandos in CATIA einbetten, die dort per Knopfdruck gestartet werden können. Beides sind aber Abläufe, die ich nicht möchte. Ich möchte ein eigenständiges Programm starten, welches sich bei Bedarf zu einem separaten CATIA verbinden und dort Befehle ausführen kann. Wenn ich in diesem Programm nun mit CAA anfange, dann bedienen diese CAA-Befehle nur ein CATIA, welches ich Batch-mäßig innerhalb des Programms gestartet haben müßte, aber eben nicht das externe CATIA. Um die Fragen nach den Variablentypen zu beantworten:
Code:
CLSID clsid; IUnknown *pIUnk; INFITF::Application *pApp;::CoInitialize (NULL); ::CLSIDFromProgID (L"CATIA.Application", &clsid); GetActiveObject (clsid, NULL, &pIUnk); pIUnk->QueryInterface (__uuidof(INFITF::Application), (void**)&pApp);
Auf den Link habe ich übrigens eben noch mal draufgedrückt und er funktioniert - braucht zwar eine Ewigkeit zum Laden, aber immerhin. Vielleicht ist da ja zeitweise die Internetleitung down. MfG Tobias 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: 05. Apr. 2012 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für tobias.t
Hallo Tobias, zunächst einmal: Danke, ich hab's jetzt verstanden. Allerdings muss ich da leider passen, da ich so etwas noch nie gebaut habe. :-( ------------------ 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 >>)
|