明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 莫名

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

  [复制链接]
发表于 2004-5-17 14:15:00 | 显示全部楼层
想学VBA开发inventor,可是不知道如何下手。没底子,哎!!
发表于 2004-5-18 12:49:00 | 显示全部楼层
我觉得这要因人而宜,我是搞设计的,主要想为自己的工作带来方便做一些程序,vlisp相对来说就比较适合。
发表于 2004-5-18 13:05:00 | 显示全部楼层
lisp 要学多久 啊?
发表于 2004-5-22 21:00:00 | 显示全部楼层
刚开始我用LISP,但VBA出来后我就喜欢上了,她最大的优点是简单易学,而且功能强大。建议不是专业的程序员,只是对CAD二次开发感兴趣的朋友最好用她!
发表于 2004-5-23 21:21:00 | 显示全部楼层
新手上路…各位同志:为执行vba开发的程序时只要使用平移,窗口缩放等cad命令就会跳出程序???请赐教!!!
发表于 2004-5-24 11:39:00 | 显示全部楼层
对初学者来说,VB是最容易入手的,Vlisp的交互性差点,ARX功能强大,运行速度也最快,但同时也最难学.我个人比较偏爱VB,当然,现在该用.net了.
发表于 2004-5-24 13:19:00 | 显示全部楼层
学Lisp最少一个月就可以上手编些小DD了,步过Vb入手更快,我就是先学的Vlisp,后来觉得Vlisp没有Vb用起来方便,速度也不怎么样,还不能编译,就改学VB了,我现在用的是VB.net.
发表于 2004-5-25 18:58:00 | 显示全部楼层
不知道用lisp遍的能不能翻译成VB 的?
发表于 2004-5-27 09:32:00 | 显示全部楼层

我该选哪一种

hzh2000发表于2004-3-6 19:54:00一个都不好用。lisp、VBA语言先天不足;ARX不够直观;若AUTOCAD支持DELPHI、C++之类的面向对象技术的语言,那才是福音呢!

听他这么说,我不知道学LISP好不好,语言先天不足是什么意思呢?手头有一本LISP的教材,可是还没有学。我想初学者先掌握一种再说吧,会一种了其它的自然触类旁通了?对吧???
发表于 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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 06:38 , Processed in 0.140342 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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