[讨论]CAD开发:LISP、VB/VBA、ARX哪个更好?
经常有人在讨论LISP、VB/VBA、ARX编程哪个更好。三者各有优缺点,要说哪个更好,只有三种都较熟的人最有发言权。具体到个人,则是仁者见仁、智者见智。你觉得呢? 本帖最后由 作者 于 2005-2-10 9:58:05 编辑 <br /><br /> 为了工作和课题,着实研究了一番acad的二次开发,看到这个问题不吐不快。<BR> 从acad V2.18开始,autolisp一直伴随着acad走到到今天,与acad的关系可以说两小无猜、亲密无间。autolisp语言规则简洁,能够直接访问图形数据,对于简单的程序,如图形对象的交互操作,acad命令的组合、重复执行,autolisp可以说是干脆直接、手到擒来。用其开发的程序向上兼容性好(在低版本acad平台上开发的程序通常可以直接运行于更高版本的平台上)。<BR> 但autolisp不是一种面向对象的语言,仍然沿用自顶而下的设计思想。解释型语言,运算速度慢,不适用于密集型计算。相对于其它高级语言,autolisp语言的语法结构有较大的差异,令初学者难以适应。其对话框窗口控件单一,与用户交互功能太弱,与VB、VC、Delphi等可视化编程语言相比,autolisp的DCL简直就是小儿科,DCL至今无法实现可视化编程。<BR> auotlisp发展到visual lisp(vlisp一方面指的是集成开发环境,另一方面指扩充加强后的autolisp语言),虽然在对话框设计方面没有设么改进(简直是愧对"Visual"一词),但是大大扩展了autolisp函数,增加了对ActiveX的支持,具有了与其它程序通信的能力,增加了反应器,增强了交互性,实现了代码的伪编译。<BR> 从R14.01版acad开始支持VBA。VBA才是完全真正意义上的可视化编程,拥有数量丰富、功能完善的窗体控件,面向对象模块化编程、强大的数据库访问管理功能,同支持VBA的其他应用程序(如word、execel等)数据共享交互能力,创建自己的acad工具条。并且,VB拥有广泛的“群众基础”,如果是一个VB爱好者,将不需要在语言本身上花费太多工夫去学习适应。<BR> 但是,VBA是通过AutoCAD ActiveX Automation接口与AutoCAD内部对象建立联系的,个人认为Activex对象结构并不是很适用于用来描述acad的动作行为,例如,直线对象拥有拷贝、删除等方法,长度、角度等属性,被修改等事件,假如这还算容易理解,而求两条支线的交点,用autolisp描述为“求两条直线的交点,参数为直线1、直线2”,即思考的核心是求交点,作为参数的两条直线是平等的;而用VBA描述为“直线1对象的求交点方法,参数为直线2”,思考的核心为直线1。因为直线对象拥有求交点的方法,所以我们实现了这个目的,如果没有呢?也许我们还没有深刻的适应理解面向对象的编程方法,但至少这种方法与我们操作ACAD绘图时的思考习惯是不相符的。<BR> 从另一个方面来说,ActiveX虽然不能完美描述acad动作行为,但是为acad与其他windows应用程序的沟通开辟了广阔的途径,理论上支持ActiveX的编程语言,如VB(VB.net)、Delphi、Java都可以用来对acad进行二次开发,vlisp也提供了对ActiveX的支持。本人下一目标即是尝试使用Delphi开发acad。<BR> 除了在acad图形操作方面明显不足,大多数方面vba长于autolisp,应当是代表着今后发展方向。<BR> arx目前还没有涉及,但原理大概是懂得的。arx是以C++为基础的面向对象开发环境及应用程序接口,只支持Microsoft Visual C++编译器。arx应用程序与ACAD共享地址空间,之间的通信更加直接高效,但是程序一旦存在缺陷,易引发AutoCAD甚至是系统崩溃。在不同版本ACAD平台上开发的ARX程序几乎不能通用。其对使用者的素质要求较高,首先必须熟练掌握C++,并对操作系统有一定了解,是作为专业开发的首选工具。arx功能强大,可以完成前两种方法无法胜任的任务,适于开发大规模、综合性应用程序。花了点时间写了这么多字,希望对初学者有所帮助。
再次复读半年前的写下的东西,又有一点心得 AutoCAD使用到一定阶段,可能不再醉心于那些奇技淫巧,画图常用的也就十几个、二十来个命令,有人认为AutoCAD只是一个绘图的工具而已,但是,几乎没有人为画图而画图,我们要做的是如何将自己专业的设计计算部分与图形结合起来,如何将数据库与图形结合起来,只有这样,AutoCAD才不会仅仅被当做一个绘图工具,才会真正成为“计算机辅助设计软件”。个人认为在这个应用层次上,界面丰富、与用户交互能力强大、支持面向对象的VBA比VLISP更能满足开发者的需求。 LISP+VBA+VB我觉得最好!:) VB/VBA不太合适了,VB.NET都出来两年了,比VB增加了很多功能,vb.net/vba更加适应于cad二次开发。 <A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=2202" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=2202</A>
这是我在2002年写的,不知道为什么打不开了。 刚开始时 lisp和vba比较简单 上手快 vba应该说功能还是很强大的 bluemoon发表于2004-3-4 9:59:00static/image/common/back.gif刚开始时 lisp和vba比较简单 上手快 vba应该说功能还是很强大的
<BR>ARX功能强大是有目共睹的,但VBA说强大似乎有些勉强,比较于VLISP,VBA除了界面上比LISP强一些外,功能上似乎不会比VLISP强 我向往ARX. 但是我不會. 我只會簡單的LISP, 但我認為如會ARX的可以開發出更棒的功能. 我喜欢ARX和VBA,VBA看似简单,其实也复杂!
ARX难学!复杂而有趣! 我没有用过VBA LISP,以老东家那边用了一年半的ARX,现在用SDS(一个和ADS一样的东西),感觉ADS和ARX差太远了,开发起来很麻烦,听说ADS和LISP差不多,所以我觉得LISP和ARX应该也是不在一个层次上的,如果VBA和LISP差不多的话,那么它也一定和ARX没有可比性。 条条大路通罗马嘛!