明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2064|回复: 4

[求助]如何恢复被ESC中断的系统变量?

[复制链接]
发表于 2004-12-22 10:14:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-12-22 11:39:17 编辑

lisp程序的开始往往要改变系统变量,在程序结束前再恢复过来。但是,如果在程序执行过程中由于esc强行退出,则系统变量就无法恢复了。 我这里所说的“退出”是指在执行lisp语句时的强行退出,例如:
(setq p0 (getpoint "\n指定第一点:"))
按ESC键强制退出。 请问,该如何解决?
发表于 2004-12-22 12:26:00 | 显示全部楼层
自己定义*error*函数,按ESC时,系统会自动执行*error*函数 (defun err(msg)
(setvar "osmode" os);恢复系统的改变
(setq *error* errtmp);恢复原有*error*函数
) (defun myapp( / pt)
(setq errtmp *error*);保存原有*error*函数
(setq *error* err);使用自己错误处理函数
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq pt (getpoint "\nabc:"))
(setvar "osmode" os)
(setq *error* errtmp);恢复原有*error*函数
(princ)
)
 楼主| 发表于 2004-12-22 13:50:00 | 显示全部楼层
谢谢版主,我对*error*函数的认识加深了。
发表于 2011-7-6 11:47:39 | 显示全部楼层
是学习的好贴!
发表于 2011-9-4 00:33:22 | 显示全部楼层
又学了一招!非常实用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-11 02:07 , Processed in 0.188945 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表