CREO vbapi二次开发-8-调用Protoolkit程序
VBAPI存在一定的功能限制,如在前文中特征的很多操作是无法用VBAPI实现的。针对这种局限性,我们可以通过在VBAPI程序中调用Toolkit程序扩展VBAPI的功能。VBAPI提供了调用Toolkit程序的功能函数,Toolkit也提供了相关函数导出功能供VBAPI调用。
1. Toolkit程序准备
toolkit开发文档对于Dll程序导出可被调用的函数的说明如下:
This function must have been declared in the application using the PRO_TK_DLL_EXPORT macro and it must have a signature identical to the signature declared for ProTKDllFunction.
可被导出的函数原型为:
ProError (*ProTkdllFunction) (ProArgument* inputs , ProArgument** outputs);
简单来说,在Dll中定义可导出使用的Toolkit函数必须使用PRO_TK_DLL_EXPORT导出宏声明,并且参数为 (ProArgument* inputs , ProArgument** outputs),返回值为ProError。用一个例子加以说明。定义一个返回整形数值的平方数函数MyPow。在Cpp文件中加如下代码:
1 | //输入一个Int值,返回其平方数 |
必须在头文件中添加如下声明:
1 | extern "C" PRO_TK_DLL_EXPORT ProError MyPow(ProArgument* input_args, ProArgument** output_args); |
最后一定要在模块定义文件(.def)中添加导出函数:
1 | EXPORTS |
这样在VBAPI中就可以调用MyPow函数了。
2. 加载Dll
VBAPI提供了IpfcDll类描述一个Toolkit Dll文件。加载Toolkit Dll由IpfcBaseSession的LoadProToolkitDll方法完成,方法返回一个IpfcDll。LoadProToolkitDll方法前三个参数ApplicationName、DllPath和TextPath与Toolkit的注册文件一致,第四个参数UserDisplay表示是否在Creo的辅助应用程序对话框中显示。加载Dll的示例代码如下:
1 | Private toolkitdll As IpfcDll = Nothing 'toolkit程序 |
3.运行Dll函数
获得IpfcDll对象实例后,调用其ExecuteFunction方法即可执行Toolkit Dll中的函数。ExecuteFunction函数第一个参数为调用Dll中定义的函数名,第二个参数为CpfcArguments类,表示Toolkit函数的输入参数,与Toolkit Dll中定义相一致,无非是定义参数的类型、名称和值,查看手册说明即可,这里不再详细说明了。调用上文构建的Toolkit Dll中”MyPow”函数的示例代码如下:
1 | Public Sub ExecuteFunction(ByVal input As Integer) |
完整代码可在Github.com下载。