类似这样:
- ;;出错处理
- (defun err (s)
- (if (and (/= s "console break")
- (/= s "Function cancelled")
- (/= s "quit/exit abort")
- )
- (progn
- (setvar "osmode" oldos)
- (setvar "autosnap" oldosn)
- (setvar "orthomode" oldor)
- (setq *error* olderr)
- (command "_.undo" "e")
- (setvar "cmdecho" oldcmd)
- (princ (strcat "\n程序出错或用户退出:" s))
- )
- )
- )
- ;;;备份系统变量
- (defun bak ()
- (setq oldcmd (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (command "_.undo" "be")
- (setq oldos (getvar "osmode")
- oldosn (getvar "autosnap")
- oldor (getvar "orthomode")
- olderr *error*
- *error* err
- )
- (setvar "orthomode" 1)
-
- )
- ;;恢复系统变量
- (defun rebak ()
- (setvar "osmode" oldos)
- (setvar "autosnap" oldosn)
- (setvar "orthomode" oldor)
- (setq *error* olderr)
- (command "_.undo" "e")
- (setvar "cmdecho" oldcmd)
- )
- ;;正交拉伸后自返回极轴捕捉
- (defun c:ss ()
- (bak)
- (command "stretch" (ssget) "")
- (while (= (logand (getvar "CmdActive") 1) 1)
- (command pause)
- )
- (rebak)
- (princ)
- )
|