明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1684|回复: 6

[求助]关于*error*

[复制链接]
发表于 2006-3-25 20:52 | 显示全部楼层 |阅读模式

<hr>

我是新手,想请教一个问题

在Lisp程序开始使用了

(command "undo" "m")

想在*error*中恢复到该标记处,使用了

(command "undo" "b")

可是如果当调用*error*的这个语句时还处于选择状态,

就是程序无法向命令行中输入undo

所以出现了 错误: *error* 函数中出错函数被取消

怎么解决这个问题啊??

我知道可以在程序出错之前加以判断避免调用*error*,可是总是会有潜在的错误.如何从根本上处理呢?

 楼主| 发表于 2006-3-27 17:58 | 显示全部楼层

沉了..顶下

 楼主| 发表于 2006-3-28 20:15 | 显示全部楼层

谁能帮个忙.谢谢了

发表于 2006-3-28 20:24 | 显示全部楼层
对于*error*的操作,我认为是这样,*error*是用处恢复一些系统变量设置,因为这些系统变量值无法用undo来恢复,而对于一些command命令可以在开始command命令前加个(command "undo" "be"),在所有要处理的command命令结束后加个(command "undo" "e"),一般情况下没有必要在*error*中调用(command "undo".....)。
 楼主| 发表于 2006-3-29 20:32 | 显示全部楼层

谢谢楼上的指导....

可是我想实现如果程序出错回到初始状态该怎么做呢?

包括系统变量的设置以及对图形的操作都还原回去,可以实现吗?

发表于 2006-3-29 21:48 | 显示全部楼层

下面这段是飞哥贴过的一段,你参考一下:

(defun myerror()
(command)
(command "_undo" "e")
(setvar "osmode" oldosmode)  ;;;;oldosmode为先前获得的osmode的值
(setq *error* olderror);;;;olderror也是
)

;主函数,两个变量必须作为全局变量
(defun test()
  (setq oldosmode (getvar "osmode"))
  (setq olderror *error*)
  (setq *error* myerror)
  (command "_.undo" "be")
  ......
  ......
  ;主函数中各个参数也需要恢复
  (command)
  (command "_undo" "e")
  (setvar "osmode" oldosmode)  ;;;;oldosmode为先前获得的osmode的值
  (setq *error* olderror);;;;olderror也是
  (princ)
)

 楼主| 发表于 2006-3-30 21:08 | 显示全部楼层

茅塞顿开..  谢谢 ljpnb

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

本版积分规则

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

GMT+8, 2024-6-24 20:14 , Processed in 0.164381 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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