实在是没办法,在网上找了1个星期的资料、示例了,百度,google,明经,AUTODESK到处都找遍了。还是没搞出来。 从明经的下列网址http://www.mjtd.com/a2/list.asp?id=131开始试验在VB中获得CAD的事件。 【引用】 在VBA外环境启用文档级事件 当你可以在VB环境或其它VBA以外的环境下使用文档级事件之前,你必须建立一个新的类模块,并声明一个带事件的AcadApplication类型的对象。例如,假定一个新的类模块已经建立并命名为EventClassModule,这个新的类模块将包含带VBA关键字WithEvents的应用程序的声明。 建立一个新类模块并声明一个带事件的Document对象: 1 在VBA IDE中,插入一个类模块。从插入菜单中,选择类模块。 2 在工程窗口中选择新的类模块。 3 在工程窗口中将类模块的名称改为EventClassModule。 4 用F7或通过选择菜单项查看代码打开类的代码窗口。 5 在类的代码窗口中,加入以下行: Public WithEvents Doc As AcadDocument 当新的对象被声明为带事件后,它就出现在类模块的对象下拉列表中,并且你可以在类模块中为新对象编写事件过程。(当你在对象框中选择了新对象,对该对象有效的事件就列在过程下拉列表中。) 但是,在程序执行之前,你必须连接类模块中被声明的对象到Document对象,你可以在任何模块中的以下代码来完成这一过程。 连接被声明的对象到文档对象 1 在主模块的代码窗口中,在声明段加入以下行: Dim X As New EventClassModule 2 在相同窗口中,加入以下子程序: Sub InitializeEvents() Set X.Doc = ThisDrawing End Sub 3 在你的主模块的代码中,添加对InitializeApp子程序的调用: Call InitializeEvents 一旦InitializeEvents过程执行后,在类模块中的Doc对象就会指向所创建的Document对象。并且当事件发生时,这个类模块中的任何事件过程都会运行。 【引用】 按照上面所说的方法,在VB中步骤如下: 1 添加类模块,并改名为EventClassModule,代码如下: Public WithEvents Doc As AcadDocument Private Sub Doc_ObjectAdded(ByVal Object As Object) MsgBox "aaa" End Sub 2 添加模块Module1,代码如下: Public acadApp As AcadApplication ' AutoCAD应用程序对象 Public AcadDoc As AcadDocument ' 当前活动文档对象 Dim X As New EventClassModule Sub InitializeEvents() Set X.Doc = ThisDrawing End Sub 3 在主窗体中添加代码如下: Private Sub Form_Load() Call InitializeEvents On Error Resume Next ' 获得正在运行的AutoCAD应用程序对象 Set acadApp = GetObject(, "AutoCAD.Application.16") If Err Then Err.Clear ' 创建一个新的AutoCAD应用程序对象 Set acadApp = CreateObject("AutoCAD.Application.16") If Err Then MsgBox Err.Description Exit Sub End If End If ' 显示AutoCAD应用程序 acadApp.Visible = True End Sub 程序可执行,可启动CAD,但是在CAD中添加图元不执行我在程序中写的出现提示框的代码。 即:类模块代码 Private Sub Doc_ObjectAdded(ByVal Object As Object) MsgBox "aaa" End Sub 不执行。 真的不知道该怎么弄了,看到的,明白的,麻烦帮一下。谢谢了。 |