关于AUTOCAD二次开发的问题(200分)

  • 主题发起人 主题发起人 dahei
  • 开始时间 开始时间
D

dahei

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:我在用ActiveX Automation技术方法调用AUTOCAD时遇到了一个讨厌的问题:关于
点的定义。Delphi在它的关于AUTOCAD类库注册文件中声明的点为OleVariant,而AUTOCAD中关于
点的描述为一个阵列。这样我在Delphi中若定义点为OleVariant则命令到AUTOCAD时返回‘Variant
is not array’而我若将点在Delphi中声明为阵列则Delphi又编译不过去,提示类型不符。
这个讨厌的问题使的我下面的工作又做不下去,还望有那为高手帮我这个忙,在下感恩不尽。
(最好能用一段程序来说明,谢谢!)
 
不好意思,你的问题我不知道,不过推荐你看看这个网站,可能可以!

http://ourworld.compuserve.com/homepages/tonyt/Delphi/delphi.htm
 
我也碰到同样的问题
 
问题解决了,下面代码打开一张旧图并绘一个五角星:
procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2, p3, p4, p5 : OleVariant;
Acad, ActiveDoc, AcadModal : OleVariant;
begin
// create variant arrays to hold coordinates of the window
p1 := VarArrayCreate([0,2], VT_R8);
p2 := VarArrayCreate([0,2], VT_R8);
p3 := VarArrayCreate([0,2], VT_R8);
p4 := VarArrayCreate([0,2], VT_R8);
p5 := VarArrayCreate([0,2], VT_R8);
// assign values to array elements
p1[0] := 0.0; p1[1] := 100.0; p1[2] := 0;
p2[0] := -95.1; p2[1] := 30.9; p2[2] := 0;
p3[0] := -58.8; p3[1] := -80.9; p3[2] := 0;
p4[0] := 58.8; p4[1] := -80.9; p4[2] := 0;
p5[0] := 95.1; p5[1] := 30.9; p5[2] := 0;
Acad := CreateOleObject('AutoCad.Application');
if not varisempty(Acad) then
Acad.visible := visible;
// open drawing
ActiveDoc := Acad.Documents.Open('c:/01.dwg');
//draw lines
AcadModal := ActiveDoc.ModelSpace;
AcadModal.addLine(VarArrayRef(p1),VarArrayRef(p3));
AcadModal.addLine(VarArrayRef(p3),VarArrayRef(p5));
AcadModal.addLine(VarArrayRef(p5),VarArrayRef(p2));
AcadModal.addLine(VarArrayRef(p2),VarArrayRef(p4));
AcadModal.addLine(VarArrayRef(p4),VarArrayRef(p1));
end;
 
多人接受答案了。
 
后退
顶部