【求助】请高手帮忙写一个出错返回和自定义命令的工具
有些命令执行到一半时,想按esc退出,可是这样容易丢失捕捉点,自定命令,就和贱人工具箱里面的那个功能一样,希望能给个源码,带对话框,万分感谢 Edge.Lsp 的示例(defun edge-er (n)
....
(setvar "osmode" o1)
....
)
Free Download:
http://www.transforensics.com/download/corey/ACAD_2008_XP64/en-us/Acad/Program%20Files/Root/Support/edge.lsp
这是我常用的错误处理代码!
;;;程序开始使用
(DEFUN SetIErr (/ sv)
(if (or (= 'LIST (type *Error*))(= 'USUBR (type *Error*)))
(alert "ERROR:THE LAST (SETiERR) FUNCTION HAS NO (ReErr)!")
(PROGN
(SETQ *SVARL* '())
(FOREACH SV *SYSVARNL*
(SETQ *SVARL* (CONS (GETVAR SV) *SVARL*))
)
(FOREACH SV '("ATTDIA" "ATTREQ" "BLIPMODE" "CMDECHO" "DIMZIN"
"OSMODE" "ORTHOMODE" "MIRRTEXT")
(SETVAR SV 0)
)
(SETVAR "EXPERT" 5)
(SETVAR "CECOLOR" "BYLAYER")
(SETVAR "celtype" "BYLAYER")
(SETVAR "LWDISPLAY" 1)
(SETVAR "PLINEGEN" 1)
(setq MyOld*error* *error*)
(defun *error* (st) (reerr)(princ st))
)
)
)
;;;程序结束恢复*Error*,(SetIErr)和(ReErr)必须配套使用
(defun ReErr ()
(if (or (= 'LIST (type *error*)) (= 'SUBR (type *error*)) (= 'USUBR (type *error*)))
(PROGN (MAPCAR 'SETVAR *SYSVARNL* (REVERSE *SVARL*))
(SETQ*Error* MyOld*error*)
)
(ALERT "ERROR: NO (SETIERR)!")
)
(PRINC)
)
回复 Gu_xl 的帖子
谢谢,万分感谢
页:
[1]