找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 822|回复: 3

[求助] [求助]:执行Lisp时,按Esc键后如何保持原有变量

[复制链接]
发表于 2007-3-18 20:04:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
执行Lisp时,按Esc键中止程序运行后,如何能保持原有系统变量设定不变?
因为已经运行了的那部份lisp内容里对系统变量做过修改,所以按Esc键退出程序运行后,那些被修改的系统变量恢复不过来了。因为程序还没能运行到最后那几行恢复被更改过的系统变量的代码。请问大家要加入什么代码才能恢复系统变量?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-18 21:57:46 | 显示全部楼层
自定义错误函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-18 22:32:12 | 显示全部楼层
请“活塞”兄能否留下QQ或MSN?
我的QQ:59705568
        MSN:fish80@hotmail.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-19 16:03:06 | 显示全部楼层

这样处理行吗?还能改进否?

(defun c:tf(/ cmdsave osmsave clysave ortsave polsave autsave
              scnew pp1 pp2 pp3 ag0 mpt1 mpt2   )
  (defun err1(sss)
   (if sss (progn (setq *error* olderr)
            (setvar "cmdecho" cmdsave)
            (setvar "osmode" osmsave)
            (setvar "clayer" clysave)
            (setvar "orthomode" ortsave)
            (setvar "polarang" polsave)
            (setvar "autosnap" autsave)            
           )
   )   
  )
            (setq olderr *error* *error* err1)
  (setq cmdsave (getvar "cmdecho"))
  (setq osmsave (getvar "osmode"))
  (setq clysave (getvar "clayer"))
  (setq ortsave (getvar "orthomode"))
  (setq polsave (getvar "polarang"))
  (setq autsave (getvar "autosnap"))
  (setvar "polarang" (/ pi 12))
  (setvar "autosnap" 63)
  (setvar "cmdecho" 0)
  (setvar "clayer" "0")
  (setq scnew (/(getvar "dimtxt")2.5)
        pp1 (getpoint "\n指定引线起点:")
        pp2 (getpoint pp1 "\n指定下一点:")
        ag0 (angle pp1 pp2))
   (if (and (> ag0 (* 0.5 pi)) (<= ag0 (* 1.5 pi)))
             (setq ag0  pi)
             (setq ag0 0)
   )
  (setq pp3(polar pp2 ag0 (* scnew 5))
        mpt1 (/(+ (car pp2) (car pp3))2)
        mpt2 (/(+ (cadr pp2) (cadr pp3))2))
(setvar"osmode"0)
  (command "pline" pp1 pp2 pp3 "")
  (command "text" "j" "m"  (polar (list mpt1 mpt2) (* pi 0.5) (* scnew 2.5))
                              (+ scnew(* scnew 2.5)) 0 "E")
  (setvar "cmdecho" cmdsave)
  (setvar "osmode" osmsave)
  (setvar "clayer" clysave)
  (setvar "orthomode" ortsave)
  (setvar "polarang" polsave)
  (setvar "autosnap" autsave)
  (setq *error* olderr)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 15:56 , Processed in 0.268658 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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