CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

示例:截获 ActiveX 方法 (AutoLISP/ActiveX) 返回的错误

2023-1-8 00:28| 发布者: admin| 查看: 249| 评论: 0|来自: AutoCAD

摘要: 这 vl-catch-all-apply 函数允许您拦截 ActiveX 方法返回的错误,并决定程序应如何继续。

该函数允许您截获 ActiveX 方法返回的错误,并决定程序应如何继续。vl-catch-all-apply

注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。

创建新的 AutoLISP 源代码文件

  1. 在 Visual LISP 中,单击“文件新建文件”。
  2. 单击文件另存为。
  3. 在“另存为”对话框中,
    • 指定新的 AutoLISP 源文件的位置。
    • 在“文件名”框中,输入“拦截活动XErrors”。
    • 在“保存类型”下拉列表中,选择“Lisp 源文件”。
    • 单击保存。

在模型空间中创建新的 Ray 对象

  • 在新的 Visual LISP 文本编辑器窗口中,输入
    (defun init-motivate ()
      (vl-load-com)
      (setq mspace
        (vla-get-modelspace
          (vla-get-activedocument (vlax-get-acad-object))
        )
      )
      (vla-addray mspace (vlax-3d-point 0 0 0) (vlax-3d-point 1 1 0))
    )

获取添加到模型空间的最后一个对象的边界框

  • 在 Visual LISP 文本编辑器窗口中,输入
    (defun bnddrop (/ bbox)
      (setq bbox (vla-getboundingbox
        (vla-item mspace (- 1 (vla-get-count mspace)))
          'll
          'ur
        )
      )
      (list "Do something with bounding box." bbox)
    )

加载并运行代码

  1. 单击工具在编辑器中加载文本。
  2. 在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

    一个调用来检查返回值from并返回如果它是一个错误对象,否则。如果返回值是错误对象(如本例所示),则函数 issuesto 从错误对象获取消息。程序执行从这一点继续。vl-catch-all-error-pvl-catch-all-applyTnilvl-catch-all-error-message


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部