《基于ug的产品信息集成管理研究》由会员分享,可在线阅读,更多相关《基于ug的产品信息集成管理研究(13页珍藏版)》请在金锄头文库上搜索。
1、基于UG的产品信息集成管理研究提出在三维CAD(UG)环境下,采用面向对象编程语言C+,综合应用UG/Open API和Oracle网络数据库技术,实现产品设计信息的提取、数据统一集成管理。分析了产品数据结构,提出零件信息ER模型,以DLL方式与UG交互,深度搜索遍历产品装配结构并提取零部件设计信息,开发了基于C/S结构的产品数据集成管理系统。1前言 计算机集成制造(CIM)的实质是产品设计、工艺规划、生产制造等应用阶段信息流的传递作用过程。信息是与设计、制造等过程有着本质联系的基本元素,其集成管理是整个过程都予以关注的核心任务。产品设计信息的获取是CIMS系统的首要环节,是当前遏制制造业信息
2、化进程的“瓶颈”之一。特征造型技术将产品的几何信息和非几何信息汇集到产品定义中,不仅能表达产品的几何形状,而且同时表达了产品的制造要求,在较高层次上体现了设计者的意图1。但是在CAD环境下图形数据为非结构化数据,无法被后续系统直接使用。国内外学者对零件信息模型的定义和信息集成进行了大量的研究。基于中性文件STEP、IGES、PDES标准的信息集成方法27,在异构三维CAD系统的信息流通上,以其较好的通用性占有一定的优势。但中性文件在信息传输过程中必须进行语法分析和语义检查,数据段的提取和预处理方式较为麻烦。根据PDES标准从设计领域进行特征定义,其设计特征库的定义存在一定局限性,且系统开发难度
3、大。本文提出在UG CAD环境下,综合应用UG/Open API函数和Oracle网络数据库技术,实现产品设计信息的提取、数据统一集成管理。 2系统总体结构 随着网络制造技术的发展,企业不仅要考虑自身内部信息共享,还要考虑与外部环境集成,企业与企业之间实现信息交流与共享,从而实现制造资源的重组,获得更大效益。支持分布式网络制造和网络企业联盟的产品信息管理系统将成为重要的发展趋势。企业内部的产品设计、工艺设计、加工制造、生产管理等多个环节、多个部门要求协同工作,共享信息。应用网络技术构建一个分布式操作和数据库管理为一体的企业内部网,有利于企业各部门之间实现数据和资源共享。 Oracle是企业级的
4、关系型数据库系统8,具有很强的联机事务处理能力,包括分布式查询、多点更新、远程调用等,非常适合联盟企业生产信息数据库的分布式处理,支持用户自定义数据类型的存储,具有较好的数据安全管理能力。Oracle支持客户机/服务器工作方式,客户端负责处理用户界面和企业应用逻辑;服务器端负责处理数据存储、检索和管理数据库等。本系统的客户端将UG设计环境中的产品信息通过API函数提取,经数据库开发接口和网络传输,存储到服务器统一数据库中。系统总体结构如图1。 3关键技术实现 3.1零件信息的E-R模型与数据存储 计算机抽象表达客观事物首先必须进行数据模型化处理,映射在模型中的信息是对真实零件信息的一种收集和抽
5、象,以便于计算机处理的形式存储。从客观世界到计算机形式语言的过渡需要建立概念模型。对零件进行概念设计得到零件信息模型的典型方法是实体属性联系方法(Entity-Attribute-Relationship)(或E-R模型)8。E-R模型包括实体、属性和联系三大要素,是研究零件组成要素及其关系的有效方法。零件由许多形面要素构成,一个零件与多个特征形成1:n的构成关系,特征与特征之间形成不确定的位置和基准关系。划分实体和属性,确定实体间的关系是建立E-R模型的核心问题。根据E-R方法,将零件图号,零件名称、零件类型、毛坯类型、零件材料、最大径向尺寸和最大轴向尺寸,生产批量等作为实体零件的总体属性。
6、而特征实体要素的属性主要有尺寸及公差,表面粗糙度,形状公差、位置公差等,如图2。 E-R模型属于概念结构,为了在关系数据库管理系统中进行零件信息存储和管理,还必须将概念结构转变为关系数据模型的逻辑结构。关系数据模型的基本思想是在二维表中表示实体、实体属性以及实体与实体之间的关系。对于实体,转化为一个关系模式,即一个二维表,实体属性转化为二维表中的列字段。 3.2动态链接库的加载 UG/ Open API所开发的应用程序可以在两种不同的环境下运行:Internal和External9。对于在Internal环境下的程序只能在UG Session下运行,其入口函数是ufusr或ufsta。所以只要
7、在用户应用程序中加入任何一个入口函数就可以实现与UG进程交互。同时UG OPEN MenuScript提供修改UG菜单的脚本语言,比如添加、删除、定制菜单等,开发者可以使用该语言修改菜单响应行为,ACTIONS可以是宏(.macro)、C或C+程序(.so,.sl,.dll)、GRIP程序(.grx)和UTD(.utd)。通过加载不同的动态链接库来修改响应行为,即实现了不同用户应用的加载。 创建编辑UG主菜单和下拉菜单以及工具条的方法有两种:一是通过编辑Menu文件添加和修改菜单项;二是开发C应用程序调用MenuScript API函数和子程序开发定制菜单选项。其不同之处在于:前者是通过语法“
8、ACTIONS”指定菜单响应行为,可为API程序、GRIP程序、UTD文件,使用简单灵活;后者是通过API函数UF_MB_add_actions注册回调函数,适合相应模块应用功能扩展。 本文在Internal环境下将入口函数ufusr加入VC+工程,开发了信息提取应用程序,建立了动态链接库。并借助于文本编辑器,编辑菜单脚本文件,以(*.men)格式存放于$UGII_USER_DIRapplication目录下,从而实现了动态链接库的加载过程。3.3设计信息获取界面的开发 一般情况下,UG/Open API使用界面开发工具UIStyler来开发应用程序界面9。UIStyler是一种可视化开发工具
9、,提供Label、Bitmap、String、Option Menu、Button等控件,可与Menuscript菜单脚本文件结合定制用户菜单和界面。它直接通过actions的方式被UG调用,从而将用户应用和UG应用完全融合。与流行的Windows应用程序开发工具相比,UIStyler提供的控件较少,功能有限,如树型控件、列表控件、视图类窗口等在UIStyler中无法实现。要创建复杂的应用程序界面,需在VC+环境下使用基础类库MFC来实现。 基础类库MFC是C+的编程接口,而UG/Open API所使用的是标准C,因此在UG/Open API应用中不能直接使用MFC类库。但是如果在基于MFC的
10、VC+用户应用工程中加入UG/Open API所使用的库函数和头文件则能正确通过编译,生成动态链接库。例如,在用户工程中加入UG的两个库文件libufun.lib libugopenint.lib(这两个文件位于UG安装目录的UG OPEN子目录中),并加入以下语句即可调用基于MFC的非模态用户对话框(对话框的属性必须为Visible)。 AFX_MANAGE_STATE(AfxGetStaticModuleState(); CgetinforDlg * dlg = new CgetinforDlg(); dlg-Create(IDD_DIALOG1); 用这种方法显示的对话框可按用户要求保留
11、在UG界面层,并且采用加锁和解锁机制可与UG进程交互。 3.4数据库开发技术 ADO(ActiveX Data Object)是基于OLE DB的数据库应用程序开发接口,可以访问Access、SQL Server、Oracle等数据库。使用ADO技术开发数据库应用程序有两种途径: ActiveX控件,ADO对象。使用ActiveX控件访问数据库,对程序控制相对较弱,效率比较低;直接使用ADO对象来访问,则可以灵活地控制应用程序。ADO保留了MFC/ODBC、DAO的特性,其类的定义是作为一种资源存储在ADO DLL中,使用ADO前必须引入ADO库文件,其引入方法是在MFC AppWizard工
12、程模版生成的标准文件stdafx.h头文件里加入以下语句(其中msado15.dll的具体位置根据系统路径确定)。 #import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) 由于ADO是一组COM动态库,所以程序在调用ADO前必须初始化OLE/COM库环境,在应用最后应该关闭连接,释放对象。ADO库包含3个接口指针:_ConnectPtr,_RecordsetPtr和_CommandPtr。在需要使用多个记录集时,最好使用已经创建数据连接的全局_ConnectPtr接口指针,提
13、高数据库连接创建的效率,然后使用_RecordsetPtr或_CommandPtr接口指针执行存储过程和SQL语句。使用该方法可以灵活实现对异构数据库的处理,程序中可以使用多种数据库,如ACCESS、Microsoft SQL、Oracle等任何支持ODBC的数据源。在oracle中,配置好ODBC数据源和驱动程序后,通过创建_ConnectPtr实例,可指向并打开该数据源。其连接语句为: m_pConnection-Open(DSN=ORADB;UID=system;PWD=manager;,adModeUnknown) 其中ORADB为在oracle中以用户名system和密码manage
14、r创建的数据源名称。 在建立与Oracle的连接之后,创建记录集,利用SQL语句将产品信息存储到统一数据库。 3.5产品装配结构的遍历 树型结构是产品数据在界面上的表现形式,这种产品数据结构来源于产品结构的遍历。在UG的装配模型中以树型结构组织装配组件和零件,该模型对应的是造型设计信息。一个部件文件中只有一个装配树根,是遍历的起点。装配中,组件和子组件之间的关系是利用实例Instance标记的,且是唯一的,所以访问每个实例Instance就能得到对应的一次关联。在进行产品结构遍历前先进行产品结构分析。 产品结构根据产品开发不同而具有不确定性,深度层次和同一层次的数量都是未知的。具有这样的层次特
15、点:与产品平行的节点是其他产品,产品的子节点可是零件或者部件,零件的子节点是特征,而部件的子节点还可以是零件或者部件,同一个零件或者部件可以同时出现在同一产品的不同部件下,不同产品也可以有完全相同的零部件(如图3)。可见产品结构是非线性结构,不能以简单的数据链来表示,且具有递归特性。 搜索常见的方法有广度优先搜索和深度优先搜索。广度优先搜索从某一顶点(假设为M)出发,在访问顶点M后再访问M的各个未曾被访问过的领接顶点(假设为N1,N2,Nk),然后再依次访问N1,N2,Nk的所有的还未曾被访问过的领接顶点。再从这些访问过的顶点出发,访问它们的所有还未被访问过的领接顶点,如此循环,直到所有的顶点都被访问完为止。广度优先搜索是一种分层搜索,不是一个递归的过程,其算法也不是递归的。深度优先搜索是从某一顶点(假设为M)出发,在访问顶点M后,再依次从M的任一还没有被访问过的领接顶点(假设为N)出发进行深度优先搜索,直到所有的顶点都被访问完为止。这是个递归定义,其算法可以用递归算法来实现。 以下利用API函数和递归调用的方法遍历装配中的组件和零件。 先用UF_ASSEM_ask_root_part_occ获得装配树根,然后用UF_ASSEM_ask_part_occ_children