在将反应器功能添加到应用程序之前,首先需要编写一个回调函数,该函数执行反应器事件发生时所需的任务。 注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
定义回调函数后,通过创建反应器对象将函数链接到事件。回调函数是常规的 AutoLISP 函数,您可以使用 定义它。但是,在回调函数中可以执行的操作存在一些限制。不能使用命令函数调用 AutoCAD 命令。此外,若要访问图形对象,必须使用 ActiveX 函数; 并且不允许在回调函数中使用。defunentgetentmod 必须定义除 Object 反应器之外的所有反应器的回调函数,以接受两个参数:
下面的示例演示一个名为 的函数,该函数显示文件路径和大小信息。此函数将与保存图形时触发的反射器一起附加到 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) ) 在此示例中,calling-reactor 变量标识调用函数的响应器。该函数从参数中检索图形名称,然后使用该函数检索图形的大小。最后,该函数在AutoCAD窗口的警告框中显示信息。commandInfovl-file-size 传递给回调函数的参数取决于与该函数关联的事件类型。例如,将与事件相关联。此事件表示保存命令已完成。对于事件,AutoCAD 会向回调函数传递一个字符串,其中包含保存图形的文件的名称。另一方面,对系统变量更改(事件)做出反应的回调函数接收一个参数列表,其中包含系统变量的名称(字符串)和一个指示更改是否成功的标志。通过搜索产品帮助,您可以找到每种反应器类型的事件列表,以及与每个事件关联的参数。这些事件列在用于定义每种类型的反应器的功能描述下。saveDrawingInfosaveCompletesaveCompletesysVarChanged AutoCAD 附带了两个预定义的回调函数。在测试反应器时,您可以使用以下功能:
相关概念 |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:47
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.