PDM/PLM/CAPP |
|
| 按行业筛选 |
|
|
| 按产品筛选 |
|
|
| |
查看本类全部文章 |
| |
|
|
|
Teamcenter二次开发中PSE产品结构的获取及自动排序功能的实现 |
|
作者:吴思达 周传宏 |
|
1 引言
产品生命周期管理(Product Lifecycle Management,简称PLM)是覆盖了从产品诞生到消亡的产品全过程的、开放的、互操作的一整套应用方案[1]。PLM不仅仅只是一套软件、一个系统,更是一种先进的管理思想,使得当代企业能够面向客户市场,快速重组产品每个生命周期中的组织结构、业务过程和资源分配,从而能够使企业实现整体利益最大化。对实施PLM而言,由于各个企业的状况及要求都是不一样的,必须满足不同企业特殊的需要。因此,二次开发是PLM实施过程中必不可少的一个环节。
2 Teamcenter系统架构
Teamcenter原先是全球著名的软件咨询和服务公司UGS公司的产品,现被西门子收购。它是一个以产品为中心的、覆盖产品生命周期各种活动与数据的、基于Web协同的集成解决方案.Teamcenter Gngilleering 2005由四层架构组成,分别是:
(1)客户层:包括富客户端和瘦客户端,此层主要用于和用户进行信息交互。
(2)Web层:是一个运行在J2EE服务器(如事件服务器BEAWebLogic)上的一个Java应用程序,主要负责客户层和企业服务层信息的交换。
(3)企业服务层:包括一系列对Teamcenter服务和服务管理器进行配置的资源,此层主要用于向下连接并操纵数据库,向上为应用组件服务,如Web处理机制、API应用集成接口等。
(4)资源层:包括数据库、卷和文件管理系统,其中文件管理系统包括FMS和TCFS。
①Teamcenter File Management System(FMS)用于从富/瘦客户端及Teamcenter Visualization上/下载数据。
②Teamcenter File service(TCFS)提供各种与卷有关的服务。
Teamcenter的开发包括客户端和服务器端的开发:客户端的开发可以使用Java语言,而服务器端的开发可以通过集成开发工具ITK及C语言来实现。Teamcenter服务器端提供了丰富的配置工具。应尽量利用Teamcenter服务器端已有的功能,以减少开发量及避免因系统升级可能导致的程序废弃。基于以上考虑,本文将二次开发的重心放在客户端。
3 客户端开发环境的搭建
3.1 程序注册
Teamcenter Engineering客户端的二次开发分为注册程序与开发程序两个阶段。所谓注册程序,就是要在Teamcenter Engineering的程序组内增添程序人口。由于是在PSE的基础上添加一个新的功能菜单。因此可以通过在客户化程序包com\ugsolutions\iman\pse目录下新建一个名为pse_user.properties文件,在其中添加相应的注册程序,及建立相应的Java文件。具体注册内容如下:
(1)在pse_user.properties中注册功能菜单的Java文件名及路径。
com.ugsolutions.iman.pse.PSEApplication.MENUBAR=com.ugSolutions.iman.pse.HTPSEApplicationMenuBar
其中,HTPSEApplicationMenuBar为排序菜单的Java文件名。
(2)在pse_user.properties中注册排序子菜单名称和相应Java文件名及路径。
SortActiorn.NAME=BOM\u6392\u5e8f
SortAction=com.ht.pse.check.SortAction
其中,\u6392\u5e8f可以通过在DOS环境中输入native2ascii编译获得;SortAction为排序事件的Java文件名。
(3)新建相应的Java文件,HTPSEApplicationMenuBar.java用于在PSE菜单栏中添加一个父菜单及一个排序子菜单,程序全路径为com.ugsolution.iman.pse.HTPSEApplicationMenuBar;sortAction.java用于实现零组件在PSE中的排序,程序全路径为com.ht.pse.check.SortAction。新建的两个类所处的层次及调用关系如图2所示。
二次开发程序类所处的层次 3.2 开发工具
程序注册后,接下来就需要对前述空壳源文件进行代码编写、调试及编译。所需要用的工具就是Java语言的编译环境,包括JDK或Eclipse这样的Java集成开发环境等。
4 装配结构获取及自动排序功能
每一个零组件的修订版下都有一张包含此零组件信息的属性表,根据企业的特殊要求,需要按各零组件修订版下属性表中的图号属性顺序输出报表。尽管Teamcenter的PSE具有很强大的功能,本身就能在PSE中对零组件按照其ltemID进行自动排序,或者可以通过手动改变Sequence No的值来调整产品结构。但是,由于企业的特殊要求,需要将装配件(包括总装配件下的所有子装配)下的所有零组件按其修订版下的属性表中的图号进行自动排序。因此,额外开发出一个专门的排序功能菜单以满足其要求。
在对产品结构进行排序前,首先要先获取其装配结构,本文采用递归算法来获取其装配结构,以及采用冒泡排序算法来对各子装配进行排序。以下以测试产品结构为例分别介绍程序实现的基本方法。
4.1 产品结构的获取
递归的含义是:为了描述问题的某一状态,需要用到它的上一状态;而描述上一状态,也必须用到它(指上一状态)的上一状态,这种用自己来定义自己的方法,称为递归定义。程序设计中,在调用一个函数的过程中又出现直接或间接调用函数本身,这称为递归调用[2]。
由于一个装配件下可能还存在着若干个子装配件,整个装配的层次依具体产品的不同而变化,因此不能用固定次数的循环来获取其整个产品结构,而使用递归算法很容易解决这个问题。程序的基本思路如下:
(1)首先定义一方法BOMSort(IMANComponentBOMLine Topline),用于获取顶层装配的下一层的所有子对象,如上罩、可控硅部件、后板组件和前板组件,将其存放在一数组中如childlist口,然后按其各自属性表中的图号屑性进行排序,有关排序在4.2节排序功能的实现中介绍。
(2)使用一循环程序分别判断上罩、可控硅部件、后板组件和前板组件下是否还有子装配:若有则重新调用BOMsort(IMANComponentBOMLine currentLine)方法获取其结构并对其子装配进行排序。
(3)依此类推,直至完成对整个装配件最底层子装配的排序,整个程序类似于X重循环,只是X(产品装配结构的层次)随着产品结构的不同而变化。在测试产品结构中,X为3,即最多为三层装配。递归算法获取装配结构的流程图如图所示。图中,X表示装配的层次,ix表示第X层装配下第i个零组件的序号,数组如childlistx[]用于存放位置为X层装配下的各个零组件。
递归算法获取装配结构的流程图 4.2 排序功能的实现
在获取产品装配/子装配结构后,同时需要对其按照各、零组件修订版屑性表中的图号属性从小到大进行排序,即图号小的在前。本文采用冒泡排序算法对产品装配结构进行排序。冒泡排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止[3]。冒泡排序法可以通过一个固定的二重循环来实现,排序功能的流程图如图所示。图中,i、j表示要比较的零组件在数组childlistx[]中的序号.Size为数组childlistx[]的大小。
排序功能流程图 本文实现了PSE产品结构的自动排序功能,满足了设计人员的特殊需求,避免了因手动排序带来的时间浪费及错误,提高了工作效率,为PLM系统在公司设计部门的全面推广铺平了道路,也是对Teamcenter Engineering原有功能的一个有力补充,也可以被其他PLM系统所借鉴。
参考文献:
[1] 凌卫青,严隽薇,王坚.面向PLM的产品数据管理技术及其工具分析[J].计算机工程,2005,31(24):1-3.
[2] 卢荣华,柳炳祥,余玉沽,等.递归与循环算法分析[J].电脑知识与技术。2005(12):151-154.
[3] 李好,王永强.冒泡排序算法的分析与改进[J].唐山学院学报,2006,19(4):102-103.
[4] 赖朝安.IMAN的二次开发关键技术[J].计算机工程与应用。2001,37(24):25-26.(end)
|
|
文章内容仅供参考
(投稿)
(如果您是本文作者,请点击此处)
(4/28/2009) |
对 PDM/PLM/CAPP 有何见解?请到 PDM/PLM/CAPP论坛 畅所欲言吧!
|