xhq1954425 发表于 2011-1-31 08:29:06

在循环体中按ESC键,*error*函数到底能不能搞定

本帖最后由 xhq1954425 于 2011-1-31 13:31 编辑

下面的程序在执行过程中按ESC键是不执行出错函数的,可有办法解决它?谢谢!

(defun C:tt ()
(setq error_bak *error*)
(setq *error* ke_jian)
(repeat 10000
   (command "line" '(0 0) '(100 0) "")
)
)
(defun ke_jian (msg)
(setq *error* error_bak)
      (alert "看执行没有")
)

ZZXXQQ 发表于 2011-1-31 20:22:54

这样试试
(defun ke_jian (msg)
      (alert "看执行没有")
(setq *error* error_bak)
)

caoyin 发表于 2011-1-31 21:08:54

本帖最后由 caoyin 于 2011-1-31 21:20 编辑

(defun C:tt ()
(setq error_bak *error*)
(setq *error* ke_jian)
(repeat 10000
   (command "line" "_non" '(0 0)"_non" '(100 0) "")
)
)
(defun ke_jian (msg)
      (alert "看执行没有")
(setq *error* error_bak)
(while (/= (getvar 'CMDACTIVE) 0)
(command "")
)
)
为了确保*error*没有被覆盖,测试前建议重新打开个dwg图档

xhq1954425 发表于 2011-2-1 06:34:54

本帖最后由 xhq1954425 于 2011-2-1 06:48 编辑

谢谢两位版主的关注,我试了一下都没行,在循环体中按ESC键时直接中断了,根本不执行出错函数。这个问题困扰我很久了。实在是想不出别的办法了……
再次谢谢两位版主

caoyin 发表于 2011-2-1 07:57:15

为什么我测试成功?

Gu_xl 发表于 2011-2-1 09:14:40

在04版本测试可以弹出出alert对话框,在08版本上不能弹出alert对话框,改成(princ "看执行没有")就可以!把出错函数改为
(defun ke_jian (msg)
(alert "看执行没有")
(setq *error* error_bak)
         (princ "可以执行了")
)
在08上运行中按esc键,命令行出现:"可以执行了"
说明出错函数正确运行到最后了,只是不能弹出alert对话框而已!所以在08版上的出错函数中不能使用alert!

xhq1954425 发表于 2011-2-1 11:44:10

本帖最后由 xhq1954425 于 2011-2-1 11:45 编辑

试了,好使!向各位版主致谢!

AMTONNY 发表于 2011-2-8 21:10:32

本帖最后由 AMTONNY 于 2011-2-8 21:11 编辑

学习了,这个功能有用,多谢几位版主指点了

jack093 发表于 2012-9-14 20:31:43

08版测试可以

jyzas 发表于 2013-7-21 07:00:34

不行啊,运行时命令行显示 TT NIL
页: [1]
查看完整版本: 在循环体中按ESC键,*error*函数到底能不能搞定