Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Fehler beim Öffnen einer dwg-Zeichnung

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Fehler beim Öffnen einer dwg-Zeichnung (1818 mal gelesen)
AndreasM2000
Mitglied
CAD-Projektleiter, Zeichner, Programmierer


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

Beiträge: 21
Registriert: 24.11.2013

https://autocaddotnetsamples.wordpress.com/

erstellt am: 02. Aug. 2015 08: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 habe versucht, eine (externe) dwg-Zeichnung zu öffnen. Einmal mittels CommandMethod und einmal den gleichen Code durch einen Button (Teil eines Formulars) zu starten. Die erste Methode klappt problemlos. Die zweite wirft folgenden Fehler aus. Was läuft falsch und muss ich ändern?

System.Runtime.InteropServices.COMException (0x802000C8): Ungültiger Ausführungskontext

1. Methode mittels CommandMethod:
[CommandMethod("oeffne_eine_Zeichnung")]
        public void oeffne_eine_Zeichnung()
        {
            string strFileName = "C:\\Temp\\6008000246.dwg";
            DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;

            if (File.Exists(strFileName))
            {
                acDocMgr.Open(strFileName, false);
            }
            else
            {
                acDocMgr.MdiActiveDocument.Editor.WriteMessage("File " + strFileName + " does not exist.");
            }
        }

2. Methode gleicher Code, aber Aufruf durch einen Button

private void button1_Click(object sender, EventArgs e)
        {
            string strFileName = "C:\\Temp\\6008000246.dwg";
            DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager;

            if (File.Exists(strFileName))
            {
                acDocMgr.Open(strFileName, false);
            }
            else
            {
                acDocMgr.MdiActiveDocument.Editor.WriteMessage("File " + strFileName + " does not exist.");
            }
        }

Gruß Andreas

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 02. Aug. 2015 11:08    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 AndreasM2000 10 Unities + Antwort hilfreich

Ist die Form "modal" geladen oder nicht? Wenn ja, dann kann es nicht funktionieren, da AutoCAD keinen Fokus (und damit nicht auf ein anderes Dokument den Focus setzen kann).

------------------


www.cars4fun.at

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 02. Aug. 2015 11:32    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 AndreasM2000 10 Unities + Antwort hilfreich

... der aktuelle Kontext, in dem der .Net-Code läuft, wird zudem durch das reale Öffnen einer Zeichnung verlassen und steht in der geöffneten Zeichnung nicht mehr zur Verfügung.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

AndreasM2000
Mitglied
CAD-Projektleiter, Zeichner, Programmierer


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

Beiträge: 21
Registriert: 24.11.2013

https://autocaddotnetsamples.wordpress.com/

erstellt am: 02. Aug. 2015 12: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

Hallo,
vielen Dank für den Hinweis.
Dann habe ich es jetzt anders gemacht, um dennoch ans Ziel zu kommen. Der CommandMethod-Befehl ist ja wie ein "normaler" AutoCAD-Befehl bekannt und ich kann ihn dann auch über Button_Click mittels SendStringToExecute ansprechen.

acDoc.SendStringToExecute("._oeffne_eine_Zeichnung ", false, false, false);

Ist also dann keine direkte Lösung, aber klappt auch.

Gruß Andreas

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 02. Aug. 2015 13:36    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 AndreasM2000 10 Unities + Antwort hilfreich

Zitat:
Ist also dann keine direkte Lösung, aber klappt auch.
Schön, dass Du das als Lösung gefunden hast!
Jedoch kleiner Hinweis dazu: dieses SendCommand funkt nur, wenn eine DWG im Editor vorhanden ist. Sollten alle DWG's geschlossen sein (nur das "New Tab" Window geöffnet sein), dann können auch keine Befehle eingegeben werden.

------------------


www.cars4fun.at

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

AndreasM2000
Mitglied
CAD-Projektleiter, Zeichner, Programmierer


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

Beiträge: 21
Registriert: 24.11.2013

https://autocaddotnetsamples.wordpress.com/

erstellt am: 02. Aug. 2015 14:12    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

ja, richtig, dass muss ich noch sicherstellen, dass auf den Fall nicht vorhandener dwg-Zeichnungen reagiert wird.
Der sendCommand-Befehl ist wohl im Laufe der Zeit "verloren" gegangen und durch den .SendStringToExecute-Befehl abgelöst worden? Ich konnte kein funktionierendes Beispiel mit sendCommand mehr finden, das bei mir läuft.

Mein nächstes Problem ist, wenn ich eine Reihe von dwg-Dateien öffne, möchte ich sicherstellen, dass immer das letzte geöffnete dwg-Dokument "oben" liegt und aktiviert ist. Die geöffneten dwg-Documente im DocumentManager zu finden, ist nicht so schwer. Wie kann ich aber ein Document aktiv setzen. In meiner foreach-Schleife durch Zuweisen als MDIDocument wird das nicht zugelassen.

Gruß Andreas

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 02. Aug. 2015 15:58    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 AndreasM2000 10 Unities + Antwort hilfreich

Zitat:
Wie kann ich aber ein Document aktiv setzen
Sprechen wir noch immer vom Zustand während eines geöffneten (modal geladenen) Forms, dann gar nicht, die Erklärung ist oben schon gegeben.
Stellt sich vielleicht auch die Frage (indirekte Anregung): wieso Windows-Form und nicht Palette?

------------------


www.cars4fun.at

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

AndreasM2000
Mitglied
CAD-Projektleiter, Zeichner, Programmierer


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

Beiträge: 21
Registriert: 24.11.2013

https://autocaddotnetsamples.wordpress.com/

erstellt am: 02. Aug. 2015 16: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

ja, ich erkläre den nächsten Schritt noch einmal etwas ausführlicher.
Nachdem ein oder (meistens) mehrere Dateien geöffnet sind, wird eine von ihnen in einer Variable als Dateinamen gespeichert. In meinem Fall string strFileName = "C:\\Temp\\6008000246.dwg";
Danach laufe ich durch den Document Manager und prüfe, ob einer von den geöffneten Dateien den gleichen Namen hat, wie mein vorher gespeicherter Dateinamen. Diese Datei möchte ich dann aktiv machen (soll oben liegen, den Focus haben).

DocumentCollection docs = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;

            foreach (Document doc in docs)
            {
                if (doc.Name == strFileName)
                {
                    doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
                    //das geht so hier nicht. das muss ich anders machen. aber wie setze ich das doc aktiv?
                }
            }

Gruß Andreas

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 02. Aug. 2015 21:16    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 AndreasM2000 10 Unities + Antwort hilfreich

... schreib mal bitte, was du konkret vor hast.
Mir kommt es so vor, als bist du auf einem wenig optimalen Weg, für den es andere, bessere Alternativen gäbe.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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