【转载】 ADS与ARX的比较

转载一文,来自晓东CAD家园的文章。文章详细叙述了ARX、ADS等AutoCAD二次开发接口的东西

http://www.xdcad.net/article/article/htmlcache/1709.html


  AutoLISP是一种解释性的语言,它提供了一个简单的扩充AutoCAD命令的机制。ADS是用C语言开发的 编译执行的。然而,对于AutoCAD来说,ADS程序和AutoCAD程序没有什么区别。一个ADS程序实际上是由一组外部函数组成,它们由 AutoLISP解释器来加载调用,ADS程序本身并不能直接和AutoCAD进行通讯

  ARX程序在很多方面都和ADS程序、AutoLISP程序不同。最重要的一点是,ARX程序实质上是一个动态链 接库(Dll),它和AutoCAD共享地址空间并且直接和AutoCAD进行通讯。对于经常需要和AutoCAD通讯的应用程序来说,ARX程序比 ARX运行更块。除了速度上的提高之外,ARX程序还可以创建新的类(klass),这些类可以为其它程序共享,从而充分利用面向对象编程的优点。ARX 程序创建的实体几乎和AutuCAD的内在试题是完全等同的。

  ADS与ARX的区别:

1. ARX程序是一个动态链接库(DLL),它直接和AutoCAD进行通讯。ADS程序是一个可执行文件,它需要通过AutoLISP来和AutoCAD进行通讯。

2. AutoCAD是不可重入的,因此ADS程序也是不可重入的。而在ARX中,每一个命令都有独立的入口。

3. ARX程序速度快,但更“脆弱”,ARX程序和AutoCAD共享进程空间,ARX程序本身是AutoCAD的一部分,ARX程序的崩溃通常会导致 AutoCAD系统的崩溃。而AutoLISP和ADS都是通过函数来间接访问AutoCAD。ADS程序速度慢,但更“绝缘”,ADS程序崩溃并不一定 导致AutoCAD系统崩溃。

4. ADS程序类似如宏(macro),ADS中的函数(如ads_command)以及和AutoLISP的通讯使得ADS程序的工作类似于自动作用的宏。相比之下,ARX程序则是更基本,主程序(AutoCAD)调用每一个ARX程序注册的命令。

5. ARX程序具有ADS程序和AutoLISP程序所不具备的访问和控制AutoCAD的能力。

6. ARX提供了面向对象编程的技术。ARX充分支持C++,充分支持面向对象编程的技术,而ADS仍然只能使用传统的C语言编程。

原文地址:https://www.cnblogs.com/alonecat06/p/1339001.html