面向对象编程技术在AutoCAD程序开发中的应用研究.pdfVIP

面向对象编程技术在AutoCAD程序开发中的应用研究.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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:

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档