首先是开发工具的选择,对于CAD可以有多种方法进行二次开发以拓展其功能。第一大类是Lisp,使用Lisp进行开发,方便快捷,能迅速的学习掌握,投入使用,但缓慢的运行速度和有限的功能是Lisp的最大问题。基本上,Lisp适用于把现有命令组合成一个新命令来使用。第二大类是使用ActiveX和COM技术。对于熟悉VB、Delphi等语言的开发者来说,这是不错的选择。因为可以使用开发者所熟悉的各种语言,直接编写ActiveX程序。ACAD使用COM技术把数据传送给ActiveX程序。程序处理后再传回ACAD。这个过程有点像浏览器浏览网站的过程。这种方法在编写上比Lisp复杂,但速度更快,功能更强劲。但是在某些对速度要求相当高的运算和涉及CAD内部的应用上会显得力不从心。比如天正这种需要在CAD中自定义对象的程序,就不能用这种方法来开发。第三大类就是ARX开发。对应于C和C++,CAD提供了ARX和ObjectARX两种。目前AutoDesk已经停止了对使用C的ARX的支持,全面转向使用C++的ObjectARX,因而也就把他们统称为ARX。使用ARX,所编出的程序在载入后就与ACAD融为一体,完全自如的控制操作CAD本身。使用这种方式,困难度是可以想象的。本来就很复杂的C++,再配上复杂度不相上下的ObjectARX,要想真的写出可用的程序,还要深入了解CAD本身的结构。即使是开发很小的功能,也要有很多的工作要做。但这样的辛苦是得到的回报也是丰厚的。在密集应用时体现出的无可匹敌的速度让你倍感欣慰,毕竟那就是CAD本身啊。同时强大的功能也让你的想象力有了无限的发挥之处。你要知道AutoDesk公司开发CAD时,在完成了基本功能之后,剩下的功能基本都是用ARX完成的。著名的天正软件和模具设计软件MDT都是在CAD的基础上用ARX开发完成的。只要你想同时有足够的时间,你甚至可以把CAD变成浏览器、变成Excel、甚至变成魔兽争霸(对最后一点我保留看法)。当然,强大功能是有代价的,由于已经和CAD融为一体,一旦ARX程序由于错误而崩溃,CAD也会同时崩溃。这种情况就像皇帝手下的各级官员。Lisp是县令级的,职务低权力小,出了问题也没事。ActiveX属于州牧级别的,有一定权力,比较难当上。ARX就是垂帘听政的太后了,只要能控制住皇帝,想干什么都可以,但万一出了问题,谁都跑不掉。一朝天子一朝臣,二次开发工具和CAD的版本有一定的关系。Lisp程序可以不需改动的在各个CAD版本上运行,ActiveX对应不同的版本需要做些改动,ARX针对各个特定的版本都需要完全重新编译。基于各种考虑,我选择了ARX,于是版本问题也就浮现出来。
     由AutoDesk公司出品的AutoCAD系列软件,在目前市场上的主要版本有R12、R14、2000、2002、2002i、2004、2005。其中2000、2002、2002i、2004、2005的内部版本号分别是R15、R15.0.6、R15.0.7、R16、R16.1,从内部版本号可以更清楚的知道这些版本之间的关系。对应不同的CAD版本,需要使用不同版本的ObjectARX开发包。ObjectARX只能在VC下编译连接。不同版本的ARX还只能对应不同版本的VC。基本情况如下表所示:

CAD版本 ObjectARX版本 VC版本
CAD2000/2002 ObjectARX 2002 VC 6.0
CAD2004 ObjectARX 2004 VC 2002(即7.0)
CAD2005 ObjectARX 2005 VC 2003(即7.1)

其中,源代码可以完全一样,但必须在不同平台使用不同的开发包和库重新编译,否则要么无法生成,要么生成的无法载入。在这里,虽然AutoDesk官方声称 ARX2005应该用VC2003,但经过很多人的实践,只能用VC2002。这复杂的对应情况,完全是AutoDesk公司一手造成的,而且似乎没有改变的迹象,开发者只有接受的份。
弄清了这一点之后,也就能解释为什么先前我的程序不能加载了,那是for 2002的,用VC6和ARX2002编译的,必须用VC2002和ARX2004重新编译一遍。对此,我很是担心,因为当时在光盘市场上几乎已经没有VC2002,线上也很难找到下载点。而且我机器上已经有一套VC2003,如果要装2002,很可能会冲突,那我就要重装系统。一切还算顺利,费了很大的劲儿,终于在两个月后,我找到了一套VC2002。虽然盘片质量看起来已经有点不妙,但总算顺利的安装。成功的编译和使用使得这个程序可以正式得出现在同事们的面前。那大约是9月20日左右的事了。虽然程序很简陋,但主要功能齐备,也算差强人意吧。

CAD二次开发 -可恶的版本问题相关推荐

  1. CAD二次开发--CAD2007(.Net3.5环境)等低版本CAD二次开发在VS中无法捕获断点调试解决办法(CAD二次开发无法断点调试解决办法)

    目录 1.说明 2.解决办法 1.说明 在进行CAD二次开发的时候如果想进行断点调试,众所周知,在VS环境里设置断点后直接启动类库项目就好了,只需要在启动项属性里设置下"启动外部程序&quo ...

  2. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  3. CAD二次开发资料汇总

    欢迎加入建筑信息化开发交流群,获取开发资料 群号:711844216 一.背景 对工程出身的朋友来说,CAD就像一位朋友,常伴吾身,为了提高效率,于是小伙伴门开始尝试CAD二次开发,刚入门,资料去哪找 ...

  4. Delphi进行CAD二次开发教学(1)——基础学习:运行、新建、打开图形文件

    http://hi.baidu.com/piaoliuxia/blog/item/d61e03faed3bd18c9f514670.html 查看文章   [原创]Delphi进行CAD二次开发教学( ...

  5. 常用的CAD二次开发语言:AutoLISP, LISP是List Processor(表处理程序)的缩写,cad系统的第一代开发工具注意和eclipse(IDE编程环境,java实现的)

    常用的CAD二次开发语言: 1 AutoLISP 全名是LIST Processing Language,LISP是List Processor(表处理程序)的缩写,cad系统的第一代开发工具,是一种 ...

  6. CAD二次开发(C#) 第一节

    前言 由于工作需要,最近在学习二次开发,将其记录于此,以便日后查看. 语法 涉及"特性","进程"知识点,需要有所了解 #region CAD二次开发--第一节 ...

  7. cad二次开发c#学习记录1——hello carrot!

    准备工作:安装Autocad和VS2015.过程略.购买参考书<Autocad开发基础与实例教程c#版>,个人感觉看完这本书基本可以做些自己相关的实用的cad二次开发了. 打开vs,新建- ...

  8. 【CAD二次开发】实现双击实体的响应

    一.基本双击响应实现 通过向导在VS中创建MFC支持的新项目: 项工程中添加普通CDoubleClick类, 基类选择AcDbDoubleClickEdit: 类的头文件为: class CDoubl ...

  9. CAD二次开发--0.开发环境搭建及CAD层次结构

    本文章用于CAD二次开发学习工作总结,参考李冠艺著编的<深入浅出AutoCAD.NET二次开发>. 一.开发前准备: 首先开发前默认有一定的C#编程经验. 对CAD有一定的了解. 安装好V ...

最新文章

  1. Spring Boot 集成 RabbitMq 实战操作(二)
  2. 在Centos中yum安装和卸载软件的使用方法
  3. 与number_format函数有关的一个bug?
  4. python terminal调试_python执行命令行调试工具pdb
  5. ux.form.field.KindEditor 所见所得编辑器
  6. No package ‘mate-settings-daemon‘ found
  7. 在Qtopia中添加国际化支持
  8. html返回底部代码,返回页面顶部及去页面底部的js实现代码
  9. 非常经典的C语言知识点总结!
  10. 为什么老实人很难当上领导?因为他们身上有这个致命弱点
  11. PGMIntro概率图模型
  12. Linux 串口编程学习记录(termios.h)
  13. 建站手册-网站构建:万维网联盟(World Wide Web Consortium)
  14. python入门与实战--ENS未注册域名批量查询
  15. 自定义Xshell颜色主题Color Schemes
  16. scons脚本应用笔记
  17. 2019 中科院 JCR 推荐 期刊 列表 计算机部分
  18. 我想知道怎么提升csgo枪法
  19. gpgpu学习推荐书籍
  20. 【Python】PyQt5.QtWidgets模块常用函数和类(使用参考源码)

热门文章

  1. 华为AREngine背景图变形(图片比例不正确)的问题
  2. 27_ue4进阶末日生存游戏开发[计时器]
  3. 081 关于微信支付的回调Notify_url
  4. C#中的JSON序列化方法
  5. C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)
  6. Forbidden Forest 错落森林
  7. Spring框架总结六---自动装配
  8. 威高集团无菌自毁型固定剂量疫苗注射器投产,构筑疫苗注射器安全屏障
  9. 全球与中国休闲裙市场深度研究分析报告
  10. Java枚举Enum 与字符串的比较