CAD二次开发 -可恶的版本问题

来源:互联网 发布:手机股票预警软件 编辑:程序博客网 时间:2024/04/28 10:18
首先是开发工具的选择,对于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/2002ObjectARX 2002VC 6.0CAD2004ObjectARX 2004VC 2002(即7.0)CAD2005ObjectARX 2005VC 2003(即7.1)
其中,源代码可以完全一样,但必须在不同平台使用不同的开发包和库重新编译,否则要么无法生成,要么生成的无法载入。在这里,虽然AutoDesk官方声称 ARX2005应该用VC2003,但经过很多人的实践,只能用VC2002。这复杂的对应情况,完全是AutoDesk公司一手造成的,而且似乎没有改变的迹象,开发者只有接受的份。
弄清了这一点之后,也就能解释为什么先前我的程序不能加载了,那是for 2002的,用VC6和ARX2002编译的,必须用VC2002和ARX2004重新编译一遍。对此,我很是担心,因为当时在光盘市场上几乎已经没有VC2002,线上也很难找到下载点。而且我机器上已经有一套VC2003,如果要装2002,很可能会冲突,那我就要重装系统。一切还算顺利,费了很大的劲儿,终于在两个月后,我找到了一套VC2002。虽然盘片质量看起来已经有点不妙,但总算顺利的安装。成功的编译和使用使得这个程序可以正式得出现在同事们的面前。那大约是9月20日左右的事了。虽然程序很简陋,但主要功能齐备,也算差强人意吧。
原创粉丝点击