明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 41702|回复: 131

[讨论]CAD开发:LISP、VB/VBA、ARX哪个更好?

  [复制链接]
发表于 2004-3-3 23:11:00 | 显示全部楼层 |阅读模式
经常有人在讨论LISP、VB/VBA、ARX编程哪个更好。三者各有优缺点,要说哪个更好,只有三种都较熟的人最有发言权。具体到个人,则是仁者见仁、智者见智。你觉得呢?
发表于 2004-5-29 19:02:00 | 显示全部楼层
本帖最后由 作者 于 2005-2-10 9:58:05 编辑

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

使用道具 举报

发表于 2004-3-3 23:46:00 | 显示全部楼层
LISP+VBA+VB我觉得最好!:)
发表于 2004-3-4 08:33:00 | 显示全部楼层
VB/VBA不太合适了,VB.NET都出来两年了,比VB增加了很多功能,vb.net/vba更加适应于cad二次开发。
发表于 2004-3-4 08:53:00 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=2202 这是我在2002年写的,不知道为什么打不开了。
发表于 2004-3-4 09:59:00 | 显示全部楼层
刚开始时         lisp和vba比较简单 上手快 vba应该说功能还是很强大的
发表于 2004-3-4 11:40:00 | 显示全部楼层
bluemoon发表于2004-3-4 9:59:00刚开始时 lisp和vba比较简单 上手快 vba应该说功能还是很强大的

ARX功能强大是有目共睹的,但VBA说强大似乎有些勉强,比较于VLISP,VBA除了界面上比LISP强一些外,功能上似乎不会比VLISP强
发表于 2004-3-4 13:25:00 | 显示全部楼层
我向往ARX. 但是我不會. 我只會簡單的LISP, 但我認為如會ARX的可以開發出更棒的功能.
发表于 2004-3-4 14:10:00 | 显示全部楼层
我喜欢ARX和VBA,VBA看似简单,其实也复杂!


ARX难学!复杂而有趣!
发表于 2004-3-4 18:09:00 | 显示全部楼层
我没有用过VBA LISP,以老东家那边用了一年半的ARX,现在用SDS(一个和ADS一样的东西),感觉ADS和ARX差太远了,开发起来很麻烦,听说ADS和LISP差不多,所以我觉得LISP和ARX应该也是不在一个层次上的,如果VBA和LISP差不多的话,那么它也一定和ARX没有可比性。
发表于 2004-3-4 22:07:00 | 显示全部楼层
条条大路通罗马嘛!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 21:00 , Processed in 0.200871 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表