Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zugriff über C#

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Zugriff über C# (4579 mal gelesen)
joerg.m
Mitglied



Sehen Sie sich das Profil von joerg.m an!   Senden Sie eine Private Message an joerg.m  Schreiben Sie einen Gästebucheintrag für joerg.m

Beiträge: 17
Registriert: 05.07.2005

erstellt am: 07. Jul. 2005 13:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

hat jemand schon einmal V5 über Visual Studio C# angesprochen und könnte mir sagen, wie ich eine Instanz der Anwendung erstelle und dann bspw. mit "Open" ein File öffne?
Die "InfTypeLib.tlb" hab ich bereits über "Projekt/Verweis hinzufügen" in eine COM-Stellvertreterklasse übersetzen lassen. Daraufhin sind die Typen auch zugreifbar, nur einen Konstruktor für die Anwendung o.ä. kann ich nicht finden. Könnte mir dann jemand einen Tipp geben? Ich danke Euch schon jetzt für Eure Mühen!

Grüße,
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jens Hansen
Mitglied
Senior Consult


Sehen Sie sich das Profil von Jens Hansen an!   Senden Sie eine Private Message an Jens Hansen  Schreiben Sie einen Gästebucheintrag für Jens Hansen

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 07. Jul. 2005 14:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joerg.m 10 Unities + Antwort hilfreich

Hallo Jörg,
hier ein ganz einfaches Beispiel zum ansprechen einer geöffneten CATIA-Sitzung unter c#:

object CATIA0 = Marshal.GetActiveObject("CATIA.Application");
INFITF.Application CATIA = CATIA0 as INFITF.Application;
MessageBox.Show(CATIA.SystemConfiguration.Version.ToString());

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

joerg.m
Mitglied



Sehen Sie sich das Profil von joerg.m an!   Senden Sie eine Private Message an joerg.m  Schreiben Sie einen Gästebucheintrag für joerg.m

Beiträge: 17
Registriert: 05.07.2005

erstellt am: 08. Jul. 2005 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jens,

vielen Dank für Deine Antwort! Ich muss Eure Community leider gleich mit der nächsten Frage quälen: Wenn ich aus MS Visual Studio C# heraus versuche, den Befehl

String s = ".*;Alle";
Catia.ActiveDocument.Selection.Search(ref s);

auszuführen, dann bekomme ich immer wieder die Meldung "Ausnahmefehler des Servers". In CATIA V5 funktioniert diese Abfrage als Makro. Hat jemand eine Idee wo das Problem liegen könnte? Vielen Dank!

Freundliche Grüße,
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joerg.m
Mitglied



Sehen Sie sich das Profil von joerg.m an!   Senden Sie eine Private Message an joerg.m  Schreiben Sie einen Gästebucheintrag für joerg.m

Beiträge: 17
Registriert: 05.07.2005

erstellt am: 08. Jul. 2005 16:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

erfreulicherweise kann ich mir selbst eine Antwort auf meine Frage geben. Der Fehler lag scheinbar nicht in dem geposteten Codeauszug, sondern in der darauf folgenden Zeile

"Catia.ActiveDocument.Selection.Count;"

auch wenn der Compiler aus irgendeinem Grund bereits eine Zeile zuvor raussprang. Wenn ich statt dessen

"Catia.ActiveDocument.Selection.Selection.Count;"

schreibe, dann funktioniert es scheinbar.

Grüße,
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joerg.m
Mitglied



Sehen Sie sich das Profil von joerg.m an!   Senden Sie eine Private Message an joerg.m  Schreiben Sie einen Gästebucheintrag für joerg.m

Beiträge: 17
Registriert: 05.07.2005

erstellt am: 09. Jul. 2005 14:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

na wenn ich mich da mal nicht zu früh gefreut habe...
Erstmal zum Code:

//Applikationsinstanz erstellen:
object oCatia = Marshal.GetActiveObject("Catia.Application");
INFITF.Application oCatia = oCatia as INFITF.Application;
//Drawing öffnen:
oCatia.Documents.Open(ref path);
String s = ".*;Alle";
//Zeichnungselemente selektieren:
oCatia.ActiveDocument.Selection.Search(ref s);


Zum Fehler:
Die Suche scheint noch zu funktionieren, wenn ich im Debugger das Objekt oCatia auswerte, dann steht unter "oCatia.Application.StatusBar" wie viele Elemente selektiert wurden. Wenn ich aber einen der folgenden Aufrufe ausführen möchte, dann bekomme ich immer eine Exception.

int i = oCatia.ActiveDocument.Selection.Count;
object o = oCatia.ActiveDocument.Selection.Item(intVal);

Wenn ich das Catia-Objekt auswerte, dann steht bei "oCatia.ActiveDocument.Count" die Meldung "<Fehler: Eine Ausnahme des Typs '{System.Runtime.InteropServices.COMException}' ist aufgetreten>" drin.
Die Methode "SelectElement" mit "AnyObject" funktioniert noch nicht einmal unter CATIA, stellt also auch keine Alternative für mich dar...

Hätte irgendjemand eine Idee, was ich falsch mache oder ist der COM-Server von Dassault einfach nicht sauber definiert?

Ich danke Euch für Eure Geduld!

Freundliche Grüße,
Jörg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joerg.m
Mitglied



Sehen Sie sich das Profil von joerg.m an!   Senden Sie eine Private Message an joerg.m  Schreiben Sie einen Gästebucheintrag für joerg.m

Beiträge: 17
Registriert: 05.07.2005

erstellt am: 11. Jul. 2005 16:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
das Problem hat sich erledigt: Wenn ich z.B. statt

"int i = oCatia.ActiveDocument.Selection.Count;"

schreibe

"INFITF.Document d = oCatia.ActiveDocument;
INFITF.Selection sel = d.Selection;
int i = sel.Count;"

dann geht es...

Gruß,
Joerg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz