Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zugriff von Delphi auf AutoCAD Bibliothek (https://www.delphipraxis.net/160097-zugriff-von-delphi-auf-autocad-bibliothek.html)

JoBoCAD 27. Apr 2011 13:07

Zugriff von Delphi auf AutoCAD Bibliothek
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Zusammen,

ich habe im Anhang ein Delphi-Programm welches auf die AutoCAD Befehls-Bibliothek zurück greifen soll.
Beim Compilieren bleibt Delphi (siehe JPG im Anhang) hängen.
Zuvor hatte ich über Komponente – Teilebibliothek die AutoCAD Standard Bibliothek geladen.
Dennoch klappt es immer noch nicht.
Ich arbeite unter delphi 2005.

Welceh Einstellungen muss ich wo verändern damit mein programm ausgeführt werden kann.

Gruß
Joachim

Bernhard Geyer 27. Apr 2011 13:23

AW: Zugriff von Delphi auf AutoCAD Bibliothek
 
Liest du auch Compilerfehlermeldungen? Die ersten beiden sollten wohl mehr als klar sein.

JoBoCAD 27. Apr 2011 14:09

AW: Zugriff von Delphi auf AutoCAD Bibliothek
 
Sorry - ich bin kein Profi aber den Fehler hätte ich bemerken müssen.
Trotzdem hängt es immer noch.
Das Programm sieht jetzt so aus und wirft beim Compilieren folgende Meldung aus:

[Fehler] Unit2.pas(38): E2003 Undefinierter Bezeichner: 'GetActiveOleObject'
[Fehler] Unit2.pas(39): E2003 Undefinierter Bezeichner: 'IAcadModelspace'
[Fehler] Unit2.pas(39): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit2.pas(40): E2003 Undefinierter Bezeichner: 'SafeArrayRef'
[Fehler] Unit2.pas(40): E2003 Undefinierter Bezeichner: 'IAcadCircle'
[Fehler] Unit2.pas(40): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit2.pas(44): E2029 '.' erwartet, aber ';' gefunden
[Fataler Fehler] acadtest.dpr(5): F2063 Verwendete Unit 'Unit2.pas' kann nicht compiliert werden



procedure TForm2.Button1Click(Sender: TObject);

var
i:integer;
Acad, vPoint,MSpace,Circle : OleVariant;



begin
vPoint := VarArrayCreate([0,2],1);
vPoint[0] := 2.0; vPoint[1] := 4.0; vPoint[2] := 0.0;
Acad := GetActiveOleObject('AutoCAD.Application.24');
Mspace := IDispatch(Acad.ActiveDocument.ModelSpace) as IAcadModelspace;
Circle := IDispatch(Mspace.AddCircle(SafeArrayRef(vPoint), 10.0)) as IAcadCircle;
Circle.Update;
end;

end;


Ich würde mich riesig freuen wenn ich noch ans Ziel kommen würde

gruß
Joachim

Klaus01 27. Apr 2011 14:21

AW: Zugriff von Delphi auf AutoCAD Bibliothek
 
Hallo,

änder das mal:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);

var
  i:integer;
  Acad, vPoint,MSpace,Circle : OleVariant;



begin
  vPoint := VarArrayCreate([0,2],1);
  vPoint[0] := 2.0; vPoint[1] := 4.0; vPoint[2] := 0.0;
  Acad := GetActiveOleObject('AutoCAD.Application.24');
  Mspace := IDispatch(Acad.ActiveDocument.ModelSpace) as IAcadModelspace;
  Circle := IDispatch(Mspace.AddCircle(SafeArrayRef(vPoint), 10.0)) as IAcadCircle;
  Circle.Update;
end;

end; // [Fehler] Unit2.pas(44): E2029 '.' erwartet, aber ';' gefunden

scheinbar kennt die Unit diese Bezeichner (Klassen) nicht.
[Fehler] Unit2.pas(38): E2003 Undefinierter Bezeichner: 'GetActiveOleObject'
[Fehler] Unit2.pas(39): E2003 Undefinierter Bezeichner: 'IAcadModelspace'
[Fehler] Unit2.pas(40): E2003 Undefinierter Bezeichner: 'SafeArrayRef'
[Fehler] Unit2.pas(40): E2003 Undefinierter Bezeichner: 'IAcadCircle'

Sind die notwendigen Units eingebunden?

Grüße
Klaus

Bernhard Geyer 27. Apr 2011 14:27

AW: Zugriff von Delphi auf AutoCAD Bibliothek
 
'GetActiveOleObject' -> Unit ComObj
'IAcadModelspace', 'IAcadCircle' -> Müsst in einer der bei Typbibliothek erzeugen TLB.Pas-Datei definiert sein.

annotare 24. Mai 2018 20:01

Zugriff von Delphi auf AutoCAD und Co
 
Ich würde gern mein CAD-Programm fernsteuern.
Mir fehlt leider jede Erfahrung zu diesem Thema, kann mit da jemand helfen?
Delphi XE3 prof. und BricsCAD
Den Kreis zeichnen geht schon :-)

SProske 26. Mai 2018 10:16

AW: Zugriff von Delphi auf AutoCAD Bibliothek
 
Was genau brauchst du denn?

Wir hatten das BricsCAD eine Weile über COM ferngesteuert, aber mehr um Daten auszulesen als selbst zu zeichnen.

Da sich die COM-Schnittstelle aber mit so gut wie jeder Version geändert hatte und wir damit für jede BC-Version die bei Kunden im Einsatz war, eine eigene Version unsres Programms zur Verfügung stellen mussten, sind wir irgendwann dazu übergegangen, lieber auf Lisp zu setzen und die nur noch über Delphi zu starten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz