找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 451|回复: 5

[已解决] 【已解决】错误函数相关

[复制链接]

已领礼包: 10个

财富等级: 恭喜发财

发表于 2018-12-8 16:01:56 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lslsq 于 2019-1-14 09:29 编辑

小弟刚学LISP久,能用一些简单的代码提升工作效率,
下面这段代码有点问题,在论坛搜索了*error*函数没整明白,只能求助各位大神了
当输入命令后正常执行没问题,但是当输入命令后按esc退出后图层没有恢复,
曾试过PAUSE用点PT1代替esc取消后没这个问题,可是那样没有预览效果。
(defun c:YY ( /   oldlayer  I objlay objname no)
(setq oldlayer (getvar "clayer"))
(command "layer" "m" "RH_layername" "" "")
(setvar "clayer" "RH_layername")
(setq SS (ssadd))
(command "-insert" "YY" PAUSE 1 ""  "")
(ssadd  (entlast ) ss)
(setq no (sslength ss))
(IF (= RH_EXPLODE 0 ) (SETQ  NO  0))
(setq i 0)
(while (< i no)
  (setq objname (ssname ss i))                     
  (setq objlay (cdr (assoc 8 (entget objname))))   
  (command ".explode" objname "")
  (command "change" (ssget "P") "" "p" "la" objlay "")        
  (setq i (+ 1 i))
)
(setvar "clayer" oldlayer)
(princ)
)

疑问.lsp

637 Bytes, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2018-12-8 16:13:31 | 显示全部楼层
*error* 是 autolisp 定义的错误处理函数入口,当autolisp运行错误或者异常中断时会执行这个函数,程序中自己去实现 *error* 完成哪些动作

  1. (defun c:tt(olderr myerr oldlyr)
  2.   (defun myerr(msg);定义自己的出错处理,必须带参数
  3.       (setver "clayer" oldlyr);恢复图层
  4.       (princ msg)
  5.       (princ)
  6.    )   
  7.   (setq olderr *error*;保存前出错信息
  8.           *error* myerr;指向自定义出错处理
  9.   )
  10.   (setq oldlyr (getvar "clayer"));保存变量

  11.   ;;;程序部分

  12.   (setvar "clayer" oldlayer);正常运行恢复变量
  13.   (setq *error* olderr);恢复 *error*
  14.   (setq myerr nil);可有可无
  15.   (princ)
  16. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-12-8 16:32:37 | 显示全部楼层
错误函数用处很大。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2018-12-14 15:09:28 | 显示全部楼层
st788796 发表于 2018-12-8 16:13
*error* 是 autolisp 定义的错误处理函数入口,当autolisp运行错误或者异常中断时会执行这个函数,程序中自 ...

我套进去,发现并没有效果,不知道哪里出错了~愁
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2018-12-14 15:12:47 | 显示全部楼层
st788796 发表于 2018-12-8 16:13
*error* 是 autolisp 定义的错误处理函数入口,当autolisp运行错误或者异常中断时会执行这个函数,程序中自 ...

另外问一下,那个高亮代码,是不是有等级限制,我试了几次都没有成功。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2133个

财富等级: 金玉满堂

发表于 2018-12-14 15:16:20 | 显示全部楼层
谢谢分享。。。。。。。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 09:40 , Processed in 0.227036 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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