湜1只鱼 发表于 2014-12-4 11:11:34

CAD的动态输入

在cad中仅仅只执行DIST命令时自动开启动态输入,当命令执行完后自动关闭动态输入这个代码怎么写?

Gu_xl 发表于 2014-12-4 12:49:48

写个简单的命令反应器即可!
(or *DistVlr*
    (setq *DistVlr*
           (vlr-command-reactor
             nil
             '((:VLR-commandWillStart . diststart)
             (:VLR-commandEnded . distEnd)
              )
           )
    )
)
(defun diststart (reactor_object lst)
(if (= "DIST" (car lst))
    (progn
      (setq *dynmode* (getvar 'dynmode))
      (setvar 'dynmode 3)
    )
)
)
(defun distEnd (reactor_object lst)
(if (= "DIST" (car lst))
    (progn
      (setvar 'dynmode *dynmode*)
      (setq *dynmode* nil)
    )
)
)

newbuser 发表于 2014-12-4 20:18:23

看了Gu版的反应器,似乎有些举一反三的感觉了。反应器着实太难了,太难懂啊。

669423907 发表于 2014-12-4 20:37:24

Gu_xl 发表于 2014-12-4 12:49 static/image/common/back.gif
写个简单的命令反应器即可!

请问可不可以是一个自定义的命令(程序)呢?

Gu_xl 发表于 2014-12-4 20:46:57

669423907 发表于 2014-12-4 20:37 static/image/common/back.gif
请问可不可以是一个自定义的命令(程序)呢?

不明白你的意思

669423907 发表于 2014-12-4 20:49:46

Gu_xl 发表于 2014-12-4 20:46 static/image/common/back.gif
不明白你的意思

(if (= "abc" (car lst))
,,,,,,,,,,,,,,,,,,,,,,


(defun abc()
,,,,,,,,,,,,,,,,

Gu_xl 发表于 2014-12-4 22:40:11

669423907 发表于 2014-12-4 20:49 static/image/common/back.gif
(if (= "abc" (car lst))
,,,,,,,,,,,,,,,,,,,,,,



使用lisp反应器

lionguns 发表于 2014-12-5 00:45:50

G版不要搞的太高深了,吓到人的!
直接重写一下DIST命令最简单
(defun c:dist ()
   (setq *dynmode* (getvar 'dynmode))
   (setvar 'dynmode 3)
(command "dist" pause pause)
(setvar 'dynmode *dynmode*)
) ;_ end_defun
页: [1]
查看完整版本: CAD的动态输入