2023年11月30日发(作者:)
0 前言
以 Object pascal 语言为基础,是完全面向
对象(OOP)的结构化编程语言,具有完整
的基于组件设计与可视化的开发环境,可
让 程序 设计 员快速 生成 程序 原型 及用户
界面,是开发 AutoCAD 的理想工具。
ActiveX Automation 由 OLE 自动化技
术扩充和发展而成,采用客户/ 服务器模
式,允许一个应用程序操纵另一个应用程
示,最高层对象为 ation,其
属性反映了 AutoCAD 主应用窗口的属性,
很 多设 计 单位 为 了提 高 设计 绘 画效
率,都采用 AutoCAD 作为绘图工具。当一
张图纸绘好后,设计者应对所绘的图纸负
责。传统的方法是设计图纸完成后,只需
在 图纸 签 名处 用 笔签 名 即可。而 在 电脑
中,如果采用这种方法,笔迹信息很容易
并含有两个子对象Preference 和 Document。
Preference 对象等价于 AutoCAD 的 Prefer-
ence 对话框,包含了 AutoCAD 的系统参数
设置。Document 子对象包含多级 的子对
象,是图形文件的所有对象集合,使用户
可以实 现图 形的 二维 和三维 处理 以及 人
被盗用。在办公自动化中,Word 文档也有 机交互、打印输出等功能。
序中的对象。操纵程序称为客户程序,被
同样的问题。要解决上述问题,一是要解
操 纵 程序 称 为服 务 程序。客 户程 序 可以
决 如何将 电子 手写 签名 轨迹嵌 入这 种类
访问和操纵服务程序中暴露的对象(Exposed
型的文档中,即对 AutoCAD 二次开发问
Objects)的属性和方法,使得 AutoCAD 可
题;二是要解决签名不被盗用,即签名与
以 被许 多不 同的编 程环 境和 其它 应用程
文档的绑定问题。
序访问(如图 1)。
电 子手 写 签名 认 证技 术 包括 签 名采
集系统、签名认证系统。其原理是成年人
的签名都是独特的,并且是比较稳定的,
在较短时期内不会随意改变。在 AutoCAD
C++
Visual Basic Text
中,设计者设计完图纸后,需要在电子图
Jaka
MS Word VBA
De 1phi
纸 上签 上 自己 的 电子 手 写签 名。如 何使
AutoCAD VBA A
Excel VB
签名不被别人盗用是 AutoCAD 设计者所
关注的问题,也是当前电子手写签名研究
AutoCAD Activex 对象
中的一个重要课题。
AutoCAD 应用程序(AutoCAD,Application
)
图 1 AutoCAD 服务器模型
对于用 Delphi 开发 AutoCAD 自动化
程 序 而 言,ActiveX Automation 技 术 使得
AutoCAD 被登录为一个Delphi 可以访问的
1 Delphi 中的 AutoCAD 二次开发技
对 象。该 对象 还包 含 了具 有 层次 结 构的 菜单中的 Import Type Library 工具,可以导
术
各 种 子对 象。它们 都 有相 应 的方 法 和属
性供用户调用。Delphi 通过访问 AutoCAD
1.1
AutoCAD Automation 技术
的 这些 绘图 对象和 非绘 图对 象实 现特定 会增加标记为 AutoCAD TLB 的一页,随后
Delphi 是 Inprise 公司推出的一种方便
的功能。AutoCAD 的对象模型如图 2 所
快捷的 Windows 应用程序开发工具。Delphi
AutoCad. App1ication
3dface
ModeSpace
itycollection Ent
Preferences
3dsolid
PaperSpace
Arc
Document
Entitycollection
Line
Circle
Block collection
Block
Utility
图 2 AutoCAD 对象模型
1.2 使用 Delphi 二次开发 AutoCAD 的方
法
类型库文件是支持 ActiveX 技术的应
用程序。在类型库文件中,定义了可以被
客户程 序访 问和 操纵 的对象 类型 以及 这
些对 象 的属 性 和方 法。类型 库 文件 的 文
件名一般为:TLB,如 AutoCAD 的类型库
文件为:Auto. TLB。通过 Delphi 的 Project
入类型库文件,将文件转换成 Delphi 的单
元文件格式,这时在 Delphi 的编辑窗口中
图形学与辅助设计
在 Delphi 的 Code Explorer 窗口中,用户可
以方便地浏览 AutoCAD 的 ActiveX 对象及 合对象)等非绘图
Style(s 标注样式集
临沂市沂蒙路河特大桥工程
桥型布置图一 设计
对象,通过访问其 法,这些对象的属性和方并可以了解调用
属性和使用方法, 这些属性和方法时可用的参数及形式。在
可 以 在 应 用 程 序 开发程序时还可以引用该单元文件,从而
中操纵这些对象。 可 以使用 库中 声明 的变 量类型 和常 量定
下 面 的 代 码 可 以
新 增 一 个 Text- 动完成功能减少错误,编译程序时函数、
Styles 并设为当前
值。
( )
义。在编写程序时可以利用 Delphi 的自
方法和属性可以得到自动检查。
(1)对 AutoCAD 的 Activex Automation 初
始化。在 Delphi 环境下进行 AutoCAD 的 Ac-
铁道第三勘察设计院 工程名称
设计
复核
专册(业)负责人
室主任
处总工程师
项目总工程师
比例尺
图号
日期
图 3 AutoCAD 图纸中的电子签名轨迹
第 册
tivex Automation 设计需要进行 3 方面的初始
化:
Var Acadtextstyles, Acadtextstyle: OLE-
uses 语句引用 Comobj 单元,它是 Delphi
Variant;
应用程序中处理 Activex Automation 的关键
// 定义文本样式及样式集对象变量
代码;
Acadtextstyles:=yle;
获取AutoCAD 的 Application 和 document
// 获取当前文本样式集合对象 TextStyle
对象,用来管理 AutoCAD 应用程序和操纵
当前活动图形文件。
Acadtextstyle:= 'New-
(
下列代码可进行必要的初始化工作:
StyleName';
)
uses ComObj;
// 加入新的 TextStyle
// 引用 ComObj 单元
le:=fontpath;
var Acad,AcadDwg:OleVariant;
// 设置新 TextStyle 加的字体文件
// 定义 Application 和 document 对象变量
textstyle:=acadtextstyle;
Acad:=GetActiveOleObject 'AutoCAD.
(
// 设置新 TextStyle 为当前 TextStyle
Application';
)
(4)操纵图形对象。AutoCAD 的图形
对象分别包含在 ModelSpace Entities Collec-
// 获取 Application 对象
tion、PaperSpaceEntities Collection 和 Block 3
AcadDwg:=Document;
个对象中,它们可由函数 AddOb(j Parameter)
//获取AutoCAD 当前活动文档Document
创建,通过设置其属性以及使用相应方法
对象
可以操作该对象。
(2)获取和设置 AutoCAD 系统变量。
当需要获取并修改 AutoCAD 的系统变量
(5)实现交互功能。AutoCAD 和应用
时,可使用 Document 对象的以下 2 个方法:
程 序 进 行 交 互 操 作 是 很 有 必 要 的。用 于
交互功能的函数都是 Utility 对象的方法。
RetVal:=ObjDocument. GetVariable Sys-
(
下 面 的 代 码 是 交 互 绘 制 文 本 对 象 的 一 个
Name:String;
)
实例。
// 返回系统变量 sysname 的当前值
Var AcadUtil:OLEVariant;
ObjDocument. SetVariable SysName:
(
str:string; height:double;
string,SysValue;
)
insertpoint,atext:Olecariant;
// 设置系统变量 SysName 的当前值为
新值 SysValue
AcadUtil:=y;
使用这两个方法时需注意GetVariable
str:=AcadUtil.getstring' 输入文本';
()
函数返回值和 SetVariable 函数中参数 sys-
insertpoint:nt'输入插入点'
()
Value 的类型随着系统变量的不同而变化,
height:=tance vararrayref
(
例如多点线线宽返回实数、当前颜色返回
())
insertpoint,' 输入文本高度';
整数等。
atext:=AcadDwg.modelspace.addtext str,
(
(3)操纵非图形对象。AutoCAD 中含
varrrayrefinsertpoint,height;
())
有如 TextStyle(s 文本样式集合对象)和 Dim-
;// 绘制文本对象
通过上面的方法,就很容易将用户签
名的笔迹轨迹加入到 AutoCAD 的文件中去。
2 实验结果
图 3 为通过二次开发,将电子签名轨
迹加到 AutoCAD 图纸中。
3 结束语
本文提供了一种使用 Delphi 二次开
发AutoCAD 的方法,经过实践证明了方法
的可行性。文档被签名后,为了防止文档
不被修改,需要将电子手写签名与文档进
行绑定,使任何一点最细微的修改(即使
增加或减少空格)都会使签名的文档变为
无效。
参考文献:
[]
1
杨建, 林在康.AutoCAD 14 中 Activex Auto-
mation 开发技术剖析J.微电脑世界,1997,
[]
()
12.
[]()
2郭帆勇,周克绳,林在康.AutoCAD中文版
二次开发技术M. 北京:清华大学出版杜,
[]
1999.
[]
3TeixeiraS,pachecoX. Delphi5 开发人员指南
[][]
M. 北京: 机械工业出版社,2000. 4陶以
政,何铁宁.Delphi 中自动存取MS-Office
文档对象应用研究J.计算机与现代化,2002,
[]
()
1.
(责任编辑:杜能钢)


发布评论