马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 marting 于 2017-5-17 13:51 编辑
- ;|
- 函数名称: XD::VLA:CatchApply
- 调用格式: (XD::VLA:CatchApply func param)
- 参数说明: func ----------- 函数符号名
- param ---------- 参数表
- 返回值: T 或者 VLA对象 或者 #<%catch-all-apply-error%>对象
- 函数简介: 函数执行封装,屏蔽错误,执行函数到底
- 函数来源: 原创
- 函数作者: marting
- 适用版本: 不限
- 最后更新时间: 2017-05-17
- |;
- (defun XD::VLA:CatchApply (fun arg / rtn)
- (if (not (vl-catch-all-error-p (setq rtn (vl-catch-all-apply fun arg))))
- (if (eq rtn 'NIL)
- t
- rtn
- )
- rtn
- )
- )
不封装前代码:
- (defun c:tt ()
- (if (and (setq e1 (car (entsel)))
- (setq o1 (vlax-ename->vla-object e1))
- (setq e2 (car (entsel)))
- (setq o2 (vlax-ename->vla-object e2))
- )
- (if (not
- (vl-catch-all-error-p
- (vl-catch-all-apply
- (function
- (lambda () (setq ints (vla-intersectwith o1 o2 2)))
- )
- )
- )
- )
- (progn
- (setq ints (xd::vla:variant->value ints)) ;; (2670.65 1428.42 0.0 2354.42 670.308 0.0)
- )
- )
- )
- (princ)
- )
用 xd::vla:catchapply
- (defun c:tt ()
- (if (and
- (setq e1 (car (entsel)))
- (setq o1 (vlax-ename->vla-object e1))
- (setq e2 (car (entsel)))
- (setq o2 (vlax-ename->vla-object e2))
- )
- (if (setq ints (xd::vla:catchapply 'vla-intersectwith (list o1 o2 2)))
- (setq ints (xd::vla:variant->value ints)) ; (2670.65 1428.42 0.0 2354.42 670.308 0.0)
- )
- )
- (princ)
- )
|