[已解决][求助] 获取 工程文件搜索路径时 :Automation 错误 获取惯用选项特性时出错
本帖最后由 liyamg 于 2014-1-19 19:31 编辑(vla-GetProjectFilePath (vla-get-files (vla-get-Preferences (vlax-get-acad-object))) "xx")
(vlax-invoke-method (vla-get-files (vla-get-Preferences (vlax-get-acad-object)))'GetProjectFilePath "xx")
以上两句在获取 “工程文件路径”时,如果“xx” 不存在,只有“常用”,见下图,则报错:
Automation 错误获取惯用选项特性时出错。
有什么办法判断,“xx” 是否存在呢? 因为工作中,要引用大量的外部参照,路径需要批量更新。 用vl-catch-all-apply 和vl-catch-all-error-p进行判断。 多谢 lijiao 的指导,
又参考了G版的帖子 http://bbs.mjtd.com/thread-100616-1-1.html
问题解决了:
(defun C:tt (/)
(setq d2
(VL-CATCH-ALL-APPLY
'vla-GetProjectFilePath
(list
(vla-get-files (vla-get-Preferences (vlax-get-acad-object)))
"xx"
)
)
)
(if (VL-CATCH-ALL-ERROR-P d2)
(alert (VL-CATCH-ALL-ERROR-MESSAGE d2)) ;或者其他程序
)
) 安全调用所有函数
(defun cs-get-vba (fun lst / out)
(if (vl-catch-all-error-p
(setq out (vl-catch-all-apply fun lst))
)
nil
out
)
)
例如:
_$ (/ 2 0)
; 错误: 除数为零
_$ (cs-get-vba '/ '(2 0))
nil
_$ (cs-get-vba '/ '(2 1))
2
页:
[1]