- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象编程技术在AutoCAD程序开发中的应用
刘斌 任爱珠
(清华大学土木工程系)
[提要I本文论述了如何将面向对象编程技术by用到AutoCAD程r{开发中,并给出了几个应用类的
原型声明、类的实现及使用方法.
AutoCAD是目前世界上应用最广泛的微机CAD软件平台,它取得成功的最主要原因是
它具有开放的体系结构。AutoCAD允许用户和开发者在儿乎所有方面对其进行扩充和修
改,以最大限度地满足用户的特殊要求。AutoCAD最强有力的扩充手段就是高级语言编程。
ADS(AutoCADDevelopmentSystem)是AutoCAD从RI1.0开始提供的应用C语言开发应
用程序的系统,它充分利用了C语言的结构化编程手段。从R13.0开始,AutoCAD提供了
更为高级的开发工具ARX(AutoCADRuntimeExtension),它以C+千为基本开发语言,具
备了面向对象编程的诸多特性。在ADS与ARX之间,AutoCAD还提供了称为ADSRX的编程
手段和程序库,实现了ARX对ADS程序的兼容。
如今,随着面向对象编程技术的日趋成熟和 C++语言的日益普及,面向对象编程的封
装性、继承性和多态性,内部功能的高效实现以及代码的可重用性等许多优点,越来越
受到厂大开发人员的青睐。遗憾的是 ADS和 ADSRX的程序库都不是面向对象的,它们只
是提供了C方式的编程接G,ARX虽然以C++语言为基础,井提供了一套C++的类程序库,
但是应用程序与AutoCAD的接口仍然是C方式的。另外ADS的对话框处理函数即使在ARX
中也是C方式的,它没有提供相应的ADS对活框类。这不利于充分利用和发挥面向对象
编程的优势。笔者经过实践,成功地将面向对象编程技术应用到了AutoCAD的程序开发
中,创建了ADS应用类、ADSRX应用类、ARX应用类和ADS对话框类,从而能够充分发挥
面向对象编程的优势,大大方便了AuotCAD的二次开发。下面对它们做一些介绍。
一 ADS应用类
虽然ADS程序库是C方式的函数库,但是在C++中却能够以C方式来调用这些函数,
这给了我们建立ADS应用类,引入面向对象编程的机会。不过,这需要在头文件中将ADS
库函数声明为外部 C函数 (externC{ADS库函数原型}),实际上标准ADS头文件己经
考虑到了这一点,己经做了上述声明 注〔:R12中的adsdIg.h文件井没有做这样的声明,
因此需要开发者自己去修改这个文件)。
下面给出ADS应用类(AdsApp)的原型声明和类的实现,并在main()函数中建立了ADS
应用类的一个对象 ((ADS应用实例),该应用类定义了一个命令HELLO,它在AutoCAD的
Command:提示符 卜打印出Hello,ADS!o
AdsApp类的原型声明:
classAdsApp
#1defineELEMENTSa(rray)(sizeofa(rray)/sizcof(a(rray):。〕))
private:
ISO
staticstructfunc_entry
{
char*func_name;
int(AdsApp::*func)(void)
}functable[1:
intloadfuncs(void);
intdofunc(void);
intcmd_hello(void);
public:
念公siAdppRun(in(乏o。alrd)gv:char**argv)
AdsApp类的实现:
structAdsApp::func_entryAdsApp::functable[] }(C:hello,AdsApw :cmdhello)):
AdsApp::AdsApp(intargv,char**argv)
J
ads_init(argc,argv);
}
voidAdsApp::Run(void)
{
shortscode=RSRSLT:
while(scode==RSRSLT)
{
srwitch(ads一link(scode))
caseRQXLOAD:
您可能关注的文档
最近下载
- 新人音版二年级音乐下册优秀教学设计《共产儿童团歌》教案.doc VIP
- 肝硬化诊治指南2025年.docx
- 初中数学新人教版八年级上册13综合与实践 确定匀质薄板的重心位置教学课件2025秋.pptx VIP
- 08【人教版英语字帖】八年级上册单词表衡水体字帖(新目标含音标).pdf VIP
- 2023年10月自考06089劳动关系与劳动法押题及答案.pdf VIP
- 新教科版小学科学实验目录五年级上册.docx VIP
- 合理用药用药班会PPT课件.pptx VIP
- 结构设计弯矩二次分配法计算(表格自带公式).xls VIP
- 规范言行从我做起主题班会.pptx
- PanelView Plus 7 Performance 终端用户手册.pdf VIP
文档评论(0)