Autor
|
Thema: Automation in MS Visual C++ 6.0 (2628 mal gelesen)
|
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 07. Mai. 2003 09:38 <-- editieren / zitieren --> Unities abgeben:
Hallo, weiss jemand wie man Catia V5 mit Visual C++ 6.0 automatisiert, so dass man auch die MFC verwenden kann? Welche Typen-Libraries müssen verwendet werden? Ein Beispiel-Projekt wäre sehr hilfreich. Vielen Dank im voraus. A. Hofmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 20. Mai. 2003 06:17 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmals, mit dem Klassenassistenten habe ich die Typen-Bibliothek "inftypelib.tlb" aus dem CATIA bin Verzeichnis eingefügt und die Klasse "Application" verwendet. #include "inftypelib.h" Im Button-Handler steht folgenden Code: void CCATIAAutomationDlg: nButtonRunCatia() { Application m_oCatiaApp; COleException oe; if ( ! m_oCatiaApp.CreateDispatch("Catia.Application", &oe ) ) { oe.ReportError(); return; } } Mit ReportError() bekomme ich folgende Meldung: "Das System kann die angegebene Datei nicht finden." Der Debugger gibt folgendes aus: Warning: CreateDispatch returning scode = severity: SEVERITY_ERROR, facility: FACILITY_WIN32 ($80070002). Wenn ich auf die selbe Weise Excel oder Access automatisiere, klappt alles wie gewünscht, Excel, bzw. Access werden gestartet. Weiß jemand Rat? Gruß Arno
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bloedefeld Mitglied Dipl.- Ing.
Beiträge: 94 Registriert: 13.08.2002
|
erstellt am: 30. Mai. 2003 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
hallo arno, als erstes hat dassault die freigabe des relaise-interface gesperrt. deshalb funktioniert die klassische umgebung mit automation nicht. wenn man sich tief mit COM auskennt kann die sperrung umgangen werden. gruß bloedefeld Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 06. Jun. 2003 11:03 <-- editieren / zitieren --> Unities abgeben:
Hallo bloedefeld, das Programm hatte ich mit der R9 getestet. Wir haben jetzt auf R10 SP3 umgestellt und siehe da die Automation mit R10 funktioniert einwandfrei! Mit <m_oCatiaApp.CreateDispatch("Catia.Application", &oe )> wird CATIA gestartet. Das Projekt habe ich angehängt, falls wer Interesse daran hat. Gruß Arno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 21. Jan. 2004 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Hallo, kennt sich vielleicht jemand näher mit dem obigen Beispiel aus ? Ich würde es gerne zum laufen bringen - weis aber wegen mangelnder Prog.praxis nicht wie ich das in ein Projekt einbinden muss. Ich arbeite mit R10 SP3 danke schomal Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 21. Jan. 2004 14:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Laute, das Projekt habe ich mit Microsoft(R) Visual C++ 6.0 erstellt. Die Datei CATIAAutomation.dsw ist die Projekt-Datei. Diese musst Du dann ins Studio laden. Wenn Du das Programm startest siehst Du einen Dialog, wie im Anhang. Gruß Arno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 21. Jan. 2004 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Hallo Arno, hab ich fast alles hinbekommen - habe ebenfalls VisualStudio 6.0 als ich auf den Button klickte bekam ich "ungültiger klassenstring" als Fehler. Daraufhin habe ich deine OnStart Methode etwas geändert weil ich bemerkte, dass Probleme mit oe.ReportError() auftraten. void CCATIAauto20_01Dlg: nStart() { CoInitialize(0); Application m_oCatiaApp; if(!m_oCatiaApp.CreateDispatch("Catia.Application")) { AfxMessageBox("Couldn't start CATIA"); return; } else { m_oCatiaApp.SetVisible(TRUE); TRACE("CATIA IS RUNNING"); } } jetzt habe ich die obige AfxMsgBox bekomen "Couldn't start CATIA" Ich habe auch noch dein ProgID check im Programm entdeckt und diesen aktiviert - nun bekomme ich beim starten "retrieval of ProgID failed" Weis aber nicht woran das liegt. Gruß Laute Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 21. Jan. 2004 15:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Laute, momentan kann ich es nicht nachvollziehen, wo der Fehler liegt. Bei mir ist "CATIA V5 R10 SP3" und CATIA V5 R12 SP2" installiert. Bei beiden funktioniert der Aufruf. Folgende Fehlerquellen könnten es sein: Die Objekt-Library von CATIA ist nicht in der Registry installiert, dann findet er den String "catia.application" nicht. Die CATIA TypeLib "inftypelib" muss neu geladen werden. Das geht mit Klassenassistent/Klasse hinzufügen/Aus Typbibliothek. Die CATIA Typbibliotheken sind unter \Programme\Dassault Systemes\B<Version>\intel_a\code\bin Vielleicht hilft Dir das weiter. Gruß Arno PS. Was meinst Du mit "dein ProgID check"?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 21. Jan. 2004 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Hallo Arno, danke für die schnelle Antworten! Das Problem kann nicht zufällig etwas damit zu tun haben, dass CAA nicht installiert ist - oder?! Beim Hinzufügen der infTypeLib bin ich im Class-Wizard auf den Automation-Reiter oben -war das falsch? das meinte ich mit deinem ProgID-Check(war auskommentiert) ////////////////////////////////////////////////////////////////// //Identifiziert ob CATIA vorhanden ist CLSID clsID; HRESULT hr; hr= CLSIDFromProgID(OLESTR("Catia.Application"), &clsID); if(FAILED(hr)) { AfxMessageBox("Retrieval of ProgID failed"); return FALSE; } //////////////////////////////////////////////////////////////////
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 21. Jan. 2004 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Alles klar, ich hab's auf nem anderen Rechner ausprobiert - da hat es tadellos funktioniert-auf diesem war aber auch CAA installiert- liegt es etwa doch an CAA. Wird bei der CATIA-Installation nicht defaultmäßig die Object-Library installiert-wenn ja wie macht man das? Das der String nicht gefunden werden kann ist glaube ich mein Problem ! danke - gruß Laute Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 21. Jan. 2004 16:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Laute, den ProgID-Check brauchst Du nicht, das war nur ein Test. Der Automation-Reiter ist auch ok. CAA habe ich auch nicht installiert. 1. Durchsuche mal die Registry nach "catia.application" 2. Im Studio kannst Du ja mal den OLE/COM Objekt-Katalog unter "Extras" aufrufen. Suche dann unter dem Punkt "Type Libraries" die CATIA V5 Bibliotheken (diese müssen installiert sein!!!), z.B. "CATIA V5 InfInterfaces Object Library". Ansonsten weiss ich auch nicht woran es liegen könnte. Gruß Arno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 21. Jan. 2004 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Hallo Arno, danke für die Mühe! In der Registry hab ich wie zu erwarten war kein "catia.application" gefunden. In meinem OLE-Viewer hab ich genau 1 Catia typelibrary entdeckt.Und zwar "CATIA V5 ApplicationFrame Object-Library (Ver 0.0)" Da sollten vielleicht ein paar mehr sein?! Naja - jedenfalls danke Dir! Nun weis ich woran es liegt. Gruß Laute Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 21. Jan. 2004 16:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Laute, es kann sein dass CATIA mal auf dem Rechner gelöscht wurde. Ich hatte mal folgendes Szenario: 1. CATIA V5 R10 war auf meinem Rechner intstalliert. Das Automationsprogramm arbeitete problemlos. 2. Ich installierte dann CATIA V5 R12 zusätzlich. Das Automationsprogramm arbeitete immer noch problemlos. 3. Jetzt deinstallierte ich CATIA V5 R12 über Systemsteuerung/Software aus bestimmten Gründen. 4. Als ich dann das Automationsprogramm startete, ging es auch nicht mehr. Ich schaute dann im Objekt-Katalog nach, ob die CATIA Objekte noch da waren. Ich stellte dann fest, dass bei der CATIA V5 R12 Deinstallation alle CATIA Objekt Registry-Einträge gelöscht wurden. Sowohl von der R12 als auch von der R10. 5. Nachdem ich die R10 nochmals installiert hatte, ging das Automationsprogramm wieder. Gruß Arno Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 22. Jan. 2004 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
Hallo Arno, habe ein leeres CATIA-Verzeichnis gefunden..sieht alles schwer nach deinem Szenario aus! Ich habe aber rausgefunden wie man die ganzen TypeLibs wieder in die Registry bekommt und zwar unter CATIA-Tools->SettingsManagemanet kann man unter dem Reiter "MAkros" externe Referenzen hinzufügen, da nimmt man dann alle aus dem bin-Verzeichnis und hat sie nach einem Neustart in der REG. Jedoch den catia.Application-String hat mir das auch nicht beschert nun werd ich's vor einer Neuinstallation noch im Environment-Editor probieren. Gruß Laute Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
A. Hofmann Mitglied CAD/CAM Anwender
Beiträge: 17 Registriert: 27.02.2003
|
erstellt am: 22. Jan. 2004 14:09 <-- editieren / zitieren --> Unities abgeben:
|
RonnyS Mitglied
Beiträge: 97 Registriert: 04.09.2003
|
erstellt am: 22. Jan. 2004 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
|
Laute Mitglied Student
Beiträge: 26 Registriert: 14.07.2003
|
erstellt am: 22. Jan. 2004 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für A. Hofmann
|