当前位置:研发设计首页 >> 管理信息化 >> 数据管理 >> 基于Pro/Toolkit的Pro/ENGINEER与PDM系统集成接口技术研究
基于Pro/Toolkit的Pro/ENGINEER与PDM系统集成接口技术研究
2006-10-26 10:04:51  作者:  来源:《CAD/CAM与制造业信息化》 2005-02

一、 引言

  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和图档的集成,提高了企业的工作效率,保证了设计数据的完整性,安全性,可靠性。

作者系上海交通大学机械与动力学院CIM所  浦振栋  褚学宁
      上海思普信息技术有限公司 陈蔚珍

 



版权所有:智造网 京ICP证100778号 京公网安备110102003025 虚假新闻举报电话:010-88379107