创建插件的第一步就是建立一个新的ActiveXEXE工程或者Active DLL工程。任何一种支持ActiveX组件的程序语言都能够创建插件,各种语言编写的程序的基本概念是一样的,但是所创建的组件对事件的响应并不完全相同。如果读者对ActiveX组件的内容不太清楚,最好首先查阅相关的文档以对其工作原理有所了解。下面按照步骤介绍。
1.新建Active EXE或者ActiveX DLL文件
要创建一个ActiveX组件,可以从Visual Basic的【New Project】选项对话框中选择【Active EXE】或者【ActiveX DLL】选项,如图15-13所示,然后单击【打开】按钮则创建一个ActiveX组件,此时的开发界面如图15-14所示。
图15-13 新建ActiveX组件
图15-14 开发界面
2.包含Inventor对象库
需要注意的是,在ActiveX工程中必须将Inventor的类型库包含进来。要包含Inventor的类型库,可以在VB界面下选择【Project】菜单下的【Reference】选项,则打开【Reference】对话框,将其中的【Autodesk Inventor Object Library】项选中,如图15-15所示。
当创建了一个ActiveX组件后,必须在注册表中注册才能够正常使用。关于注册的方法在下一节详细讲述。组件注册需要通过程序的ID即ProgID才能够在注册表中进行定义,ProgID由对象的名称和类的名称决定,也就是“工程名称.类名称”的形式。如果建立了一个名为Project1的工程,建立了一个名称为Class1的类,如图15-16所示,则ProgID的名称为“Project1.Class1”。新建一个ActiveX组件后会自动创建一个类模块,默认名称为“Class1”。可以通过如图15-17所示右键菜单选项来添加窗体、类模块、标准模块等,可以通过双击某个窗体或者模块等来打开它的代码窗口为其添加代码。右键菜单中也提供了Remove…(删除)、Save(保存)等选项。
3.添加代码
可以为各种模块添加代码以实现具体的程序功能。在VB中,需要利用Implements关键字定义Inventor的接口,Inventor也会通过定义的接口同插件通信。将下面的代码添加到类模块中,以起到链接Inventor和插件的作用。
图15-15 选中“Autodesk Inventor Object Library”项
图15-16 建立工程和类
Implements ApplicationAddServer这样程序中增加了一个名为ApplicationAddServer的对象,出现在VB代码窗口的对象列表中,同时它的方法也会列出在方法列表中,如图15-18所示。此时从对象列表中选择ApplicationAddServer对象,则立刻在代码窗口中为其添加Active方法的子程序,如图15-18所示,可以在其中添加程序代码,当该对象的Activate方法发生时,代码会被执行。
图15-17 类的右键关联菜单
图15-18 对象的方法列表
可以在方法列表中选择ApplicationAddServer对象的其他方法,则该方法的子程序会被自动添加。下面简单解释一下这四种方法。当插件被随着Inventor的启动而启动时,调用Activate过程。当结束Inventor程序或者从插件管理器中卸载插件而导致插件退出时,调用Deactivate过程。Automation方法允许插件暴漏自己的一个API给其他程序。ExecuteCommand方法从Inventor R6开始就已经废弃了。
4.实例学习
在这个实例中为Inventor添加一个绘图工具面板,并利用其中的工具在Inventor的草图环境下绘制几何图形。该程序范例位于光盘的“\二次开发\插件实例\”目录下。(www.xing528.com)
声明变量
在代码窗口中的最前面输入以下的代码,用来声明在程序中用到的一些全局变量。
调用Activate方法时,在零件的草图面板中添加一个新的面板,面板中添加两个工具按钮用来绘制几何图元,代码如下,读者可以参考其中的注释。
编写按钮处理程序
在变量声明部分,已经通过下面的两个语句定义了两个按钮的句柄对象oButtonHandler1和
此时可以看到在对象列表中已经添加了这两个对象,选择这两个按钮句柄对象的OnClick方法,则自动添加OnClick(单击按钮事件)的代码模块。在该代码模块中添加程序如下:
编写绘制几何图形子程序
程序代码如下:
编制其他过程程序
当退出插件时,触发Deactivate过程,其代码如下:
对于Automation方法,在本例中并不支持应用程序接口,所以也没有必要支持该属性。但是,VB在编译时要求所有的方法都应该编写一定的代码,这里可以添加如下程序代码,将函数返回值设置为Nothing,指示插件的API不可用。
对于ExecuteCommand方法,当用户运行任何插件的命令时,该方法将被调用,即使该方法不再可用,Inventor仍然会执行它。可以在令该子过程代码为空,或者加一些注释就可以了,如下所示,这样一方面能够通过编译,另一方面即使VB在进行代码优化时也不会删除它。
在全部代码都已经编写完毕以后,可以选择VB标准工具栏上的菜单【File】下的【Make插件实例.dll】选项,则生成DLL文件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。