用Delphi进行AutoCAD二次开发的研究
第21卷2001年5月
文章编号:1001-9081(2001)05-0080-02
计算机应用ComputerApplicationsVol.21,No.5May,2001
用Delphi进行AutoCAD二次开发的研究
黄 玲,李陶深
(广西大学计算机与信息工程学院,广西南宁530004)
摘 要:本文论述了以Delphi作为开发工具,使用AutoCAD2000的ActiveAutomation提供的接口来访问和控制AutoCAD对象的具体方法和实例。
关键词:AutoCAD;Delphi;ActiveXautomation中图分类号:TP311.52 文献标识码:A
1 引言
AutoCAD2000继承了AutoCAD一贯的开放灵活的风格,
者。自动化服务器中包含了一系列的暴露对象(Exposed
Objects),这些对象又包含了一些函数,被称为方法与属性。方法是自动化对象的一些函数,它们是提供给客户程序的外部公共成员函数。属性是自动化对象的一些命名特征,即对象的一些公有数据域。
AutoCAD2000中的ActiveAutomation所提供的编程接口,使用户很容易地用各种ActiveX客户编程语言(如VB、Delphi等)来定制AutoCAD。它可用于在Windows环境下的应用程序操作AutoCAD中的对象,如在AutoCAD中建立视图、指定和提取扩展数据、向外设输出图形、为AutoCAD增加专业对象等。采用VB、Delphi等编程语言,可以实现Windows平台上诸应用程序的无缝连接,从而可以将所有程序都集成在统一的操作环境中。
对于用Delphi开发AutoCAD自动化程序而言,ActiveAutomation技术使得AutoCAD被登录为一个Delphi可以访问的对象。该对象还包含了具有层次结构的各种子对象,它们都有相应的方法和属性供用户调用。Delphi通过访问AutoCAD的这些绘图对象和非绘图对象,从而实现特定的功能。AutoCAD2000的对象模型如右图所示,最高层对象为AutoCad.Application,其属性反映了AutoCAD主应用窗口的属性,并含有两个子对象Preference和Document。Preference子对象等价于AutoCAD的Preference对话框,包含了AutoCAD的系统参数设置。Document子对象包含多级的子对象,是图形文
向用户提供了传统的面向过程的开发工具,如:ADS/ADXRX
(结构化的面向过程的开发工具)、Autolisp(解释型的过程语言),同时也推出了以面向对象技术为主的全新二次开发工具,如:ObjectARX(面向对象的C++开发工具)、ActiveXAutomation(面向对象的解释型开发工具)、VisualLisp(面向对象的Lisp开发环境)等。其中,ActiveXAutomation丰富了
AutoCAD的API,为AutoCAD进行二次开发开辟了新的途径,
使程序员可以使用各种面向对象的高级开发语言,实现对AutoCAD的二次开发。Delphi是Inprise公司推出的基于ObjectPascal语言的可视化集成开发工具,是RAD最完美的体现。AutoCAD2000在其发行的CD盘的随机文档中介绍了大量用VB和Excel写的ActiveXAutomation的例子,而用Delphi写的ActiveXAutomation程序则在公开发表的文献中极少述及。笔者在这方面进行了有益的探索和实践,实现了Delphi通过ActiveAutomation来驱动AutoCAD以完成其二次开发。
2 ActiveAutomation技术简介
ActiveAutomation技术是微软提供的API和一组规范,具有组件对象模型(COM)的特征。它由客户程序和服务器程序
组成,客户程序是操纵者与控制者,自动化服务器是被控制
收稿日期:2000211208 基金项目:广西自然科学基金项目(桂科自9912009)资助 作者简介:黄玲(1975-),女,广西南宁人,助教,硕士,主要研究方向:分布式数据库、CAD; 李陶深(1957-),男,广西邕宁人,教授,主要研究方向:CAD、工程数据库.
以采用MDX语句很容易地进行,MDX语句是专门用于对多维对象进行访问的语言,它沿袭了SQL语言的形式并对其进行了扩展。另外用户可以使用Excel辅助分析,对数据进行切片、切块、上钻、下钻、旋转等操作,并可以通过图形、报表的形式直观地呈现。
定的推广价值。
参考文献
[1] BansalSK.
Realworldrequirementsfordecisionsupport—
ImplicationsforRDBMS[A].ProcofACMSIGMOD′95[C],1995.[2] 王珊,等.数据仓库技术与联机分析处理[M].北京:科学出版
社,1999.
[3] RogerJennings.VisualBasic6数据库开发人员指南[M].北京:机
4 结束语
本文所提出的OLAP解决方案采用了OLAP引擎,并根据用户需要定制数据抽取、分析程序,该方案完全能够满足企业的OLAP要求,由于可以进行二次开发,可以满足用户的特殊要求,并具有灵活、投资小的优点,非常适合国内企业,具有一
械工业出版社,1999.
[4] 杨光,张雷,艾波.数据仓库实施策略[J].计算机应用,1999,19
(9):4-7.
[5] 张凤荔,葛晓峰,卢显良.基于数据仓库的综合查询系统的设计
与实现[J].电子科技大学学报.1999,28(2).
第5期黄玲等:用Delphi进行AutoCAD二次开发的研究 81
件的所有对象集合,使用户可以实现图形的二维和三维处理
以及人机交互、打印输出等功能
。性和使用其方法,可以在应用程序中操纵这些对象。下面的
代码可以新增一个TextStyles并设为当前值。
VarAcadtextstyles,Acadtextstyle:OLEVariant;
//定义文本样式及样式集对象变量
Acadtextstyles:=AcadDwg.Textstyles;
//获取当前文本样式集合对象TextStyles
);Acadtextstyle:=Acadtextstyles.add(′NewStyleName′//加入新的TextStyle
Acadtextstyle.fontfile:=fontpath;//设置新TextStyle的字体文件AcadDwg.Activetextstyle:=Acadtextstyle;
//设置新TextStyle为当前TextStyle
3.4 操纵图形对象
AutoCAD的图形对象分别包含在ModelSpaceEntitiesCollection、PaperSpaceEntitiesCollection、Block三个对象中,它们可由函数AddObj(Parameter)创建,通过设置其属性以及使用
相应方法可以操作该对象。下面的代码可以在当前的图形文件中生成直线。
VaraLine,Point1,Point2:OLEVariant;//定义直线及点对象变量Point1:=VarArrayCreate([0,2],VarDouble);//设置直线起点坐标Point1[0]:=150;Point1[1]:=150;Point1[2]:=0;
Point2:=VarArrayCreate([0,2],VarDouble);//设置直线终点坐标Point2[0]:=200;Point2[1]:=200;Point2[2]:=0;
aLine:=AcadDwg.ModelSpace.AddLine(VarArrayRef(Point1),VarArrayRef(Point2));aLine.Update;//在ModelSpace上生成直线
AutoCAD2000的对象模型
3 用Delphi开发AutoCAD自动化程序的方法
3.1 对AutoCAD的ActiveXAutomation初始化
在Delphi环境下进行AutoCAD的ActiveXAutomation设计
需要进行三方面的初始化:一是由uses语句引用的ComObj单元,它是Delphi应用程序中处理ActiveXAutomation的关键代码;二是对OleVariant类型变量的引用,因为ActiveXAutomation的代码中广泛使用Variant;三是获取AutoCAD的Application和Document对象,用来管理AutoCAD应用程序和操纵当前活动图形文件。下列代码可进行必要的初始化工作:
usesComObj;//引用ComObj单元varAcad,AcadDwg:OLEVariant;
//定义Application和Document对象变量
);Acad:=GetActiveOLEObject(′AutoCad.Application′
//获取Application对象
AcadDwg:=Acad.ActiveDocument;
//获取AutoCAD当前活动文档Document对象
3.5 实现交互功能
用户在AutoCAD和应用程序进行交互操作是很有必要的。用于交互功能的函数都是Utility对象的方法。下面的代码是交互绘制文本 …… 此处隐藏:3974字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教学研究]2012西拉科学校团少队工作总结
- [教学研究]建筑工程公司档案管理制度
- [教学研究]小学数学人教版六年级上册圆的周长和面
- [教学研究]ERP电子行业解决方案
- [教学研究]钢支撑租赁合同范本
- [教学研究]预应力自动张拉系统用户手册Rev1.0
- [教学研究]MOOC课程:金瓶梅人物写真(每章节课后
- [教学研究]追加被执行人申请书(适用追加夫妻关系)
- [教学研究]2014年驾考科目一考试最新题库766
- [教学研究]2013-2014学年度九年级物理第15章《电
- [教学研究]新版中日交流标准日本语初级下26课-客
- [教学研究]小导管注浆施工作业指导书
- [教学研究]一般财务人员能力及人岗匹配评估表
- [教学研究]打1.2.页 小学一年级暑假口算100以内加
- [教学研究]学习贯彻《中国共产党党和国家机关基层
- [教学研究]2012年呼和浩特市中考试卷_35412
- [教学研究]最简易的电线电缆购销合同范本
- [教学研究]如何开展安全标准化建设
- [教学研究]工作分析与人岗匹配
- [教学研究]2016-2017学年高中历史第七单元现代中
- 山东省义务教育必修地方课程小学三年级
- 台湾宜兰大学互联网交换技术课程 01_In
- 思想品德:第一课《我知我家》课件(人
- SAR合成孔径雷达图像点目标仿真报告(附
- 利辛县“十三五”规划研究报告
- 2015-2020年中国手机APP行业市场发展趋
- 广告策略、创意表现、媒体方案
- 企业如何申请专利的的几点思考
- 《中国教育简史》网上作业
- 高中历史第二单元西方人文精神的起源及
- 年终晚会必备_精彩的主持稿_精心整理_
- 信息工程专业自荐书
- 2019高考历史人教版一轮练习:第十二单
- JAVA俱乐部管理系统软件需求规格说明书
- 2016-2021年中国小型板料折弯机行业市
- (人教新课标)六上_比的基本性质课件PPT
- 辽宁省公务员考试网申论备考技巧:名言
- 神经阻滞麻醉知情同意书
- 施工企业信息填报、审核和发布的相关事
- 初一(七年级)英语完形填空100篇




