chpmould 发表于 2011-9-18 22:22:25

[Scmold]Lisp中运用ARX封装函数

本帖最后由 chpmould 于 2012-9-9 23:16 编辑

Lisp调用ARX封装函数:    编写此函数的起因是工作需求,经常绘制大量的实体图形,从而想借用ARX的效率,LISP编写的简便而写此函数,如果需求的人多我将继续扩展...

下面是直接在LISP中应用的例子:

;;使用前先加载ARX封装函数
;;
;;调用绘线例子
(defun c:tal ()
(setq pt1 (getpoint "\n指定第一点:"))
(setq pt2 (getpoint pt1 "\n指定下一点:"))
(AddLine pt1 pt2);两点绘制线
(princ)
);defun

;;
;;调用绘圆例子
(defun c:tac ()
(setq pt1 (getpoint "\n指定中心点:"))
(AddCircle pt1 10.0);中心点+直径
(princ)
);defun

yanshengjiang 发表于 2011-9-18 22:24:32

学以致用,才是真理... ...

xiaxiang 发表于 2011-9-19 10:22:53

附件中ARX封装的函数有哪些,可否列出

qjcpj 发表于 2011-9-19 10:43:44

请教封装函数的名称及调用示例。

chpmould 发表于 2011-9-19 20:51:38

xiaxiang 发表于 2011-9-19 10:22 static/image/common/back.gif
附件中ARX封装的函数有哪些,可否列出

      目前就直线和圆两函数,因为之前我在编写大量绘图程序时用的频率最高的就是这两个,所以暂时没有写太多,如果需要的人多,我后续再扩展...

chpmould 发表于 2011-9-19 20:54:42

本帖最后由 chpmould 于 2011-9-19 20:58 编辑

一楼代码中这两句就是函数应用例子啊...

(AddLine pt1 pt2);两点绘制线

(AddCircle pt1 10.0);中心点+直径绘制圆

cabinsummer 发表于 2011-9-19 22:06:33

也可以建lisp库函数
(defun AddLine(StartPoint EndPoint /)
(entmake (list '(0 . "LINE")(cons 10 StartPoint)(cons 11 EndPoint)))
)
(defun AddCircle(CenterPoint Diameter /)
(entmake (list '(0 . "Circle")(cons 10 CenterPoint)(cons 40 (/ diameter 2.0))))
)
可将库函数编译为vlx文件,启动AutoCAD时就加载进去。
调用库函数如下:
(defun c:tal ()
(setq pt1 (getpoint "\n指定第一点:"))
(setq pt2 (getpoint pt1 "\n指定下一点:"))
(AddLine pt1 pt2);两点绘制线
(princ)
)

(defun c:tac ()
(setq pt1 (getpoint "\n指定中心点:"))
(AddCircle pt1 10.0);中心点+直径
(princ)
)

fsxm 发表于 2011-9-20 00:51:26

这类没啥意义的贴,说明啥?

chpmould 发表于 2011-9-20 00:58:10

cabinsummer 发表于 2011-9-19 22:06 static/image/common/back.gif
也可以建lisp库函数

可将库函数编译为vlx文件,启动AutoCAD时就加载进去。


谢谢cabinsummer
我知道Lisp可以这么做, 正因为LISP编写小程序方便,所以我才想借用ARX的效率而写些函数,另外也方便用此方法写相关软件与LISP之间的接口扩展...

xiaxiang 发表于 2011-9-20 09:50:22


CAD的几个命令,可以在执行命令的时候,动态显示.
可以实时看到显示效果,实在是众编程者所要的那种效果.
这种效果,用OBJECTARX来实现是比较简单的.
不过用AUTOLISP实现起来就有点吃力了.
因为要不断的entmod实体,实在是比较慢,而且会卡.一闪一闪的.
。。。

以上摘自无所不及主页 http://wujimmy.com/article.asp?id=249
楼主看来是OBJECTARX的高手了
如果楼主能做出这个copy函数来供大家调用,就太好了
页: [1] 2
查看完整版本: [Scmold]Lisp中运用ARX封装函数