时间:2024-05-04
江 涛, 何法江
(上海工程技术大学 航空运输学院, 上海 201620)
面对日益多样化的用户需求,Creo软件本身的功能不可能满足各种设计需要,特别是国外的CAD软件在设计标准、规范上和国内存在差异。因此对于Creo的二次开发是必要的,开发出适合本单位的应用程序,提高产品的设计效率,加快产品更新速度[1-3]。基于这一点,为了使软件能够在企业特定产品设计中最大限度地发挥潜力,达到提高经济效益的目的,就需要应用Creo2.0提供的二次开发工具Creo Parametric Toolkit进行二次开发,将其进一步充实、完善、改进,这一研究工作是Creo 2.0软件应用过程中的重要任务[3-4]。
Creo设计助手的功能包括自动保存功能、批量转档功能(三维转IGS、STP格式,二维转PDF、DWG格式)、批量添加参数及关系功能和右键菜单(三维建模命令、曲面命令、曲线命令、基准命令、打开工作目录)的拓展。解决了Creo软件无法实现批量转档、批量添加参数及关系等实际操作上的问题,设计人员使用Creo建模时更加方便,达到提高工作效率、经济效益的目的。
Creo Parametric Toolkit 是功能强大的二次开发工具,其开发模式分为2种,即:同步模式(Synchronous Mode)和异步模式(Asynchronous Mode)[5-6]。由于后者Creo Parametric Toolkit应用程序和Creo之间的通信方式为遥控程序,相比同步模式操作将使用较多的时间,且使用复杂,因此选用同步模式。选用动态连接模式与对应的开发环境Microsoft Visual Studio 2010进行开发。
考虑到待开发的设计助手包括的功能较多,统一调研设计调试较为复杂,因此决定逐一设计各个功能,最后将各功能集成即可。
在开发之前,需对Microsoft Visual Studio 2010(以下简称VS2010)进行环境搭建,以使Microsoft Visual Studio 2010 DLL库与Creo建立连接。依次进行自动保存、批量转档、批量添加参数及关系的菜单设计和MFC对话框设计以及右键菜单的开发,将开发的各功能集成并调试和完善,最终完成设计助手的开发。具体技术路线如图1所示。
图1 技术路线图
在开发时,先要进行环境搭建,目的是建立Microsoft Visual Studio 2010 DLL库与Creo的连接。
新建一个MFC-DLL项目,在此创建名为123的项目。设置活动解决方案平台为64位,右击所创建的项目调出属性页,包含电脑上Creo开发包路径。定义预处理器。接着选择“多线程调试DLL”运行库,包含电脑上Creo开发库路径。输入附加依赖项。至此,开发环境已搭建完成,可正常使用Microsoft Visual Studio 2010进行开发。
(1)首先为自动保存功能添加一个菜单栏按钮。然后添加入口函数和出口函数。 要添加菜单栏按钮,需使用添加主菜单函数ProMenubarMenuAdd,该函数使用格式中各参数含义见表1。
表1 ProMenubarMenuAdd函数使用格式中各参数含义
Tab. 1 The meaning of parameters in the format of ProMenubarMenuAdd function
类型参数含义输入ProMenuItemName 菜单的名称(必须是唯一的)menu_name输入ProMenuItemLabel菜单的标签untranslated_menu_label输入ProMenuItemName neigh-bor菜单栏中的相邻菜单输入ProBoolean定义是否将菜单添加到邻居add_after_neighbor菜单的左侧或右侧PRO_B_TRUE指定在右侧输入ProFileName filename包含标签的消息文件的名称
添加好主菜单后,为创建的主菜单添加按钮,需要用到函数ProMenubar-menuPushbuttonAdd,该函数使用格式中各参数含义见表2。
表2 ProMenubar-menuPushbuttonAdd函数使用格式中各参数含义
此后需对按钮添加动作,使用ProCmdActionAdd函数,该函数使用格式中各参数的含义见表3。
(2)菜单按钮代码编写完成后,需要在所创建的MFC-DLL文件中添加资源文件,用来将按钮显示在Creo菜单栏中。资源文件编写后,仍需编写注册文件,才能在Creo辅助应用程序中载入所开发的二次开发工具。在编写注册文件前,需先在Microsoft Visual Studio 2010中生成MFC-DLL的解决方案,生成结束后会在MFC-DLL文件夹中自动创建对应的.dll文件。
(3)接着调用MFC对话框并设计MFC对话框。自动保存功能的对话框设计较为简单,只需放置一个文本编辑框用来存储用户输入的自动保存时间间隔,另外还需2个按钮供用户点击开始和取消自动保存。由于要实现自动保存功能,即每隔一段时间当前Creo自动保存一次,因此需要调用时间计时器。设置时间计时器的动作函数为保存Creo当前模型,将其作为回调函数,每隔一段时间自动调用该函数即可完成自动保存。其中,时间间隔通过用户输入到界面的文本编辑框,再从文本编辑框中获得数据。
表3 ProCmdActionAdd函数使用格式中各参数含义
Tab. 3 The meaning of parameters in the format of ProCmdActionAdd function
类型参数含义输入char* action_name动作的名称(必须是唯一的)输入uiCmdCmdActFn action_cb回调函数输入uiCmdPriority priority定义相对于在执行回调函数期间调用其他操作的操作优先级输入uiCmdAccessFn access_func定义动作可访问性的功能输入ProBoolean allow_in_non_active_window定义此动作是否可以在非活动的Creo Parametric窗口中执行输入ProBoolean allow_in_accessory_window定义此操作是否可以在附件Creo Parametric窗口中执行输入uiCmdCmdId* action_id动作的标识符
(1)创建一个新的MFC-DLL文件,在此创建名为“1234”。同样需进行开发环境搭建,搭建过程详见2.1。环境搭建完成后在1234.cpp中创建菜单按钮,过程详见2.1。代码编译完成后需要进行资源文件和注册文件的编写。其中CreoMenubar2为菜单的名称,textCreo_button2为按钮的名称,textCreo_bu-tton2h为按钮帮助信息的内容。
(2)创建MFC对话框并使其通过点击按钮调用的过程详见2.2,不做赘述。在此添加MFC的CDialog类名为DLG2。批量转档的对话框首先应存在一个列表控件用于存储用户选择的需转档的文件名,并放置一个对应的选择文件按钮,同时为了优化用户体验,还应设置额外的按钮用于清空列表控件。转档需要用户设置所要转成的类型,因此放置一个下拉菜单,存储“IGS;STP;PDF;DWG;”字符串数据供用户选择。最后用户需要选择文件输出目录,用文本编辑框存放并放置一个对应的选择目录按钮。
根据需转档的类型,使用的函数也不同。文件转为dwg格式时使用的函数为Pro2dExport,该函数使用格式中各参数含义见表4。
表4 Pro2dExport函数使用格式中各参数含义
Tab. 4 The meaning of parameters in the format of Pro2dExport function
类型参数含义输入ProImportExportFile format要导出的文件类型输入ProPath filename要创建的导出文件的名称和绝对路径输入ProMdl model要从中导出信息的2d模型输入Pro2dExportdata data用于导出的说明,可以为NULL
(1)创建一个新的MFC-DLL文件,在此创建名为12345。同样需进行开发环境搭建,搭建过程详见2.1节。环境搭建完成后在12345.cpp中创建菜单按钮,具体过程详见2.2节。代码编译完成后则要进行资源文件和注册文件的编写。其中,CreoMenubar3为菜单的名称,textCreo_button3为按钮的名称,textCre-o_button3h为按钮帮助信息的内容。
(2)创建MFC对话框并使其通过点击按钮调用的过程详见2.2节,不做赘述。在此添加MFC的CDialog类名为DLG3。批量添加参数及关系的对话框首先应存在3个列表空间,分别用于存储用户选择的需添加参数和关系的模型名称、用户设置的参数名称和参数值以及用户输入的关系式,每个列表控件下应有对应功能的按钮供用户点击。为了优化用户体验,在模型列表下还应设置“清空列表”按钮用于清空存放模型名称的列表控件。同样在参数列表下,应设置修改参数的功能按钮以及可供用户选择参数类型的下拉菜单,下拉菜单中可选的参数类型为“字符串;实数;整数;”。
批量添加参数主要用到的函数为ProParameterCreate,功能为创建参数。该函数使用格式中各参数含义见表5。
表5 ProParameterCreate函数使用格式中各参数含义
Tab. 5 The meaning of parameters in the format of ProParameterCreate function
类型参数含义输入ProModelitem* owner所有者(模型项目或实体)输入ProName name参数的名称输入ProParamvalue* proval参数将保留的初始数据输出ProParameter* param创建和初始化的句柄
在已创建好的MFC-DLL文件中,添加一个程序的源文件,在此命名为“P-OPMENU.cpp”。(开发环境已搭建完成)。
考虑到需使用户体验良好且界面整洁,决定将设置及打开工作目录、样条曲线命令对应按钮添加到模型树右键菜单中,将基准命令、曲面命令、三维建模命令对应按钮添加到模型右键菜单中。要添加模型树右键菜单,须在自定义的模型树右键菜单入口函数中编写代码,所使用的添加方法及函数与添加菜单栏按钮大致相同,添加模型右键菜单则需通过调用函数ProNotificationSet的方法,该函数的作用就是设置要为指定操作调用的通知函数,可以将弹出右键菜单的通知添加到会话中。该函数使用格式中各参数含义见表6。
表6 ProNotificationSet函数使用格式中各参数含义
Tab. 6 The meaning of parameters in the format of ProNotificationSet function
类型参数含义输入ProNotifyType type将进行的操作输入ProFunction notify_function需调用的动作函数
打开设计完成的自动保存功能DLL文件,创建2个MFC对话框用于批量转档和批量添加参数及关系功能的实现,添加新的.cpp源文件用于右键菜单的创建。为MFC控件添加对应的变量和类,复制粘贴前编写代码并编译调试,修改或去除重定义或多余的变量并经反复编译调试,最后,就是编写资源文件,重新生成解决方案无问题,即功能集成完成。
打开Creo,点击工具栏中的“应用程序”→“注册”,找到.dat文件并加载,至此,基于Creo的设计助手二次开发全部完成。
Creo2.0作为一款设计软件本身的功能已经相当完善,但在辅助设计方面还存在一些不足。因此本文在Creo原有功能的基础上,开发了一套设计助手辅助工具。该助手以Microsoft Visual Studio 2010软件为工具,利用Creo提供的二次开发工具Creo Parametric Toolkit进行开发。设计助手包括自动保存、批量转档(三维转IGS、STP格式,二维转PDF、DWG)、批量添加参数、批量添加关系、右键菜单拓展等内容,并结合MFC对话框设计出良好的人机交互界面,以达到方便工作人员操作,提高工作效率的目的。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!