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

全屏阅读

2012-04-08 00:04:05 作者: 所属分类:程序设计 阅读:3691 评论:0

标签:

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)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由不吃醋的猫发布,所有内容仅代表个人观点。版权归懒猫窝窝不吃醋的猫共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言