LC 讲得很好,我来讲讲实用法门
可将AutoCad看作一个类,Application是一个基本类,Preferences 和Documenu是子类然后其它。。。
建立一个Auto Automation:
CreatOleObject('autocad.application');
请看一个完整的代码例子:
type
AcadPoint = record
X: double;
Y: double;
Z: double;
end;
implementation
uses ActiveX,ComObj,AutoCad_Tlb;
procedure InitAcad;
begin
result:=true;
try
acad := GetActiveOleObject('AutoCAD.Application');//get acad instance
except
on EOleSysError do
acad := CreateOleObject('AutoCAD.Application'); //create a new instance
end;
Acad.visible:= True; //show acad
Doc := Acad.ActiveDocument; //current drawing document
Mspace := Doc.ModelSpace; //module space
end;
建立连接之后,就可进行各种控制了
比如画线可用 Acad.ModelSpace.addline(point1,point2)
Document是一个重要的对象,它代表AutoCad的图形,如图层,块,线型,标注类型等都有各自对应的对象。
我们画图时分图纸空间(PaperSpace)和模型空间(ModelSpace)
要在程序中控制画图,必需区分这两个,很多方法,如画线Addline,画圆AddCircle
ModelSpace和PaperSpace都有这个方法,
所以要这样写:auto.ModelSpace.addline(...),至于两者的区别与我们在画图(在AutoCad里面,line,circle)时的区别一样
Autocad有一个很详细的帮助,ActiveX Automation->Automation Reference->Object Model(先看看这里)
用DELPHI控制AutoCad是一个很偏门的问题,一般来说,小的程序可用autoLisp来解决
大的专业开发,以前(DOS时代)是用ADS,之后又转为ARX(Object ARX),
R14提出了用ActiveX Automation,不过它是为VB准备的,当然VB可以的,DElphi为什么不可以?
不过用起来总有点格格不入的样子,我试过几个例子,很辛苦(调程序时)
DFW里高手林立,不知有无此中高人(Autocad二次开发),因为工作关系,很关心这方面的问题。
又:飞英,你是做哪行的,经常用Autocad吗?我是从事建筑设计行业的。欢迎来信交流。