Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  COMExeption wurde nicht behandelt

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:  COMExeption wurde nicht behandelt (3215 mal gelesen)
leon0109
Mitglied



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

Beiträge: 21
Registriert: 20.08.2011

CATIA V5 R19 SP3
Win 7 Pro 64

erstellt am: 04. Dez. 2011 15:02    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!
Grüß an alle!

Ich programmiere eine Schnittstelle zu CATIA mit C#. Über Buttons will mansche Funktionen von CATIA extern steuern.
Habe folgender Code erstellt

private void ProduktOeffnen_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open";
            dlg.Filter = "Projekt(*.CATpart)|*.CATpart|All Files(*.*)|*.*";
            dlg.ShowDialog();           
           
INFITF.Application catiaApplication = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
INFITF.Document catiaDocument;
string input = "";
catiaDocument = catiaApplication.Documents.Open(ref input);
catiaDocument = catiaApplication.ActiveDocument;

Dialog wurde geöffnet aber wenn ich Projekt öffnen will bringt mir folgende Fehler

System.Runtime.Interopservice.COMException{"Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL Fehler zurückgegeben"}
COMExeption wurde nicht behandelt!

Der Fehler ist wahrscheinlich Trivial aber ich komme nicht weiter.
Bitte um Hilfe

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 05. Dez. 2011 13: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 leon0109 10 Unities + Antwort hilfreich

Guten Tag,

also wenn ich Ihren Code so recht verstehe haben Sie einen groben Fehler... Sie übergeben Schlichtweg keinen Pfad zum Öffnen.

Zitat:
Code:
string input = "";
catiaDocument = catiaApplication.Documents.Open(ref input);

Ein leerer String wird erzeugt und anschließend übergeben!

Muss heißen (wenn man davon ausgeht, das der Ausgewählte Pfad zuvor genutzt werden soll!):

Code:

catiaDocument = catiaApplication.Documents.Open(dlg.FileName);


Nochmal komplett von meinem Test (sorry - ist in VB, aber ist ja klar)

Code:

dim oCatia as INFITF.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application")
dim dlg as New Windows.Forms.OpenFileDialog
dlg.Title = "Open"
dlg.Filter = "Projekt(*.CATpart)|*.CATpart|All Files(*.*)|*.*"
dlg.ShowDialog()
Dim oDoc as INFITF.Document = oCatia.Documents.Open(dlg.FileName)

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

leon0109
Mitglied



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

Beiträge: 21
Registriert: 20.08.2011

CATIA V5 R19 SP3
Win 7 Pro 64

erstellt am: 05. Dez. 2011 16:10    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 gladly
Habe versucht und funktioniert ...das war eine schwerwiegende Anfänger und Gedanken Fehler(Ich bin ein Anfänger) 

Ich bedanke mich ganz herzlich 

Grüß

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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. Dez. 2011 17:18    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 leon0109 10 Unities + Antwort hilfreich

Nur so ne Idee: CATIA hat auch einen FileDialog, den kann man auch verwenden.
Erleichtert vielleicht den Umgang und der kann auch mit DLNames. :-)

Edit: Übrigens würde ich nach der Auswahl des Files, den String auch prüfen  ob er nicht zufällig leer ist (User hat auf Abbrechen gedrückt).

Die schnellste VB Methode dafür wäre:

if(sReturnString = vbNULLString) then
exit sub
end if

------------------
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

Stammtisch in Wolfsburg http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml

[Diese Nachricht wurde von HoBLila am 05. Dez. 2011 editiert.]

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 05. Dez. 2011 19:00    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 leon0109 10 Unities + Antwort hilfreich

Bezüglich des Abbrechens des OpenFileDialog ist dies in C# wie folgt zu prüfen:

Code:

INFITF.Document oDoc;
if (dlg.ShowDialog() == DialogResult.OK){
oDoc = oCatia.Documents.Open(dlg.FileName);
}

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

leon0109
Mitglied



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

Beiträge: 21
Registriert: 20.08.2011

CATIA V5 R19 SP3
Win 7 Pro 64

erstellt am: 06. Dez. 2011 00:20    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!
Habe jetzt ausprobiert und Code sieht so aus:

private void ProduktOeffnen_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open";
            dlg.Filter = "Projekt(*.CATproduct)|*.CATproduct|Projekt(*.CATpart)|*.CATpart|All Files(*.*)|*.*";
            dlg.ShowDialog();

            INFITF.Application catiaApplication = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
         

            INFITF.Document catiaDocument;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
            catiaDocument = catiaApplication.Documents.Open(dlg.FileName);
            }
            catiaDocument = catiaApplication.ActiveDocument;

        }

aber jetzt wenn ich ein Part oder Produkt wähle und mit "öffnen" bestätige, macht mir Dialogfenster noch mal auf und muss noch mal bestätigen.
Habe ich da was falsch verstanden.

Grüß

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 06. Dez. 2011 09:27    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 leon0109 10 Unities + Antwort hilfreich

Du hast 2x dlg.ShowDialog() drin.

nimm das erste raus. :-)

Code:

private void ProduktOeffnen_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open";
            dlg.Filter = "Projekt(*.CATproduct)|*.CATproduct|Projekt(*.CATpart)|*.CATpart|All Files(*.*)|*.*";

            INFITF.Application catiaApplication = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
       

            INFITF.Document catiaDocument;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
            catiaDocument = catiaApplication.Documents.Open(dlg.FileName);
            }
            catiaDocument = catiaApplication.ActiveDocument;

        }


------------------
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

Stammtisch in Wolfsburg
http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 06. Dez. 2011 09:43    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 leon0109 10 Unities + Antwort hilfreich

Guten Tag,

du hast schlicht zwei Mal das Öffnen des Dialog in deinem Code!
dlg.ShowDialog() ist eine Funktion mit dem Rückgabewert eines Enums DialogResult.
Beim ersten rufst du einfach auf. Beim zweiten rufst du auf und prüft gleichzeitig auf den Rückgabewert (was ja gewollt ist).
Ersten entfernen und fertig.
Desweiteren denke ich ist die Doppelte zuweisung des catiaDocument unnötig. Der Rückgabewert des Open-Befehl ist ja das geöffnete Dokument, welches auch Active geschaltet wird. Somit weist du in der nächsten Zeile nochmal das SELBE Dokument zu.
Nächste Sache ist, wenn jemand auf Abbrechen bei der Dateiauswahl drückt wird kein Dokument geöffnet. Hast du kein anderes im Catia offen wird dein Code bei der Zuweisung des ActiveDocument auf Fehler laufen!

Code:

private void ProduktOeffnen_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "Open";
            dlg.Filter = "Projekt(*.CATproduct)|*.CATproduct|Projekt(*.CATpart)|*.CATpart|All Files(*.*)|*.*";
            // dlg.ShowDialog(); //Weg da ja unten genutzt wird!

            INFITF.Application catiaApplication = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
        

            INFITF.Document catiaDocument;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
            catiaDocument = catiaApplication.Documents.Open(dlg.FileName);
            }
            //catiaDocument = catiaApplication.ActiveDocument; //Doppelt gemoppelt?!

        }


Edit: Und schon wieder zu langsam... Ich muss das 10 Finger-System lernen um diese unnötigen Doppelpostings vermeiden zu können 

[Diese Nachricht wurde von gladly am 06. Dez. 2011 editiert.]

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 06. Dez. 2011 10:51    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 leon0109 10 Unities + Antwort hilfreich

Ich schreib auch nur mit meinem eigenen 3,5 Finger Adler-Suchsystem :-) Wir Entwickler lernen das ja nie richtig und wenn sich das einmal falsch festgesetzt hat... :-)

Dein Post ist aber dennoch der bessere, da Du nicht nur das eine Problem gelöst, sondern den kompletten Code, mit Erklärungen verbessert hast.

------------------
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

Stammtisch in Wolfsburg
http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml

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

leon0109
Mitglied



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

Beiträge: 21
Registriert: 20.08.2011

CATIA V5 R19 SP3
Win 7 Pro 64

erstellt am: 06. Dez. 2011 12:41    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
Ich schreibe sogar mit nur 2 Fingern und trotzdem falsch
Für uns ist das glaube ich auch nicht wichtig weil wir auch nachdenken müssen. Ich bin sehr dankbar für eure Hilfe...
Grüß

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