明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1891|回复: 4

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

[复制链接]
发表于 2012-9-14 10:18 | 显示全部楼层 |阅读模式
本帖最后由 啵浪鼓 于 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可以解决,但是这样不能动态显示物体移动效果

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

发表于 2012-9-14 11:15 | 显示全部楼层
参考旧帖:
http://www.google.com/search?as_ ... A%2F%2Fbbs.mjtd.com

*error* 的用法讨论也是一搜即有
 楼主| 发表于 2012-9-14 11:31 | 显示全部楼层
查看了楼上提供的搜索,将*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* "")
)
发表于 2012-9-14 11:53 | 显示全部楼层
 楼主| 发表于 2012-9-14 12:15 | 显示全部楼层
Andyhon 发表于 2012-9-14 11:53
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 大侠!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-5 09:34 , Processed in 0.495696 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表