This is my code:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
AcadApp: IAcadApplication;
function TestAcadAvailable: Boolean;
function RunAutoCad: Boolean;
procedure AddLines;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
if RunAutoCad(False) then
AddLines;
end;
function TForm1.TestAcadAvailable: Boolean;
begin
Result:=True;
try
AcadApp:=GetActiveOleObject('AutoCAD.Application.15') as
IAcadApplication;
// is 'AutoCAD.Application.15' correct ?
except
AcadApp:=nil;
Result:=False;
end;
end;
function TForm1.RunAutoCad: Boolean;
begin
AcadApp:=nil;
Screen.Cursor:=crHourGlass;
if not(TestAcadAvailable) then
begin
AcadApp:=CreateOleObject('AutoCAD.Application.15') as
IAcadApplication;
// AcadApp:=CoAcadApplication.Create;
AcadApp.Visible:=True;
Application.BringToFront;
end;
Screen.Cursor:=crDefault;
if AcadApp<>nil then
begin
if AcadApp.Documents.Count=0 then
AcadApp.Documents.Add('');
Result:=True;
end
else
Result:=False;
end;
procedure TForm1.AddLines;
var
p1,p2,p3,p4: OleVariant;
begin
p1:=VarArrayCreate( [0, 2], varDouble );
p1[0]:=0;
p1[1]:=0;
p1[2]:=0;
p2:=VarArrayCreate( [0, 2], varDouble );
p2[0]:=50;
p2[1]:=50;
p2[2]:=50;
p3:=VarArrayCreate( [0, 2], varDouble );
p3[0]:=0;
p3[1]:=50;
p3[2]:=0;
p4:=VarArrayCreate( [0, 2], varDouble );
p4[0]:=50;
p4[1]:=0;
p4[2]:=0;
AcadApp.ActiveDocument.Database.ModelSpace.AddLine(p1,p2);
AcadApp.ActiveDocument.Database.ModelSpace.AddLine(p3,p4);
AcadApp.ZoomExtents;
end;
Thank you in advance.
Regards.
Keven Corazza
SierraSoft