hhh454 发表于 2010-12-9 10:33:22

【求助】请高手帮忙写一个出错返回和自定义命令的工具

有些命令执行到一半时,想按esc退出,可是这样容易丢失捕捉点,自定命令,就和贱人工具箱里面的那个功能一样,希望能给个源码,带对话框,万分感谢

Andyhon 发表于 2010-12-9 13:52:04

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

Gu_xl 发表于 2010-12-9 18:21:58

这是我常用的错误处理代码!
;;;程序开始使用
(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)
   )

hhh454 发表于 2010-12-11 09:14:46

回复 Gu_xl 的帖子

谢谢,万分感谢
页: [1]
查看完整版本: 【求助】请高手帮忙写一个出错返回和自定义命令的工具