Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  AutoCAD in Visual Studio

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:  AutoCAD in Visual Studio (1989 mal gelesen)
Althalus
Mitglied


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

Beiträge: 7
Registriert: 27.05.2010

erstellt am: 03. Jun. 2010 10:23    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 erstmal,

ich habe wahrscheinlich ein grundlegendes Problem mit der Programmierung von AutoCAD in Visual Studio.

Zur Erklärung:

Ich möchte nacheinander mehrere Zeichnungen automatisiert Öffnen und Ausdrucken.

Das Problem:

Es scheitzert schon an den Verweisen in dem Projekt. Wenn ich auf die acmgd.dll und die acdbmgd.dll Verweise, bekomme ich folgende Fehlermeldung:

"Die Datei oder Assembly "acmgd, Version=18.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden."

Ich habe folgendes schon im Internet gefunden und ausprobiert:

- Bei den Verweisen acmgd und acdbmgd "Lokale Kopie" auf False gesetzt
- Den COM-Verweis "AutoCAD/ObjectDBX Common 18.0 Type Library" eingebunden
- ObjectARX 2010 runtergeladen und dessen DLLs eingebunden

Ich benutze AutoCAD 2010 und Visual Studio 2010 (Habs aber auch mit Visual Studio 2005 und 2008 probiert, selbes Ergebnis!)

Hat jemand eine Idee woran das liegen könnte?

Vielen Dank im Voraus!

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


Ex-Mitglied

erstellt am: 03. Jun. 2010 11:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

die einzige Erklärung, ohne das Projekt zu sehen, könnte sein, dass Du auf die falschen dll's verweist, denn Du musst in diesem Fall zwischen 32bit und 64bit unterscheiden.
Am besten wäre, die Verweise auf die dll's zu setzen, die in Deinem AutoCAD-Installationsverzeichnis sitzen/liegen/gespeichert sind.

Wenn Du mit Deinem Projekt dieses Problem hast, dann mach mal ein neues Projekt (vorzugsweise VS2008, denn dafür ist von Autodesk die Freigabe vorhanden und dann kann ich u.U. hoffentlich helfen), ein kleines Hello-World, und wenn Du damit das gleiche Problem hast, dass diese Solution hier uploaden. Es gibt sonst zu viele Möglichkeiten und es würde länger dauern als notwendig, bis wir alle theoretischen Varianten durch haben.

- alfred -

------------------
www.hollaus.at

Althalus
Mitglied


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

Beiträge: 7
Registriert: 27.05.2010

erstellt am: 03. Jun. 2010 11:37    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


ConsoleApplication3.zip

 
Anbei mein Testprojekt, mit welchem ich einfach nur versucht habe eine DWG zu öffnen.

Ich habe auf jeden Fall auf die DLLs in meiner AutoCAD-Installation verwiesen, aber funktionieren will es immer noch nicht.

Die Probleme treten übrigens nur bei Autodesk.AutoCAD.ApplicationServices; auf!
Hier der Code:

Code:
using System.IO;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            OpenDrawing();

        }

        [CommandMethod("OpenDrawing", CommandFlags.Session)]

        public static void OpenDrawing()
        {

            string strFileName = @"C:\Test.DWG";

            DocumentCollection acDocMgr = Application.DocumentManager;

            if (File.Exists(strFileName))
            {

                acDocMgr.Open(strFileName, false);

            }

            else
            {

                acDocMgr.MdiActiveDocument.Editor.WriteMessage("File " + strFileName +

                                                               " does not exist.");
            }

        }
    }
}


Diesen Code habe ich aus dem AutoCAD .NET Developer's Guide

[Diese Nachricht wurde von Althalus am 03. Jun. 2010 editiert.]

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


Ex-Mitglied

erstellt am: 03. Jun. 2010 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

die Art (eine EXE und dann auf AutoCAD hinzugreifen) passt nicht. Den Code, den Du verwendest, ist so geschrieben, dass es eine DLL wird und diese mit AutoCAD-Befehl NETLOAD dann ins AutoCAD geladen wird, nur damit hast Du eine bestehende Verbindung zu AutoCAD und damit zum DocumentManager.

In Deinem Fall (wenn Du AutoCAD von extern steuern willst), musst Du zuerst eine AutoCAD-Session starten oder Dich mit einer laufenden Session verbinden. Sonst wüsste Deine EXE, wenn AutoCAD 3mal geöffnet wäre, ja nicht, in welchem AutoCAD jetzt ein Document geöffnet werden sollte.

Also meine Empfehlung, weil's mit DLL einfacher (und stabiler) ist, mach eine DLL, und lade dann diese mit NETLOAD ins AutoCAD, damit ist die Verbindung zu AutoCAD gesichert und Du darfst darin dann Dokumente öffnen und plotten und was auch immer.

- alfred -

------------------
www.hollaus.at

Althalus
Mitglied


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

Beiträge: 7
Registriert: 27.05.2010

erstellt am: 03. Jun. 2010 13: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

Also war meine Herangehensweise total falsch...

Gibt es denn eine andere Möglichkeit von außen heraus das AutoCAD zu steuern??

Wenn ich das richtig sehe kann man mit den COM-Objekten von AutoCAD eine Menge erreichen, aber ich habe leider keine gute Anleitung / Tutorial dafür gefunden!

Vielen Dank für die Bemühungen!

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


Ex-Mitglied

erstellt am: 03. Jun. 2010 14:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ja, mit COM und CreateObject oder GetObject kannst Du eine Verbindung zu AutoCAD aufbauen und dann über das ActiveX-Interface auch AutoCAD steuern.

Hilfe kannst Du wahrscheinlich nicht so viel finden, denn AutoCAD von aussen zu steuern hat markante Performance-Einschänkungen (der Zugriff auf Elemente ist eben durch 'OutOfProcess'-Handling mühsam) und wird daher nicht oft verwendet.

Aber Du kannst im Internet nach 'CreateObject' oder 'GetObject' suchen, für z.B. Excel findest Du schon einiges, wie Du von Deiner EXE auf eine andere Application hingreifen kannst.

- alfred -

------------------
www.hollaus.at

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