CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于定义回调函数 (AutoLISP/ActiveX)

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

摘要: 在向应用程序添加反应器功能之前,首先需要编写一个回调函数,该函数执行反应器事件发生时所需的任务。

在向应用程序添加反应器功能之前,首先需要编写一个回调函数,该函数执行反应器事件发生时所需的任务。

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

定义回调函数后,通过创建反应器对象将该函数链接到事件。回调函数是常规的 AutoLISP 函数,您可以使用它进行定义。但是,对于在回调函数中可以执行的操作有一些限制。不能使用命令函数调用 AutoCAD 命令。此外,若要访问图形对象,必须使用 ActiveX 函数;并且不允许在回调函数中使用。defunentgetentmod

除对象反应器之外的所有反应器的回调函数必须定义为接受两个参数:

  • 第一个参数标识调用函数的 Reactor 对象。
  • 第二个参数是 AutoCAD 设置的参数列表。

下面的示例演示一个名为的函数,该函数显示文件路径和大小信息。此功能将与保存图形时触发的反应器一起附加到 DWG 编辑器。saveDrawingInfosaveComplete

(defun saveDrawingInfo (calling-reactor commandInfo / dwgname filesize)
  (vl-load-com)
  (setq dwgname (cadr commandInfo)
    filesize (vl-file-size dwgname)
  )
  (alert (strcat "The file size of " dwgname " is "
      (itoa filesize) " bytes."
    )
  )
 (princ)
)

在此示例中,调用反应器变量标识调用函数的反应器。该函数从参数中检索绘图名称,然后使用该函数检索绘图的大小。最后,该函数在 AutoCAD 窗口的警告框中显示信息。commandInfovl-file-size

传递给回调函数的参数取决于与函数关联的事件类型。例如,将与事件相关联。此事件表示“保存”命令已完成。对于事件,AutoCAD 会向回调函数传递一个字符串,其中包含保存图形的文件的名称。另一方面,对系统变量更改(事件)做出反应的回调函数接收一个参数列表,其中包含系统变量的名称(字符串)和指示更改是否成功的标志。通过搜索产品帮助,您可以找到每种反应器类型的事件列表以及与每个事件关联的参数。这些事件列在用于定义每种类型反应器的函数说明下。saveDrawingInfosaveCompletesaveCompletesysVarChanged

AutoCAD 附带两个预定义的回调函数。您可以在测试反应器时使用这些函数:

  • vlr-beep-reaction- 简单的功能,从工作站的扬声器发出哔哔声。
  • vlr-trace-reaction- 每次反应器触发此回调函数时,将参数列表打印到 Visual LISP 跟踪窗口。

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 13:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部