记住用户名密码
从Delphi程序内访问对象层次结构首先必须要连接到应用程序。Delphi通过 ActiveDocument 对象提供指向当前 AutoCAD 任务中活动图形的链接。使用ActiveDocument,用户可以快速访问当前的 Document 对象及其所有方法和特性,还可以访问层次结构中的所有其他对象。
ActiveDocument 用于全局工程时,通常是指 AutoCAD 中的活动文档。ActiveDocument用于内嵌工程时,通常是指包含该工程的文档。例如,全局工程中的以下代码行将保存 AutoCAD 中当前活动的所有图形:
procedure Tfrm_AutoCAD.bt_saveClick(Sender: TObject);
begin
acad:=GetActiveOleObject('AutoCAD.Application.17')as AcadApplication;
acad.ActiveDocument.Save;
end;
3.1 引用对象层次结构中的对象
用户可以直接或通过自己定义的变量来引用对象。要直接引用对象,请将对象包含在调用层次结构中。例如,下列语句在模型空间中添加一条直线。请注意,层次结构从ActiveDocument开始,再转到ModelSpace对象,然后调用AddLine方法:
procedure Tfrm_AutoCAD.bt_addlineClick(Sender: TObject); var vpoint1,vpoint2:OleVariant; //定义数组变量,存储坐标值 begin acad:=GetActiveOleObject('AutoCAD.Application.17')as AcadApplication; //acad.ActiveDocument.Save; vpoint1:=VarArrayCreate([0,2],varDouble);//起点 vpoint2:=VarArrayCreate([0,2],varDouble);//终点 vpoint1[0]:=10; //X坐标起点 vpoint1[1]:=30; //Y坐标起点 vpoint1[2]:=0; //Z坐标起点 vpoint2[0]:=100; //X坐标终点 vpoint2[1]:=100; //Y坐标终点 vpoint2[2]:=0; //Z坐标终点 acad.ActiveDocument.ModelSpace.AddLine(vpoint1,vpoint2); end;
运行结果如图所示:
要通过用户定义的变量引用对象,请首先将变量定义为所需类型,然后设置为相应的对象。例如:检索模型空间中的第一个图元
本例返回模型空间中的第一个图元对象,类似的代码还可以用来检索图纸空间中的第一个图元。注意:可以将所有的图形对象定义为 AcadEntity 对象:
procedure TForm1.Button1Click(Sender: TObject); var entity:AcadEntity; duixiang:string; acad:acadapplication; begin try acad:=GetActiveOleObject('AutoCAD.Application.17')as AcadApplication; //获得活动的CAD对象 If acad.ActiveDocument.ModelSpace.Count <> 0 Then begin entity:=acad.activedocument.ModelSpace.Item(0); duixiang:=entity.ObjectName; ShowMessage(duixiang); end else begin MessageBox(Handle,'没有任何图元!','提示',MB_OK+MB_iconinformation); end; except MessageBox(Handle,'AutoCAD没有运行','提示',MB_OK+MB_iconinformation); end; end;
在AutoCAD中绘制图形,在此例子当中我们绘制了两个图形,第一个为圆,第二个为直线。运行结果如下:
3.1 访问 Application 对象
通过ActiveDocument对象的 Application 特性可以访问 Application 对象。在对象层次结构中,Application 对象位于Document对象的上方。
例如,以下代码行可以更新应用程序:
acad.ActiveDocument.Application.Update;
目前有 0 条留言 其中:访客:0 条, 博主:0 条