马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- ;; Form [url]www.xdcad.net[/url] eachy 2005.9.21
- ;; 一般程序 *Error* Begin End 写法
- ;;; 如果发生error (例如 ctrl-c)
- ;;; 激活本命令...
- (defun xd-error (st)
- (if (/= st "函数已取消")
- (princ "\n*取消*")
- )
- (xd-end)
- (princ)
- )
- ;;初始化命令,保存系统变量,标记程序开始
- ;; sysvarlst 1 系统变量列表,
- ;; 多个 '(("cmdecho" 0) ("osmode" 0) ...)
- ;; 单个 '("osmode" 0)
- ;; 2 nil 程序中不进行系统变量改变
- (defun xd-begin (sysvarlst /)
- (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
- (if (/= (length sysvarlst) 0)
- (setq xd-sysvar_mlst
- (mapcar
- '(lambda (x / y)
- (if (= (type x) 'LIST)
- (setq y (list (car x) (getvar (car x))))
- (setq y (list x (getvar x)))
- )
- (if (/= (type x) 'STR)
- (eval (cons 'setvar x))
- )
- y;_ 保存系统变量
- )
- sysvarlst
- )
- )
- )
- (setq xd-olderr *error*
- *error* xd-error
- )
- (princ)
- )
- ;;标记程序结束
- (defun xd-end ()
- (if xd-sysvar_mlst
- (mapcar '(lambda (x)
- (eval (cons 'setvar x))
- )
- xd-sysvar_mlst
- )
- )
- ;|
- ;;统一保存程序中生成的临时实体,取消时要删除
- ;;根据需要添加
- (if $ea_temp_object
- ;(not (vlax-erased-p $ea_temp_object))
- (cond
- ((= (type $ea_temp_object) 'VLA-OBJECT)
- (vla-delete $ea_temp_object)
- )
- ((= (type $ea_temp_object) 'ENAME)
- (entdel $ea_temp_object)
- )
- (t (vlax-release-object $ea_temp_object))
- )
- )|;
- (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
- (setq *error* xd-olderr)
- (setq xd-sysvar_mlst nil
- xd-olderr nil
- $ea_temp_object nil
- )
- (princ)
- )
|