C# Windows Programmierung Zugriff auf Autocad

  • #1
W

werner2

Neues Mitglied
Themenersteller
Dabei seit
07.10.2005
Beiträge
3
Reaktionspunkte
0
Hallo,

ich möchte aus einem von mir programmierten C# Programm auf Autocad zugreifen, z.  B. in der Form, dass ich einen Befehl an Autocad absenden möchte: Zoom Grenzen.
Ich stelle mir das wie einen Zugriff auf andere Windows Programme wie z. B. Word vor, hier kann ich ja auch direkt Word Befehle absenden.

Ich habe im Internet nachgeforscht, finde aber bisher nichts über mein Problem. Ich wäre für einen Lösungsvorschlag auf dem ich aufbauen kann sehr dankbar.

Eigentlich müsste es doch auch ähnlich wie ein Zugriff auf eine Access Datenbank sein, z. B. (ich weiss, es geht auch optimaler):

private OleDbConnection db;
OleDbCommand cmd;
OleDbDataReader Reader;
string ConnString;
db = new OleDbConnection();
ConnString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ts10.mdb;
db.ConnectionString = ConnString;
db.Open();

usw.

Oder ich habe irgendwo den Begriff win command handler gelesen, egal über Hilfe, selbst nur über Lösungsideen wäre ich sehr dankbar.

Gruss an das Forum,

Werner


verschoben von Rund ums Forum
 
  • #2
  • #3
Das war ein wertvoller Tip.

Was ich aber möchte, ist aus einem laufenden c# Programm an Autocad einen Befehl absetzen. Im Beispiel von cadalyst wird, so habe ich es verstanden, der umgekehrte Weg eingegangen: ... to test this programm, compile it and then fire up Autocad 2006. Type in NETLOAD and load the DLL you just created. ... type Hello in Autocads Programm prompt ...

Ich berechne in meinem Programm Koordinaten, in Autocad ist eine Zeichnung gespeichert. Ich möchte nun von meinem Programm an Autocad einen Befehl wie z. B. Zoom Grenzen absetzen.

OK, ich habe eine Zwischenlösung gefunden über Interoperating with Windows using P/Invoke and C#. Aber das ist nicht besonders schön und möglicherweise auch nicht besonders zukunftssicher.

Für einen weiteren Tip bin ich immer noch sehr dankbar und sage schon mal Danke im voraus, Gruss Werner
 
  • #4
Du könntest COM verwenden, dann funktioniert es so ähnlich wie mit Word:

Referenz hinzufügen: COM / AutoCAD 200x Type Library.

Code:
using System.Runtime.InteropServices;
using acad= Autodesk.AutoCAD.Interop;
hinzufügen.

Dann (im einfachsten Fall) so etwas wie:

Code:
// ...

acad.AcadApplication acadApp;

try {

  acadApp = (acad.AcadApplication)Marshal.GetActiveObject(AutoCAD.Application);

} catch (COMException ex) {  
  // AutoCAD scheint nicht zu laufen
  // ...
  return;
}

try {

  acadApp.ZoomExtents();

} catch (COMException ex) { 
  // Abgelehnt
  // ...
}

Andere Kommandos findest Du in der AutoCAD-Developer-Hilfe bzw. einfach im Object-Browser von Visual Studio. Für einige Dinge musst Du zusätzlich noch

COM / AutoCAD/ObjectDBX Common x.y Type Library

als Referenz hinzufügen und
Code:
using Autodesk.AutoCAD.Interop.Common;
 
  • #5
Danke, das ist die Lösung meines Problems.
 
Thema:

C# Windows Programmierung Zugriff auf Autocad

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.489
Neuestes Mitglied
DonMartin
Oben