该函数允许您截获 ActiveX 方法返回的错误,并决定程序应如何继续。vl-catch-all-apply
注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
创建新的 AutoLISP 源代码文件
- 在 Visual LISP 中,单击“文件新建文件”。
- 单击“文件另存为”。
- 在“另存为”对话框中,
- 指定新 AutoLISP 源文件的位置。
- 在“文件名”框中,输入 interceptActiveXErrors。
- 在“另存为类型”下拉列表中,选择“Lisp 源文件”。
- 点击保存。
加载并运行代码
- 单击“工具”(Tools)、“在编辑器中加载文本”(Load Text)。
- 在AutoCAD命令提示下,输入(bnddrop)。
由于 Ray 对象扩展到无穷大,因此无法用框将其括起来,并且 GetBoundingBox 会导致以下错误:
; error: Automation Error. Invalid extents
如果此代码是应用程序的一部分,则此时将停止执行。
捕获 vla-GetBounding Box 函数创建的错误
- 在 Visual LISP 文本编辑器窗口中,输入
(defun bndcatch (/ bbox)
(setq bbox (vl-catch-all-apply
'vla-getboundingbox
(list (vla-item mspace (- 1 (vla-get-count mspace)))
'll
'ur
)
)
)
(if (vl-catch-all-error-p bbox)
(list "Exception: " (vl-catch-all-error-message bbox))
(list "Do something with bounding box." bbox)
)
)
此函数用于调用 .它传递两个参数:命名被调用函数的符号和要传递给的参数列表。如果方法成功完成,则将返回值存储在变量 中。如果调用不成功,则将错误对象存储在 中。vl-catch-all-applyvla-getboundingboxvl-catch-all-apply('vla-getboundingbox)vla-getboundingboxGetBoundingBoxvl-catch-all-applybboxvl-catch-all-applybbox
此时,函数直接发出,导致错误,执行停止。但是在 中,截获错误并继续程序执行。bnddropvla-getboundingboxbndcatchvl-catch-all-apply
一个调用,用于检查返回值,并返回它是否为错误对象,否则。如果返回值是错误对象(如本示例中所示),则函数会发出从错误对象获取消息的问题。程序执行从此时继续。vl-catch-all-error-pvl-catch-all-applyTnilvl-catch-all-error-message
|