在 Delphi 的 Code Explorer 窗口中,用户可
以方便地浏览 AutoCAD 的 ActiveX 对象及 这些对象的属性和方法,并可以了解调用
这些属性和方法时可用的参数及形式。在
开发程序时还可以引用该单元文件,从而 可 以使用 库中 声明 的变 量类型 和常 量定 义。在编写程序时可以利用 Delphi  的自 动完成功能减少错误,编译程序时函数、 方法和属性可以得到自动检查。
(1)对 AutoCAD 的 Activex Au tomation 初 始化。在 Delphi 环境下进行 AutoCAD 的 Ac- tivex Au tomation 设计需要进行 3 方面的初始 化:
uses 语句引用 Comobj 单元,它是 Delphi 应用程序中处理 Activex  Au tomation 的关键 代码;
获取AutoCAD 的 Application 和 document 对象,用来管理 Au toC AD 应用程序和操纵 当前活动图形文件。
下列代码可进行必要的初始化工作:
uses ComObj;
// 引用 ComObj 单元
var Acad,AcadDwg:OleV ariant; // 定义 Application 和 docu ment 对象变量 Acad:=GetActiveOleObject ('AutoCAD. Application');
// 获取 Application 对象
AcadDwg:=Acad.ActiveDocument; //获取AutoCAD 当前活动文档Document 对象
(2)获取和设置 AutoCAD 系统变量。
当需要获取并修改 AutoCAD 的系统变量
时,可使用 Document 对象的以下 2 个方法:
RetV al:=ObjDocument. GetV ariable (Sy s- Name:String ); // 返回系统变量 sysname 的当前值 ObjDo cument.  Set V ariable  (SysName: string,SysV alue );
// 设置系统变量 SysName 的当前值为 新值 SysV alue
使用这两个方法时需注意GetVariable 函数返回值和 SetV ariable 函数中参数 sys- V alue 的类型随着系统变量的不同而变化, 例如多点线线宽返回实数、当前颜返回 整数等。
(3)操纵非图形对象。AutoCAD 中含 有如 TextStyle (s  文本样式集合对象)和 Dim-
Style (s  标注样式集
合对象)等非绘图 对象,通过访问其 属性和使用方法, 可 以 在 应 用 程 序 中操纵这些对象。 下 面 的 代 码 可 以 新 增 一 个 Text- Styles 并设为当前 值。
cari图 3 AutoCAD 图纸中的电子签名轨迹
名的笔迹轨迹加入到 Aut o C A D  的文件中去。
V ar Acadtextstyles, Acadtextstyle: OLE- V ariant;
// 定义文本样式及样式集对象变量
Acadtextstyles:=AcadDwg.Textstyle; // 获取当前文本样式集合对象 TextStyle Acadtextstyle:=Acadtextstyles.add ('New- StyleName');
// 加入新的 TextStyle
Acadtextstyle.fontfile:=fontpath; // 设置新 TextStyle 加的字体文件 AcadDwg.Activetextstyle:=acadtextstyle; // 设置新 TextStyle 为当前 TextStyle (4)操纵图形对象。Au t o C A D 的图形 对象分别包含在 M od el S p a c e Entit ie s Collec- tion 、PaperSpaceEntities Collection 和 Block 3 个对象中,它们可由函数 AddOb (j Parameter ) 创建,通过设置其属性以及使用相应方法 可以操作该对象。
(5)实现交互功能。Au to C A D 和应用
程 序 进 行 交 互 操 作 是 很 有 必 要 的。用 于
交互功能的函数都是 Utility 对象的方法。
下 面 的 代 码 是 交 互 绘 制 文 本 对 象 的 一 个 实例。
V ar AcadUtil:OLEV ariant; str:string; height:double; insertpoint,atext:Olecariant; AcadUtil:=AcadDwg.Utility;
str:=Ac a d Util.g e tst rin g (' 输入文本');
point ('输入插入点') height:=distance (vararrayref (in s ertp oint ),' 输入文本高度');
at e xt:=Ac a d D wg.m o d els p ac e.a ddt e xt (str, varrrayref (insertpoint ),height );
atext.updata;// 绘制文本对象 通过上面的方法,就很容易将用户签
2  实验结果
图 3 为通过二次开发,将电子签名轨 迹加到 AutoCAD 图纸中。
3  结束语
本文提供了一种使用 Delphi  二次开 发AutoCAD 的方法,经过实践证明了方法 的可行性。文档被签名
后,为了防止文档
不被修改,需要将电子手写签名与文档进 行绑定,使任何一点最细微的修改(即使
增加或减少空格)都会使签名的文档变为
无效。
参考文献:
[1] 杨建, 林在康.Au toCAD 14 中 Activex Auto-
mation 开发技术剖析[J ].微电脑世界,1997, (12). [2]郭帆勇,周克绳,林在康.AutoCAD (中文版) 二次开发技术[M ]. 北京:清华大学出版杜, 1999.
[3]TeixeiraS,pachecoX. Delphi5 开发人员指南 [M ]. 北京: 机械工业出版社,2000. [4]陶以政,何铁宁.Delphi 中自动存取MS-Office 文档对象应用研究[J ].计算机与现代化,2002, (1).
(责任编辑:杜能钢)
铁道第三勘察设计院 工程名称
设计
图号  复核
比例尺
专册(业)负责人
日期
室主任  第 册
处总工程师  项目总工程师
临沂市沂蒙路河特大桥工程 桥型布置图一 (  ) 设计