找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 919|回复: 0

[VLISP函数]: 一般程序 *Error* Begin End 写法

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-21 12:24:32 | 显示全部楼层 |阅读模式

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

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

×

  1. ;; Form [url]www.xdcad.net[/url] eachy 2005.9.21
  2. ;; 一般程序 *Error* Begin End 写法
  3. ;;; 如果发生error (例如 ctrl-c)
  4. ;;; 激活本命令...
  5. (defun xd-error (st)
  6.   (if (/= st "函数已取消")
  7.     (princ "\n*取消*")
  8.   )
  9.   (xd-end)
  10.   (princ)
  11. )
  12. ;;初始化命令,保存系统变量,标记程序开始
  13. ;; sysvarlst 1 系统变量列表,
  14. ;;             多个 '(("cmdecho" 0) ("osmode" 0) ...)
  15. ;;             单个  '("osmode" 0)
  16. ;;           2 nil 程序中不进行系统变量改变
  17. (defun xd-begin        (sysvarlst /)
  18.   (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  19.   (if (/= (length sysvarlst) 0)
  20.     (setq xd-sysvar_mlst
  21.            (mapcar
  22.              '(lambda (x / y)
  23.                 (if (= (type x) 'LIST)
  24.                   (setq y (list (car x) (getvar (car x))))
  25.                   (setq y (list x (getvar x)))
  26.                 )
  27.                 (if (/= (type x) 'STR)
  28.                   (eval (cons 'setvar x))
  29.                 )
  30.                 y;_ 保存系统变量
  31.               )
  32.              sysvarlst
  33.            )
  34.     )
  35.   )
  36.   (setq        xd-olderr *error*
  37.         *error*        xd-error
  38.   )
  39.   (princ)
  40. )
  41. ;;标记程序结束
  42. (defun xd-end ()
  43.   (if xd-sysvar_mlst
  44.     (mapcar '(lambda (x)
  45.                (eval (cons 'setvar x))
  46.              )
  47.             xd-sysvar_mlst
  48.     )
  49.   )
  50.   ;|
  51.   ;;统一保存程序中生成的临时实体,取消时要删除
  52.   ;;根据需要添加
  53.   (if $ea_temp_object
  54.     ;(not (vlax-erased-p $ea_temp_object))
  55.     (cond
  56.       ((= (type $ea_temp_object) 'VLA-OBJECT)
  57.        (vla-delete $ea_temp_object)
  58.       )
  59.       ((= (type $ea_temp_object) 'ENAME)
  60.        (entdel $ea_temp_object)
  61.       )
  62.       (t (vlax-release-object $ea_temp_object))
  63.     )
  64.   )|;
  65.   (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  66.   (setq *error* xd-olderr)
  67.   (setq        xd-sysvar_mlst         nil
  68.         xd-olderr        nil
  69.         $ea_temp_object         nil
  70.   )
  71.   (princ)
  72. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-18 22:44 , Processed in 0.366664 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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