一、 引言
PDM系统作为从CAD技术发展起来的管理软件,其作用就是要把企业产品设计制造过程中各个“信息孤岛”中的数据组织起来,集中管理,维护其完整性,安全性,可靠性。Pro/ENGINEER作为一款比较普及的3D CAD/CAM系统,将其中的数据通过PDM系统加以管理和控制,成为PDM系统的一项关键技术。
Pro/Toolkit是Pro/ENGINEER自带的基于C语言的二次开发工具,能够实现与Pro/ENGINEER的无缝集成。它封装了许多针对Pro/ENGINEER底层资源调用的库函数与头文件,借助第三方编译环境进行调试。Pro/Toolkit使用面向对象的风格,在Pro/ENGINEER与应用程序之间通过函数调用来实现数据信息的传输,为Pro/ENGINEER与PDM系统集成接口的开发提供了便利的工具和手段。
本文主要介绍了基于Pro/Toolkit二次开发的Pro/ENGINEER与PDM系统的接口及其实现过程。
二、 Pro/ENGINEER的二次开发工具——Pro/Toolkit
1.Pro/TOOLKIT的开发环境
Pro/Toolkit支持在Windows 2000/NT/XP操作系统中使用C和C++语言设计程序,采用Microsoft Visual C++6.0作为编译器和连接器,并可以在Microsoft Visual C++6.0的集成环境下完成程序的设计、调试和编译。
2.模型、实体与特征
模型(Model)是Pro/ENGINEER的顶层对象的简称,所谓的模型实际是Pro/ENGINEER环境的模型文档。按其类型可分为零件(Part)、组件(Assembly)、制造(Manufacturing)、绘图(Drawing)等模型。
Pro/ENGINEER的实体(Solid)是指1个零件(Part)模型对象或组件(Assembly)模型对象,该对象在Pro/Toolkit中声明为一个非透明句柄,称之为“ProSolid”。
实体特征是实体的下级对象。
3.Pro/TOOLKIT二次开发的实现步骤
使用Pro/Toolkit开发应用程序包含三个步骤:编写源文件、生成可执行文件及Pro/Toolkit应用程序在Pro/ENGINEER中的注册。
(1)编写源文件
源文件包括三种类型:菜单文件(resource)、窗口信息文件(Message.txt)和C程序。
(2)生成可执行文件
利用VC的应用程序设计向导(AppWizard)和类向导(Class Wizard)来进行Pro/Toolkit应用程序的设计、创建和调试。并将源文件生成动态链接库(dll)
(3)可执行文件在Pro/ENGINEER中注册并运行
要使Pro/Toolkit应用程序在Pro/ENGINEER中运行,首先要制作一个名为protk.dat 的注册文件。它的形式如下:
NAME <应用程序名称>
EXEC_FILE <生成的可执行文件或动态链接库的位置>
TEXT_DIR <菜单文件和窗口信息文件位置>
STARTUP <工作模式Spawn 或dll>
ALLOW_STOP <是否允许停止应用程序>
DELAY_START <是否直接启动应用程序>
REVISION <所使用的Pro/ENGINEER版本号>
END
应用程序有两种注册方式:自动注册和手工注册。自动注册是指将注册文件放在指定的目录下(Pro/ENGINEER安装目录的\text目录或者是Pro/ENGINEER的起始位置设定的目录),运行Pro/ENGINEER ,此时注册文件中的所有Pro/Toolkit应用程序将被自动注册。手工注册是指注册文件不在指定目录时,启动Pro/ENGINEER之后在Utilities菜单下选择Auxiliary Applications菜单项,然后在对话框中选取“注册”按钮进行注册。
Pro/Toolkit应用程序在Pro/ENGINEER中注册成功后,选择“启动”按钮就可以运行了。此时,你所编制的新菜单或新菜单按钮就会出现在菜单中,选中它就能完成你所定义的动作。
需要说明的是,如果只加载一个应用程序,可以选择自动注册并将“DELAY_START”的值设为“FALSE”即可实现在运行Pro/ENGINEER时自动启动应用程序。
三、 Pro/ENGINEER与PDM系统集成接口技术
1.数据集成模型
该接口系统主要实现以下三类数据的集成。如图1所示。
图 1 Pro/E与PDM接口系统数据集成模型
(1)物料数据的集成
Pro/ENGINEER中的实体(Solid)导出到PDM中成为一条物料记录,实体的特征导出到PDM中成为物料记录中的相应属性。
(2)BOM的集成
Pro/ENGINEER中的组件(Assembly)模型的结构导出到PDM中成为装配体的BOM结构。
(3)图档文件的集成
Pro/ENGINEER中的图档能够提交到PDM中成为一条三维图档记录,PDM中的Pro/ENGINEER图档记录能够导出或者检出到Pro/ENGINEER中。
2.系统结构与功能
该接口系统主要分以下几个子系统。如图2所示。
图 2 Pro/E与PDM接口系统总体结构
(1)接口主菜单系统在Pro/ENGINEER中生成了符合Pro/ENGINEER风格的窗口菜单条。包括以上几个功能菜单的触发按钮。
(2)登陆PDM系统:提供了用户登陆PDM的对话框界面,实现在Pro/ENGINEER中登录PDM系统,验证用户的身份。
(3)提交BOM系统:实现了把当前Pro/ENGINEER中的实体(Solid)提交成为PDM中的物料记录,并将组件(Assembly)模型按层次结构在PDM中建立相应的BOM结构。
(4)提交图文档系统:实现了把当前Pro/ENGINEER中的模型文件提交到PDM中,成为相应物料的一条图档记录。
(5)检出/导出图文档系统:实现了在Pro/ENGINEER中获取PDM中的图文档,主要是组件(Assembly)模型文件,并且在Pro/ENGINEER环境下打开。
以上按实现的功能把Pro/ENGINEER和PDM接口系统分成了五个子系统。接口主菜单系统是其他四个系统的触发点。登陆PDM系统是实现后面几项功能的前提条件。用户在Pro/ENGINEER中登录PDM后所作的一切操作,都会进行相应权限验证,保证了在Pro/ENGINEER中对数据所作的操作的安全性。
四、 软件实现及程序示例
1. 在Visual C ++ 语言环境里建立一个基于常规MFC的动态链接库的工程
2. 在项目文件主程序里完成如下工作
(1)编写user-initialize()函数,这是程序的入口点,基本菜单及其动作执行函数都是在这里添加的。
(2)编写user-terminate()函数,它是函数的结束点,应在此完成必要的清除工作。
(3)添加必要的头文件,在程序里调用了大量Pro/Toolkit函数,这些头文件是必不可少的。
3.系统环境定制
(1)在工程里设置库文件的环境。方法是: Project→Settings →Link , 在Object/ Library Modules里添加mpr.lib、pro2tk-dll.lib、prodev-dll.lib 等库文件名。
(2)设置头文件、库文件的路径。方法是: Tools→Options→Directories ,给出必要的文件路径, 如: D:\PTC\PROE2000I2\PROTOOLKIT\INCLUDES。
4.菜单设计
在Pro/ENGINEER主界面中添加设计菜单按钮及菜单按钮调用的动作(如显示登陆对话框) 等。这一步比较复杂,需要通过Pro/Toolkit的函数和一个相应消息文件(message file)共同完成。一个完整的菜单应至少包括两个Pro/Toolkit函数,一个是菜单按钮调用的动作,另一个是真正添加菜单并将它显示出来。以下是本程序的菜单添加过程。
(1)ProMenubarMenuAdd("PDMMainMenu","SIPM/PDM","Utilities",PRO_B_TRUE,MsgFile); 其功能是设置主菜单,并列于Pro/ENGINEER原有菜单中。其中, PDMMainMenu为菜单名称,可任取; SIPM/PDM为菜单标签,在消息文件里应有对应的字符标识; Utilities为相邻的菜单名;PRO-B-TRUE可设定新菜单是否位于相邻菜单的后面; MsgFile为消息文件名。
(2)ProMenubarmenuMenuAdd("PDMMainMenu","PDMCheckoutFiles","CheckoutFiles","PDMSubmitFiles",PRO_B_TRUE,MsgFile);其功能是设置带子按钮的菜单子项。其中,PDMMainMenu为父菜单名称,可任取; PDMCheckoutFiles为子菜单的名称。
(3)ProMenubarmenuPushbuttonAdd("PDMMainMenu","PDMLogin","Login","Login Help",NULL,PRO_B_TRUE,ProLoginPDM_cmd_id,MsgFile);其功能是设置子按钮,用于调用主对话框。其中PartDesign 为子菜单的名称; Shaft 为子按钮的名称。
(4)ProCmdActionAdd("LoginPDMAct",(uiCmdCmdActFn)ProLoginPDM,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&ProLoginPDM_cmd_id);其功能是添加执行的动作,获得其句柄。其中,SHAFTDL G指动作名称,可任意命名,但必须保证唯一;cmd - id 指分配的动作标识,即唯一的输出变量。图3所示是接口程序加载到Pro/ENGINEER中的主菜单。
图 3 Pro/E与PDM接口主菜单
5. 用户界面对话框
用户界面对话框(简称UI对话框)是Pro/Toolkit提供的一种交互界面。利用UI对话框技术,在Pro/ToolKit应用程序中设计出风格与Pro/ENGINEER系统本身具有的对话框相似的人机交互界面。实现用C或C++语言编写,用来在Pro/ENGINEER环境装入对话框资源、显示对话框、设置动作和退出对话框等。UI对话框的设计主要涉及两个方面:
(1)按界面的布局编写资源文件;
(Dialog LoginPDMDlg
(Components !对话框元件声明
(PushButton OK)
……
)
(Resources !对话框资源(属性定义)
!确定按钮属性定义
(OK.Label "确定")
……
(.Label "登陆到PDM") !对话框标题
(.Layout !对话框元件的布局
(Grid (Rows 1 1 1) (Cols 1)
InputLayout
Separator1
(Grid (Rows 1) (Cols 1 1)
OK
Cancel
)
)
)
图4所示即Pro/ENGINEER中登录PDM的UI对话框。
图 4 Pro/E中登录PDM对话框
(2)针对UI对话框的功能编写相应的控制程序。
以下是提交BOM部分控制程序的示例:
//获取当前进程中的模型及其类型
ProMdlCurrentGet(&model);
ProMdlTypeGet (model, &mdl_type);
……
//提交进程中的部件
if (mdl_type == PRO_MDL_ASSEMBLY)
{
ProMdlNameGet(model,Pro_model_name);
//提交顶层装配体到选择的节点成为部件
SpInsertLPAPITEM(model_name,"部件");
……
SpInsertOneLBOMRecord(BOMid,itemid,number);
……
//获得下级模型,并提交
ProMdlDependenciesList (model, &p_array, &arr_size);
……
}
五、 结论
PDM系统作为企业信息集成的平台,实现与类似Pro/ENGINEER这种3D CAD/CAM系统的集成,已经成为PDM系统的关键技术之一。本文详细阐述了基于Pro/Toolkit二次开发的Pro/ENGINEER与PDM系统的集成接口技术。并且,开发完成了Pro/ENGINEER与SIPM/PDM的数据集成接口,在黄山汽车电器有限公司的“技术管理系统解决方案”中得到实际应用。实现了Pro/ENGINEER与SIPM/PDM系统之间,物料,BOM和图档的集成,提高了企业的工作效率,保证了设计数据的完整性,安全性,可靠性。