在非 VBA 环境中启用文档层事件

AutoCAD ActiveX/VBA

 
在非 VBA 环境中启用文档层事件
 
 
 

必须先创建新的类模块,并声明包含事件的 AcadDocument 类型的对象,然后才能在 VB 或其他非 VBA 环境中使用文档层事件。例如,假设创建一个称为 EventClassModule 的新类模块。该模块包含带有 VBA 关键字 WithEvents 的应用程序声明。

创建新类并声明包含事件的 Document 对象的步骤

  1. 在 VBA IDE 中,插入类模块。在“插入”菜单中,选择“类模块”。
  2. 在“工程”窗口中,选择该新类模块。
  3. 在“特性”窗口中,将类名改为 EventClass-Module。
  4. 使用 F7 键或通过依次选择菜单选项“查看”“代码”来打开该类的“代码”窗口。
  5. 在该类的“代码”窗口中,添加以下行:
Public WithEvents Doc As AcadDocument

声明包含事件的新对象之后,新对象将出现在该类模块的“对象”下拉列表中,用户可以在该类模块中为新对象编写事件过程。(在“对象”框中选中新对象时,该对象的有效事件会显示在“过程”下拉列表框中。)

然而,在运行这些过程之前,必须将类模块中声明的对象与 Document 对象相连接。可以在任何模块中使用以下代码完成此操作。

将声明的对象与 Document 对象相连接的步骤

  1. 在主模块的“代码”窗口中,向声明部分添加以下行:
    Dim X As New EventClassModule
  2. 在相同窗口中,添加以下子例程:
    ub InitializeEvents()
     Set X.Doc = ThisDrawing
    End Sub
  3. 在主模块的代码中,添加对 InitializeApp 子例程的调用:
    Call InitializeEvents

    运行 InitializeEvents 过程之后,类模块中的 Doc 对象会指向创建的 Document 对象,并且类模块中的事件过程会在事件发生时运行。