非常感谢李。我阅读了你的代码,发现了我的代码不起作用的原因。我的lisp按预期工作,但没有暂停用户输入。我还没来得及画线,它就已经Lisp程序了
我的新代码
- (defun setvars (vl nlv inout)
- (if(= inout 0)
- (progn
- (setq vlv (mapcar 'getvar vl))
- (mapcar 'setvar vl nlv)
- )
- )
- (if(= inout 1)
- (progn
- (mapcar 'setvar vl vlv)
- )
- )
- )
- ;; quick test
- (defun c:test3 (/)
- (setq svin '(setvars '(ORTHOMODE OSMODE) '(1 16383) 0))
- (setq svout '(setvars '(ORTHOMODE OSMODE) '(1 16383) 1))
- (eval svin)
- (command "_.line")
- (while (= 1 (logand 1 (getvar 'CMDACTIVE)))
- (command pause)
- )
- (eval svout)
- )
- (defun *error* ( msg )
- (eval svout)
- (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " msg " **")))
- (princ)
- )
现在,只要有人“试图逃跑”,它就会重置所有值。 |