У меня есть lisp, который включает в себя установку переменной, а затем выбор точек внутри цикла. Как только я решу, что закончил выбор точек, я хотел бы иметь возможность вернуть эту переменную к тому состоянию, в котором она была изначально, когда я нажимаю клавишу выхода. например.
(defun c:df ()
(setq oom (getvar "osmode")) ;store current state
(setq type(getint "\nEnter Type: 1 For Horizontal, 2 For Vertical : "))
(setq startpt (getpoint "\nChoose Start Point : "))
(setq ptx (+ (nth 0 startpt)10))
(setq pty (+ (nth 1 startpt)10))
(setvar "osmode" 2); change state state
(while
(setq nextpt (getpoint "'Pick Mid: ")) ;make selection
(if (null nextpt) ((princ "\nNull Value Error.") return))
(if (= type 1) (command "dimlinear" startpt nextpt "H" (list 0 pty) ))
(if (= type 2) (command "dimlinear" startpt nextpt "V" ptx ))
(setq ptx (+ 5 ptx))
(setq pty (+ 5 pty))
)
;do after escape key is pressed.
(setvar "osmode" oom) ;revert state back to original.
)
Я нашел возможные зацепки, связанные с «Ошибками пользовательского ввода», но ничего не смог заставить работать. К моему преуменьшению, при нажатии escape lisp просто завершает работу и не заканчивает выполнение.
Заранее спасибо.