找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1415|回复: 2

[选择集] API程序*ERROR*配套处理

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-7-16 18:11:11 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Progam:Begin
调用格式: (XD::Progam:Begin lst)
参数说明: lst 表[英文层名或中文层索引名] [层颜色] [墙层参数] [保存的系统变量表]
返回值:
函数简介: 应用API的Lisp程序中 *error* 处理
函数来源: 原创
函数作者:
适用版本: 不限 
最后更新时间: 2013-07-16
备注: -
演示图片: -

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

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

×
程序开始
  1. (defun XD::Progam:Begin (lst)
  2.   (setq *XD::Error* *error*
  3.         *error* XD::Progam:End
  4.   )
  5.   (if lst
  6.     (progn
  7.       (apply
  8.         'xdrx_begin
  9.         lst
  10.       )
  11.       (if (= (type (car lst)) 'STR)
  12.         (apply
  13.           'xdrx_sysvar_push
  14.           (last (mapcar
  15.                   'car
  16.                   lst
  17.                 )
  18.           )
  19.         )
  20.         (apply
  21.           'xdrx_sysvar_push
  22.           (mapcar
  23.             'car
  24.             lst
  25.           )
  26.         )
  27.       )
  28.     )
  29.     (xdrx_begin)
  30.   )
  31.   (princ)
  32. )
  33. (defun XD::Progam:End ()
  34.   (xdrx_sysvar_pop)
  35.   (xdrx_end)
  36.   (setq *error* *XD::Error*
  37.         *XD::Error* nil
  38.   )
  39.   (princ)
  40. )


lst 示例
1 ‘("mylyr" "1" '(("cmdecho" 0) ("blipmode" 0) ("highlight" 0) ("expert" 5))))

            创建层MYLYR,颜色设置为红色。
            保存当前层名和捕捉方式到内部数据库ARX变量。
            (COMMAND "UNDO" "A")
            保存4个系统变量到内部数据库ARX变量中。
2 '(("cmdecho" 0) ("blipmode" 0) ("highlight" 0) ("expert" 5)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-16 18:48:09 | 显示全部楼层
ea,错误处理函数,用了两次POP,如果程序中PUSH了超过2次时候,可能就要少弹出一次了,不能恢复BEGIN前的状态。我建议,XD::Program:Begin 就不要参数了,直接调用xdrx_begin,参数里面的变量设置统一到程序里面用 xdrx_sysvar_push 去设置较好。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-16 18:54:27 | 显示全部楼层
[ 本帖最后由 st788796 于 2013-7-16 19:40 编辑 ]\n\n查了下手册和论坛发布的一些API应用,LZ 的 Begin 应该是按以前手册的用法,push 和 pop 是新加的,其实一个Begin 保存现场,End恢复原状,push pop 在begin  ... end 任意配套是最佳方式。
  1. (defun XD::Progam:Begin ()
  2.   (setq *XD::Error* *error*
  3. *error*     XD::Progam:End
  4.   )
  5.   (xdrx_begin)
  6. )
  7. (defun XD::Progam:End ()
  8.   (xdrx_end)
  9.   (setq *error* *XD::Error*
  10. *XD::Error* nil
  11.   )
  12.   (princ)
  13. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 01:06 , Processed in 0.398502 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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