书上一般说ObjectARX创建实体的速度比其他方式创建实体的速度要快很多,其实说的有些模糊,对于一些刚刚入门的人显然是不太理解的。这里呢通过由LISP创建直线的三种方式(Command 函数 Entmake函数 及VLA-ADDLINE方式)与ObjectARX创建直线的几种方式(调用acedCommand创建;利用acdbEntMake创建;以及ObjectARX方式创建)来详细的分析出运行机制以及速度.
首先关于CAD几种开发语言的比较呢,我将在下一讲详细的去说,这里呢简单说一下目前LISP语言运行的机制。目前来说AutoCAD内置LISP函数主要由ObjectARX来定义的一种有LISP语法结构的一种内置与CAD的一种编程开发环境,实质还是由ObjectARX定义的,最后需要内部的读取翻译将LISP源码转为机器码来进行,这样就使得运行机制与2000版之前有了很大的不同。
ObjectARX的程序与CAD本身共用同一地址,所以不需要翻译直接与CAD通信那么速度上就会相对快一些,而且开发出的命令也是与CAD内部的相一致。
前面列举的几种方式创建直线可以简单归类为
调用CAD内置命令方法【LISP】的是(command )ARX的是acedCommand
由链表创建 LISP (entmake) ARX acdbEntMake
VLISP方法 (vla-addline) ARX调用COM接口(以后单独介绍)
ObjectARX 直接操作数据库创建。
首先来看一看调用内置命令方式。
![](source/plugin/imc_colorcode/images/loading.gif)
- (defun c:cmdlinelsp()
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (acet-ui-progress "创建10000条直线LISPcommand" 10000)
-
- (repeat 10000
- (acet-ui-progress -1)
- (command "line" "0,0" "10,0" "")
- )
- (acet-ui-progress)
- (princ)
- )
(10点补齐 )