第一次搭Pro/TOOLKIT环境,VS2017跟Creo 7.0的版本对不上,编译出来的dll扔进启动目录,Creo加载的时候弹“无法加载外部程序”,查了一下午才发现Creo 7.0要VS2017的14.16工具集,VS2019默认的v142编译出来不认。换回VS2017,重新生成,还是报错,这次是平台不对,x64的dll放进了x86的目录,Creo是64位的,dll也得是64位。
注册文件protk.dat写了三行,name写的是pro_toolkit_app,exec_file写D:\PTC\Toolkit\myapp.dll,text_dir写D:\PTC\Toolkit\text,startup写dll,allow_stop写true,delay_start写false。Creo启动的时候按name找菜单,name跟text目录下的消息文件名对不上,菜单出不来。消息文件myapp.txt里第一行写的是myapp,注册文件里name写的是pro_toolkit_app,两个名字必须一样,改完重启,菜单出来了,但点下去报“找不到回调函数”,回调函数的名字在ProCmdActionAdd里注册的跟C文件里定义的对不上,大小写敏感。
ProMenubarMenuAdd建顶级菜单,ProMenubarMenuAdd建子菜单,ProCmdActionAdd绑回调,ProMenubarMenuAdd把命令挂到菜单上,一套下来菜单能点了,但命令是灰的,因为没设敏感度,ProCmdActionAdd里的access函数返回了false,改成返回true才可点。消息文件里每一行用#分隔,第一段是消息名,第二段是显示文本,中文要转成宽字符,ProStringToWstring转完再传给菜单,不转的话中文全是乱码。

J-Link比TOOLKIT快,Java写逻辑不用管内存,但Java环境要跟Creo自带的JRE匹配,Creo 7.0带的是JDK 11,外部装的JDK 17编译出来class文件版本不对,加载报UnsupportedClassVersionError。VB API更简单,Creo里直接录宏,VBA代码改改就能用,但功能比TOOLKIT少,拉伸切除这些能调,复杂的特征创建经常找不到对应接口,最后还是回去写C。
关系式这个东西当初同事说“这个尺寸随便给,反正后面不改”,我就随手写了个d1=100,没做成参数,也没写关系式。三个月后客户要改,这个尺寸关联到另外三个零件的位置,全在装配里锁死了,改一个全红。当初要是把d1跟d0关联,d0做成参数,改d0就行,现在只能一个个零件打开改,改完还要重新装配。一语成谶,当初说“不改”的尺寸现在改得最多。
UDF做的时候参考选少了,选了一个底面和一个侧面,换一个模型底面形状变了,UDF放上去参考找不到,直接失败。后来做UDF至少选三个参考,底面、侧面、再加一个基准面,换模型的时候大不了重新指定,比失败强。族表也是,尺寸选少了,换个规格发现有个尺寸没在表里,模型对不上,回去补尺寸重新生成,之前的所有实例全要重新验证。
工程图自动化用ProDrawingViewCreate建视图,ProDrawingSheetCreate建图纸,ProDrawingViewCreate里要指定视图方向、比例、位置,建完视图再用ProDrawingViewCreateDetail建局部放大图,导出PDF用ProPlotCreate,DWG用ProExportDWG,路径里带中文的时候ProPlotCreate返回错误码,改成全英文路径才行。D:\PTC\Toolkit\下面那个myapp的工程文件,下次把消息文件里的中文全部转成宽字符再试,还有那个ProCmdActionAdd的access函数返回值……
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删