本帖最后由 1005100717 于 2018-6-3 20:14 编辑
翻阅ActiveX帮助的时候,发现AcadApplication对象下,有事件支持,见下图
cad程序激活、ARX加载卸载、命令开始、命令结束…………感觉还是很有用的,百度一番搜索没有找到用法。自己翻阅ActiveX帮助琢磨一通,来跟大家一起分享。
首先,插入一个类模块,模块名自定,比如叫做:xcadEvent定义如下:- Public WithEvents ACADApp As AcadApplication ' 启用cad事件类,定义实例对象 ACADApp
- Sub AcadApplication_Events() '注册事件
- '慎用事件,容易导致死循环
- '注意事件过滤
- Dim vvv As String
- vvv = Left(ThisDrawing.Application.Version, 2) '获取当前cad的版本
- Set ACADApp = GetObject(, "AutoCAD.Application." & vvv) ‘创建实例对象位 ACADApp
- End Sub
- ‘这里以要处理命令完成后的事件为例。
- Private Sub ACADApp_EndCommand(ByVal CommandName As String) ’定义要处理事件的,函数,注意函数名要与实例对象对应
- MsgBox "A drawing has just finished a " & CommandName & " command."
- End Sub
在模块中如下定义:
- Dim mycad As New xcadEvent '定义事件对象
- Sub testtest()
- mycad.AcadApplication_Events '注册实例事件
- End Sub
运行子程序,完成注册。
实际使用效果:
测试工程:
|