Delphi二次开发AutoCAD(四)—访问对象层次结构

2012年04月08日 程序设计 暂无评论

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;

给我留言

Copyright © 懒猫窝窝 保留所有权利.   主题设计 AB模板网

用户登录