乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 137|回复: 7

ADS、ADSRX、ObjectARX、LISP比较,要做ARX程序先看看

[复制链接]

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-9-11 13:03:00 | 显示全部楼层 |阅读模式
ADS 曾经是在 AutoLISP 之后的一种用户程序,在 R14 之前的AutoLISP 程序虽然是解释运行,仍比 ADS 程序快一些,因为实际上ADS是用AutoLISP与交互。自AutoCAD R14已经不再支持和发展 ADS程序设计模式,同时却增加了Visual LISP,以进一步提高AutoLISP 的整体性能。
ObjectARX一般是在Autodesk内部或增值软件开发商中使用。由于ARX是使用Visual C++作为基本程序设计语言,无论其效率、数据处理和软硬件的控制能力都是最好的,是唯一圆满地针对多图档环境的程序设计方法。是从根本上扩展 VLISP / VBA 的程序设计方法。
但是,与AutoCAD命令交互的功能,ARX很难借用AutoCAD强大的CAGD功能。另外,要想真正发挥这种开发模式的作用,对于程序设计者的要求(计算机专业知识、软件专业知识等等)也较高,而且程序运行风险较大。要求程序自己做好各种数据的测试,自己设计好各种条件下的出错处理和恢复,否则ARX 程序的崩溃常常会连带 AutoCAD、甚至Windows9x一起崩溃。因此,这种开发模式不适于在专业设计工程师中间普及。
以上摘自乐筑天下杂志第3期,陈伯雄老师的文章。以下是我个人看法:
ADS是AutoDESK在LISP语言之后,为C语言所做的SDK,也就是C语言开发ACAD应用程序的接口。虽然ADS不是象LISP一样解释型开发语言,但它与ACAD之间的通信机制仍是基于LISP的。ADSRX在ADS的基础上添加了部分面向对象的概念,可以认为是ADS的C++扩展,其本质仍是ADS,其功能也不比LISP语言更强大。对于熟悉C/C++语言的程序员来说,也许ADS/ADSRX比LISP更灵活,代码具有更好的可读性。
ObjectARX其本质是windows动态链接库,ARX与ACAD之间的通信机制是通过windows消息响应,与ACAD共享内存空间。其开发语言为Visual C++,具有全部面向对象的特点,可以使用全部windows API功能,这种开发模式几乎没有功能上不足。尤其是自定义类的派生,多文档管理等windows程序设计技术是ADS、ADSRX、LISP等开发模式所无可比拟的。ObjectARX结合MFC(微软基础类库)甚至可以象VC,Dephi一样开发出与windows风格一致的应用程序。
ObjectARX功能强大,但也有致命弱点,正如陈老师所说,程序设计难度大,出错后易导致ACAD甚至windows的崩溃。所以虽然ObjectARX能做很多事,但难以掌握,甚至有些在ACAD环境下应该很容易的工作,比如添加一个对象,ACAD也许就是一条命令就能解决,但ARX程序是直接操作ACAD图形数据库的,它要经过打开数据库、打开块表、获取块表记录、生成对象、添加对象、关闭对象、关闭块表记录、关闭块表、关闭数据库等诸多步骤。
打个不恰当的比方,ARX就象汇编语言,它深入到了ACAD的最底层,什么都能做,但很繁,也容易出错。因此若没有特殊原因,应该选用LISP语言或VBA作为开发。要学ARX,就要做好与学汇编一样的思想准备。
回复

使用道具 举报

9

主题

23

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2002-10-23 12:17:00 | 显示全部楼层
凡事都有难度,会了就没有难度,不去学永远有难度!!!
回复

使用道具 举报

4

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2002-10-22 11:01:00 | 显示全部楼层

ARX从根本上说VC和AutoCAD底层的结合,这一点大家都认同。至于所说的ARX让ACAD甚至操作系统崩溃,那不是ARX的问题,是学艺不精和卖LISP书者的误导。因为VLISP/ALISP/VBA都是可以让机器崩溃的,如果你学艺不精的话。
刚开始玩VC,你或许可以让Windows死得很难看,但只要经过一段时间的学习,渐入佳境,却是越来越容易。VC是入门难,而VLISP等则是入门易,到真要做好一些的程序时就挠破头也不灵。另外,居然说出ARX不易利用CAXG的话,不信可以做一段程序试试。
VC和汇编也没有类比性,那东东要硬件知识,这个却是不用的。大家放开学VC吧,这才叫编程。当然只是玩玩,找本LISP/VBA书也是可以的,不过不要买中国人“编著”的书,给自己省点钱吧。
[此贴子已经被作者于2002-10-21 18:26:54编辑过]
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-10-22 11:11:00 | 显示全部楼层
ARX从根本上说VC和AutoCAD底层的结合,而VC可以理解为与windows底层相结合,将ARX与汇编相比,是不太恰当,我姑妄言之,中国龙先生(或女士)尽可姑妄听之。我是这样理解,AutoCAD或windows底层可认为是不可更改的,“硬”的东东,与汇编牵涉的硬件一样,对于初学编程者来说,可能是难点,又是一定要掌握的。
至于ARX固有的不足,容易造成ACAD或windows系统问题,的确是学艺不精引起的,但学艺要精,谈何容易?
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2002-10-22 11:26:00 | 显示全部楼层


[此贴子已经被作者于2002-10-22 11:21:29编辑过]
回复

使用道具 举报

1

主题

6

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2002-10-28 12:19:00 | 显示全部楼层
我认为vc并不想别人所说得做一件事很麻烦,其实c++的类特性更能够将功能模块化,开发速度更快,只是可能觉得c++的模块代码,并不像那些控件的拖拖拉拉好用,那是你错了,充分使用面向的对象的特性对于功能的实现和扩展更利于编程,比如在arx中画一个对象是要做很多事情,可是如果你将这些工作加以类化,可以做成一个通用的函数甚至类,比别的语言来得快多了,而且控制也方便多了。
还有,我也是建议买这些编程的书最好不要买国产的,基本上不怎么样,最好的学习编程就是学会使用帮助文档。
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-10-29 09:39:00 | 显示全部楼层
对于专业程序设计,我记得有此一说:真正的程序员用C++,聪明的程序员用DELPHI,偷懒的程序员用VB。(记不太清楚,某些措词有偏差)对于ACAD二次开发,对应的也可以说,真正的程序员用ARX,这一点我的看法与中国龙和ghqyy二位朋友的意见是相同或相似的。我在工作中,也用C++做ACAD二次开发和数据库应用程序开发。
ObjectARX加VC++的开发模式,其优点颇多,最明显也最为C++或ARX程序员津津乐道的有三点:功能强大、程序设计灵活,代码可重用性高。
ObjectARX可深入ACAD底层,加上VC++甚至可深入到汇编一层,由于ARX丰富的计算机软硬件底层接口,其强大的功能是其他开发模式所不具备的。C++的指针、派生、继承等等程序设计方法极大地增强了ARX程序设计的灵活性和代码可重用性。但是,要发挥这些特点,要求程序设计者在深入理解C++指针、派生等概念的基础上,了解计算机软硬件底层知识,这对于专业程序设计人员来说可能只是基本要求,而对于真正的ACAD操作员和工程师来说,掌握这些专业性很强的东西可能需要长时间学习。更重要的是,对于ACAD操作者或工程师来说,他们往往并不需要做很大的二次开发工程,也并不需要ARX提供的ACAD底层接口功能,在实践中也许也不需要大量的代码可重用,而程序设计的高度灵活性却变成了高度的复杂性。这样,ARX和VC++的优点反而成了制约他们进行二次开发的桎梏。于是,ACAD操作者和工程师们优先考虑的程序设计模式并不是ARX而是其他的,更易掌握的LISP和VBA。
LISP是ACAD内嵌的二次开发接口,可以说与ACAD是无缝集成的,绝大部分ACAD能完成的操作,在做LISP开发时,几乎不用考虑ACAD内部实现,直接调用相应的LISP函数即可轻松完成。对于熟悉ACAD操作而不熟悉计算机程序设计的工程师们来说,以LISP语言为开发模式应该是最合适的。(在这我不想说聪明的程序员用LISP,因为LISP与DELPHI没有可比性,说用LISP就是聪明的也不恰当)
VBA的确是一种比较轻松的程序设计模式,首先,其程序设计语法比较接近人们的语言习惯,容易入门,现在的中学生学习程序设计多数也是从BASIC语言入手。其次,VBA内部也集成(或说封装更准确)了面向对象的内容,用拖拖拉拉的方法就能很快地做出漂亮的用户界面,它与LISP相比,图形界面更强(LISP语言用的DCL对话框在功能上还是有些不足之处,这上点,不管LISP程序员是否承认,我认为都是客观事实),但需要知道一些ACAD图形设计方法。与ARX相比,程序设计简单快速,(我认为几百行代码规模的程序,要快一倍以上),但功能上与ARX相去不少(哪怕用VB加COM编程),至于代码的安全性和保密,相信随着更新版本的ACAD推出会有完整的解决方案。ACAD内部集成VBA后,迅速在ACAD用户中推广就证明了它的生命力和应用价值。实际上,我在做ACAD二次开发时就经常使用VBA这一快速的开发模式。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2002-11-1 21:59:00 | 显示全部楼层
我是一个在读研究生 导师有一个做AutoCAD二次开发的项目 我有一定的VC++的编程基础 现在导师催得很紧 希望各位高手能推荐一两本好书,让我少走点弯路,谢谢!!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 06:54 , Processed in 0.248986 second(s), 79 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表