啵浪鼓 发表于 2012-9-14 10:18:02

求助,copy命令与*error*出错处理的用法

本帖最后由 啵浪鼓 于 2012-9-14 10:51 编辑

(defun c:c (/ s)
(command "undo" "be")
(defun *error*(msg)
    (command "undo" "e")
    (setq *error* nil)
    (princ)
)
(setq s (ssget))
(if s
    (command "copy" s "" "m")   ; (command "copy" s "" "m" pause)
)
(*error* "")
)

程序中,必须要有"undo" "be"与"e",上面的命令运行后
选择对象: 指定对角点: 找到 1516 个
选择对象:
需要点或选项关键字。
需要点或选项关键字。
; 错误: *error* 函数中出错函数被取消

(command "copy" s "" "m" pause) 这样也会会显示出错
选择对象: 指定对角点: 找到 1516 个
选择对象:
点无效。
点无效。
; 错误: *error* 函数中出错函数被取消

如果copy命令里加上坐标点pt1与pt2可以解决,但是这样不能动态显示物体移动效果

请大侠帮忙找到出错问题的解决方法!

Andyhon 发表于 2012-9-14 11:15:27

参考旧帖:
http://www.google.com/search?as_q=setq&as_epq=%28getvar+%22CmdActive%22%29&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=http%3A%2F%2Fbbs.mjtd.com

*error* 的用法讨论也是一搜即有

啵浪鼓 发表于 2012-9-14 11:31:59

查看了楼上提供的搜索,将*error*加进去,运行是ok的
(defun c:cc ()
(command "undo" "be")
(defun *error*(msg)
    (command "undo" "e")
    (setq *error* nil)
    (princ)
)
(command "pline")
(while (= (logand (getvar "CmdActive") 1) 1) (command pause))
(*error* "")
)

将 (= (logand (getvar "CmdActive") 1) 1) (command pause) 加到copy里面,运行问题依据,不知道怎么弄了,晕!
(defun c:c (/ s)
(command "undo" "be")
(defun *error*(msg)
    (command "undo" "e")
    (setq *error* nil)
    (princ)
)
(setq s (ssget))
(if s
    (command "copy" s "" "m" (= (logand (getvar "CmdActive") 1) 1) (command pause))
)
(*error* "")
)

Andyhon 发表于 2012-9-14 11:53:11

Another one:
http://www.google.com/search?as_qdr=all&biw=1015&bih=583&q=Copy+%22%28getvar+%22CmdActive%22%29%22+site%3Ahttp%3A%2F%2Fbbs.mjtd.com&oq=Copy+%22%28getvar+%22CmdActive%22%29%22+site%3Ahttp%3A%2F%2Fbbs.mjtd.com

啵浪鼓 发表于 2012-9-14 12:15:02

Andyhon 发表于 2012-9-14 11:53 static/image/common/back.gif
Another one:
http://www.google.com/search?as_qdr=all&biw=1015&bih=583&q=Copy+%22%28getvar+%22CmdAct ...

这样搞定了
(command "copy" s "" "m" (while (> (getvar "CMDACTIVE") 0) (command PAUSE)))

懂了,谢谢Another 大侠!
页: [1]
查看完整版本: 求助,copy命令与*error*出错处理的用法