关于DELPHI控制AUTOCAD ( 积分: 100 )

  • 主题发起人 主题发起人 C7H9
  • 开始时间 开始时间
C

C7H9

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DELPHI在AUTOCAD2004中绘制一条直线,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
VAR
startp : array[0..2] of double;
endp : array[0..2] of double;
ef: variant;
fd:variant;
lineobj:variant;
begin
startp[0]:=1;
startp[1]:=1;
startp[2]:=1;
endp[0]:=100;
endp[1]:=100;
endp[2]:=100;
ef:=createoleobject('autocad.application');
fd:=ef.activedocument;
//在模型中创建直线
lineobj:=fd.modelspace.addline(startp,endp);
ef.visible:=true;

end;
在语句:lineobj:=fd.modelspace.addline(startp,endp);
出错
请指教,谢谢.
 
我用DELPHI在AUTOCAD2004中绘制一条直线,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
VAR
startp : array[0..2] of double;
endp : array[0..2] of double;
ef: variant;
fd:variant;
lineobj:variant;
begin
startp[0]:=1;
startp[1]:=1;
startp[2]:=1;
endp[0]:=100;
endp[1]:=100;
endp[2]:=100;
ef:=createoleobject('autocad.application');
fd:=ef.activedocument;
//在模型中创建直线
lineobj:=fd.modelspace.addline(startp,endp);
ef.visible:=true;

end;
在语句:lineobj:=fd.modelspace.addline(startp,endp);
出错
请指教,谢谢.
 
直接用fd.modelspace.addline(startp,endp);會不會報錯?
 
不行,我试过了
 
通过这两天在本论坛的学习,已经通过了,代码如下:
procedure TForm1.Button1Click(Sender: TObject);

VAR
startp : OleVariant;
endp : OleVariant;
ef: OleVariant;
fd:variant;
lineobj:variant;
begin
startp:=VarArrayCreate([0,2],5);
ENDp:=VarArrayCreate([0,2],5);
startp[0]:=1;
startp[1]:=1;
startp[2]:=1;
endp[0]:=100;
endp[1]:=100;
endp[2]:=100;
ef:=createoleobject('autocad.application');
fd:=ef.activedocument;
//在模型中创建直线
lineobj:=fd.modelspace.addline(startp,endp).Update;
ef.visible:=true;

end;
 
给楼主一个建议,最好把出错提示拿出来,我在论坛找了个帖子,供参考

关键是VarArrayCreate这个函数

http://www.delphibbs.com/delphibbs/dispq.asp?lid=887226
标题是: 急!二次开发AutoCAD的问题 愿意以高分奉送

------------------转自网络
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,comobj;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2, p3: OleVariant; // start & end points of line
Mspace, regionObject ,Acad, AcadDocument1, lineObject , solidObject ,AcadDocument,lineobj : OleVariant;
begin
p1 := VarArrayCreate([0, 2], 5);
p2 := VarArrayCreate([0, 2], 5);
p3 := VarArrayCreate([0, 2], 5);
// Assign values to array elements
p1[0] := 2.0; p1[1] := 4.0; p1[2] := 0.0;// from 2,4,0
p2[0] := 12.0; p2[1] := 14.0; p2[2] := 0.0; // to 12,14,0
p3[0] := 7.0; p3[1] := 8.0; p3[2] := 0.0;
lineObject:= VarArrayCreate([0, 11],varVariant) ;
Acad:= CreateOleObject('AutoCad.Application');
Acad.visible:= True ;
AcadDocument:=Acad.Documents;
AcadDocument1:=Acad.ActiveDocument;
Mspace := AcadDocument1.ModelSpace;

lineobj[1] := Mspace.AddLine(VarArrayRef(p1), VarArrayRef(p2));
lineobj[2] := Mspace.AddLine(VarArrayRef(p2), VarArrayRef(p3));
lineobj[3] := Mspace.AddLine(VarArrayRef(p3), VarArrayRef(p1));
end
 

Similar threads

I
回复
0
查看
629
import
I
I
回复
0
查看
781
import
I
I
回复
0
查看
861
import
I
I
回复
0
查看
829
import
I
后退
顶部