szx025 发表于 2014-7-28 08:44 
非常谢谢院长的指导,但还有一个小问题,只有键盘输入N,图层会返回到原来设置,但直接按鼠标右键时,程序不 ...
院长那段代码是有问题的,正常的代码应该是这样:
 - ;;定义自己的出错函数
- (defun newerror()...) ;包括变量恢复
- ;;保存系统变量
- (setq oldv ...)
- (setq olde *error*)
- ;;设置系统变量和出错函数
- (setvar ......)
- (setq *error* newerror)
- ;;正常函数内容
- ......
- (cond
- ((条件1) (执行内容1))
- ((条件2) (执行内容2))
- ...
- (t nil) ;不满足前面条件的其它情况下,什么都不做
- ) ;完整的测试
- ......
- ;;正常结束,恢复变量
- (setq ... oldv)
- (setq *error* olde)
- ...
测试函数本身应该完整,与程序的结束部分无关。
initget函数有一个控制位,对get类交互输入函数的输入进行限制,除非这个控制和测试的所有条件是“闭合”的,否则就应该在cond的最后加上类似(t nil)这种收尾的语句,这样在其它输入时(包括回车)不至于出错。
|