基于Creo的智能模型库插件研究与开发
2020-04-20晏恒兵仲梁维
晏恒兵 仲梁维
摘 要:在产品设计过程中,传统的手工建模烦琐、重复、效率低。建立一个完善的三维零件库不仅可以节约产品的设计时间,更有益于零件的标准化。通过Creo提供的Pro/TOOLKIT接口,SQL数据库技术,MFC及阿里云对象存储技术,在VS2012开发环境下,对Creo模型库插件进行了设计,实现了用户直接通过Creo插件获取到各种型号的三维模型。
关键词:Creo二次开发;MFC;模型库;插件设计;SQL
中图分类号:TP391 文献标识码:A
Abstract:In the process of product design,traditional manual modeling is tedious,repetitive,and inefficient.Establishing a perfect 3D part library can not only save the design time of products but also benefit the standardization of parts.Through the Pro/TOOLKIT interface provided by Creo,SQL database technology,MFC,and Aliyun object storage technology,in the VS2012 development environment,the plug-in of Creo model library was designed to realize that users can directly obtain various types of 3d models through the plug-in of Creo.
Keywords:secondary development of Creo;MFC;model library;plug-in design;SQL
1 引言(Introduction)
随着互联网、大数据、AI技术的飞速发展,我国工业正在进行着转型升级,通过信息技术和实体经济的相互融合,网络科技对数据资源的管理整合,可以有效地提高工业质量和生产效率[1]。在使用Creo软件进行设计工作中,会经常用到一些常用件、标准件、非标准件和成品设备等几何模型,且随着设计工作的增长而不断积累增多,这些积累的设计模型成为设计资源,将为以后的设计工作提供极大的便利,主要表现在提高了设计效率和质量[2]。将这些模型按品牌、系列、型号进行分类,并通过阿里云对象存储OOS提供的API接口将模型上传至服务器端。用户即可通过Creo插件来获取这些模型,并插入到装配体中。
2 模型库设计与分析(Model library design and analysis)
Creo是整合了PTC公司的三个软件Pro/Engineer的参数化技术、CoCreate的直接建模技术和ProductView的三维可视化技术的新型CAD设计软件包,其强大的参数化设计技术,以及提供的可扩展功能的VBAPI,VC++结合ProToolkit,Java结合J-Link二次开发的接口,使得其在机械、电子、模具、汽车、航空航天等行业得到了广泛的应用[2]。基于各种开发接口的特征和插件需求说明,选用功能齐全的ProToolkit接口进行插件的开发。
ProToolkit使用面向对象风格的C语言编程,并且提供了用于底层资源调用的函数库和头文件,外部应用程序可以通过这些函数来访问Creo[3]。此外,ProToolkit应用程序有两种工作模式,同步模式和异步模式,由于插件需要與Creo一同启动,所以采用同步模式。
接下来,我们对整个模型库进行详细分析。
①供应商通过阿里云对象存储OOS提供的API接口将模型上传至阿里云服务器,上传模型的同时,将模型的品牌、系列、型号、价格写入模型数据库中,并在阿里云服务器端生成相应的模型下载链接。
②在用户端,插件的操作界面由四个对话框组成,分别是模型库、用户登录、路径配置、预选品牌。用户打开插件后,首先需要登录,若用户没有账号,登录对话框提供了用户注册功能。登录成功后,插件通过ADO方式读取远程数据库来获取用户信息,包括用户名、密码、是否为VIP用户、账户资金数,以及用户经常下载的模型品牌。随后可选择性地对模型品牌预先选取,以及对下载的模型存放路径进行配置。以上的用户登录信息,以及配置路径在第一次设定好后均会保存至注册表,方便下次直接进行模型库的访问。在模型库界面,主要用来获取需要的模型,用户可以通过型号,品牌两种方式是来搜索模型。
③模型型号选好后,点击下载模型,此时,插件根据用户的选择从模型数据库获取模型信息,主要包括模型品牌、系列、型号、子零件和价格。若用户为VIP或账户资金数大于模型价格,则插件通过链接将模型从阿里云下载到本地并直接插入到Creo中,否则自动打开浏览器,跳转到用户充值界面。
3 模型库开发(Model library development)
3.1 环境配置
在VS2012新建一个MFC DLL项目后,需要对其进行环境配置。首先将配置属性平台改为“活动(X64)”,之后添加包含目录和库目录,并在预处理定义中添加“PRO_USE_VAR_ARGS”,最后在附加依赖库中添加“wsock32.lib,psapi.lib,netapi32.lib,mpr.lib,ucore.lib,udata.lib,protk_dllmd.lib”。
3.2 创建菜单
菜单可以说是程序与Creo进行交互的重要通道。在Creo环境加载Pro/T-oolkit应用程序时,首先调用初始化函数user_initialize(),该函数用于设置需要添加的菜单,以及其他的一些初始值的设置,与C程序的“main”函数作用相当。创建菜单的语句在初始化函数内部执行。ProMenubarMenuAdd()用于向Creo中添加一个新的菜单,菜单项在菜单体系中不能有相同的名字,菜单标签名必须与信息文件中对应字段的表示关键字相同[4]。 ProMenubarPushbutton-add()函数在新的菜单中添加一个按钮,在该函数前需要添加动作函数ProCmd-ActionAdd(),用户点击按钮后,可响应该函数。动作函数的功能主要为弹出MFC对话框,整个插件需要弹出四个对话框,故需要添加四个按钮,四个不同的动作函数来响应MFC对话框的创建操作。
3.3 登录模块
环境配置成功后,便可以开始程序编写。由于Pro/Toolkit自带的UI界面资源文件编写不方便,这里使用MFC对话框来设计人机交互界面[5]。用户要获取模型,首先需要登录,其登录界面传统界面并无差异。
在编写登录模块代码前,需要在stdafx类中新建三个全局变量:quanju_isvip、quanju_accoun、quanju_Brand用来向其他类传递账户信息,包括是否为VIP用户、账户余额,以及用户常用品牌。输入用户名及密码点击登录后,通过连接远程数据库,从用户数据库中读取相关信息,若将“记住密码”选项打钩,则通过以下代码,将用户信息写入注册表,下次登录则会自动填写用户名和密码。
3.4 路径配置及预选品牌模块
路径配置用于设置将模型下载到本地后存放位置,与用户登录相似,第一次设定后,信息也将保存到注册表中。其界面如图2所示。
在图3的预选品牌界面中,由于模型库中零件数量众多,为避免模型型号加载速度过于缓慢,可在此界面中选择用户需要的品牌来加载相应的零件型号。为了让用户直观地看出选择了哪些品牌,将MFC列表框的HasStrings属性设置为True,Owner Draw属性设置为Fixed,为列表框添加变量时,变量类型为CCheckListBox,即可实现一个支持复选框的列表框。同樣,还需要在stdafx类中新建一个全局变量quanju_selectBrand,用于向模型库类传递所选品牌的信息。
3.5 模型库模块
模型库为整个插件的核心部分,其界面如图4所示。它提供了两种方式用于从服务器端下载模型。
第一种通过型号搜索方式来获取模型。型号搜索可以按预选的品牌直接搜索所有型号的模型,还可以输入模型型号开头几个字符来进行模糊搜索,最终定位到想要下载的模型。“加载型号”按钮为通过预选的品牌加载出所有的模型型号。
为实现模糊搜索功能,需要添加combox的EDITCHANGE事件,其数据库操作字符如下:
第二种方式则是在创建对话框的同时,加载出所有品牌,用户选择一种品牌后,自动加载其下的所有系列,同理,选择一种系列,获取该系列下的所有型号。
当用户选择模型型号后,即可进入载入模型操作。根据用户选取的模型型号,通过读取模型数据库来获取模型的品牌、系列、子零件和模型价格。一个模型的型号可能是单独的一个零件,也可能一个装配体,如果是装配体,则需要将装配体的子零件也全部下载到本地。供应商上传的模型都具有一定的价值,故有些型号的模型需要支付一定的费用。vip用户可下载所有的模型,普通用户使用账户余额来购买需要付费的模型,若普通用户账户余额小于模型价格,则弹出对话框询问是否跳转至充值页面。
当用户满足下载模型要求后,即可从阿里云服务器端获取该模型。这里使用URLDownloadToFile()[6]函数下载模型,下载链接URL由以下代码生成。
3.6 编写信息文件
信息文件是一种文本文件,用来定义菜单项,菜单项提示等信息。使用记事本将菜单及菜单下的四个按钮的信息写入文本文件中,并保存在Pro/Toolkit应用程序路径下的text文件夹中。
3.7 编写注册文件
在Creo中运行Pro/Toolkit应用程序,必须先进行注册。注册文件是一个后缀为.dat的文件,文件信息包括Pro/Toolkit应用程序名称,可执行程序全路径,text文件夹路径,启动模式设置,软件版本号等。将creo起始目录设置为注册文件的路径,或把注册文件放置creo安装路径下的text文件夹并将其命名为“protk”,当打开Creo后,Pro/Toolkit应用程序便会自动加载到Creo中[7]。此外,还可在Creo中工具->实用工具->辅助应用程序,手动注册Pro/Toolkit应用程序。
4 定义Creo功能区(Define the Creo function area)
从proe5.0升级到Creo1.0后,其用户界面发生了很大的改变,采用了主流的工具栏来定义功能区。打开Creo,将设计好的Pro/Toolkit应用程序加载到Creo中,点击Creo自定义功能区,此时会出现之前定义好的四个TOOLKIT命令,将其添加到新建的选项卡中。随后点击导入/导出->导出所有功能区和快速访问工具栏自定义,将导出的文件与信息文件存放在一起,并将其命名为“toolkitribbonui.rbn”。在下次打开Creo后,toolkitribbonui.rbn文件将会与Pro/Toolkit应用程序一起加载。
5 结论(Conclusion)
文章根据插件需求,首先介绍了模型库总体设计流程,将模型库划分为四个模块:用户登录、路径配置、预选品牌、模型库。随后对四个模块设计过程进行了详细介绍。最后,介绍了如何定义Creo功能区。插件的使用面向海内外所有用户,供应商不断将模型上传至阿里云对象存储,用户获取到模型数量将会不断增加。通过此Creo模型库插件,用户可以很方便地获取到所需要型号的三维模型,这样极大减少了产品设计时间,有助于提高工作效率。
参考文献(References)
[1] 姜萍.基于CREO的三维模型库系统设计与开发[D].合肥工业大学,2018.
[2] 李雪,王璐.Creo二次开发参数化设计技术[J].电子技术与软件工程,2019(03):39.
[3] 张继春.Pro/ENGINEER二次开发实用教程[M].北京:北京大学出版社,2003.
[4] 王文波.Pro/E Wildfire4.0二次开发实例解析[M].北京:清华大学出版社,2010.
[5] 孟庆当.基于Pro/TOOLKIT智能出图系统的设计与开发[D].合肥工业大学,2015.
[6] 朱文伟.Visual C++2013从入门到精通[M].北京:清华大学出版社,2017.
[7] Parametric Technology Corporation.PTC Creo Parametric TOOLKIT3.0 User' Guide.USA:PTC,2014.
[8] 曾斌,贺电,尹子轩.基于Creo二次开发的液压管路智能设计系统的研究与应用[J].液压与气动,2019(10):118-123.
[9] 张文彬,沈精虎,夏凡.基于组件的快速变型设计系统的开发[J].制造业自动化,2017,39(09):64-66.
作者简介:
晏恒兵(1995-),男,硕士生.研究领域:Creo二次开发.
仲梁维(1962-),男,硕士,教授.研究领域:计算机辅助设计,智能制造.