
黎明工装pdm系统客户化开发技术.doc
11页黎明工装黎明工装 PDM 系统客户化开发技术系统客户化开发技术发表时间:2008-9-20 孙洪爽 来源:e-works基于 TCE(Teamcenter)平台,运用 Java 语言,实现 TCE 系统的缺省功能重点介绍利用多线程并行技术完成画图工具软件 ug 和 Intercad 在 iman 下的集成;一个可批量导入二维 CAD 文件的工具的制作1 前言前言计产品生命周期管理(PLM, Product Liftcycle Management)是指对产品从概念设计、详细设计、生产、投用、维护和后期服务直到产品退出市场并消亡的完整生命周期的管理国际上也将 PLM 定位于协同产品定义管理(collaborative Product Definition management,cPDm)领域,将企业生命周期模型分解为三个主要的生命周期:产品生命周期,制造生命周期,企业运营生命周期工装 PDM 系统是黎明 PLM 系统其中的一个子系统,工装原形系统包括 TCE/TCM (iMAN) 开盒即用(系统缺省)功能、经客户化定制实现的功能和经客户化开发实现以下功能:有关的用户应能够查阅到正确的、完整的与零件设计相关的图文档、工艺规程文档(或各种电子版模型文件)。
当主管人员收到一个“工艺装备设计请制单“并同意请制的内容后,便可以通过 TCE/TCM 内建的电邮功能派工,电邮的内容应包括“工艺装备设计请制单“, 零件设计图文档的引用及工艺规程文档的引用设计员收到派工(由主管人员发的电邮)后,便可以开始工装设计流程,流程模板应自动地将常规的审批人员填上,但设计员还是可按实际需要来定义名个节点的审批人员工装设计流程启动前先生成“工裝 Item“和“KBE 数据集“、“Intercad 数据集“(2),Item 的编号按工装专业及类型跟据编号规则产生,“工裝Item“的 A 版本(Revision A)和“KBE 数据集“便是工装设计流程的发放目标(Targets),而“工艺装备设计请制单“, 零件设计图文档及工艺规程文档则作为工装设计流程的引用(References)在 KBE 的环境运作下,选择合适的工装专业及类型的模板库由设计员负责,这样设计模板的选择就可以以“向导风格“引导首节点成员按步骤完成“模板“的确定操作设计员完成设计后便可把流程推进到下面的节点作校对和审批,如在流程的某一节点发现问题,可在问题节点直接打回设计节点让设计人员修改当一个设计流程结束(即审核完成、标检通过)时,设计文件便要归档,即按分类录入工装资源库。
2InteCAD 的集成的集成2.1 需求描述需求描述紧密集成二维设计软件“InteCAD“,要求能自动提取用这个软件绘制的工装设计图中的公共属性值(由“标题栏“、明细表及“关键尺寸“等参数构成)2.2 集成方案集成方案要把“InteCAD“集成到 TCEngineering(iMAN)内,InteCAD 要提供以下功能1) InteCAD 启动时自动读入指定文本文档,并把内容写到对应的标题栏内文本文档的例子内容如下:att1=xxx001att2=xxx002att3=xxx003att4=xxx004其中 att1, att2, att3 然后在 InterCADFolder 中建立标题栏文本文件,存放工装请制单的属性值,// create abc_btl.txt abc_btl = new File(InterCADFolder.getAbsolutePath() + “\\“ + mainPrtName + “_btl.txt“);做完后,子发送消息给父,等待父程序处理事务后,给它的返回信息,if (filepath.indexOf(“_btl.txt@“) != -1) { // 向 abc_btl 中写属性filepath = filepath.substring(0, filepath.indexOf(“@“));pro = “[TITLE]|“ + pro;String txtContent = pro.replace(|, \n);System.out.println(“txtContent=“ + txtContent);File abc_btl = new File(filepath);BufferedWriter out = new BufferedWriter(new FileWriter(abc_btl));BufferedReader in = new BufferedReader(new StringReader(txtContent));String s1;while ((s1 = in.readLine()) != null) {out.write(s1);out.newLine();}in.close();out.close();parent.send_string(“#“);}child = new Child(5018, 5019, “127.0.0.1“, 1); //打开一个通讯端口child.send_string(abc_btl.getAbsolutePath() + “@#“);child.recv_string(#);父接收到子传来的信息后向 abc_btl.txt 中写属性将数据集中的文件解压到临时工作目录下:String[] arg1 = {IPR2 + “\\unjar.bat“, jar.getName(), InterCADFolder.getAbsolutePath()};new Exec(arg1);通过执行可执行文件 GenTB.exe 将 abc_btl.txt 的内容写入到.dwg 文件中,打开图形文件String[] arg6 = {IPR2 + “\\InterCAD_GenTB.bat“, “D:\\“, IPR.substring(IPR.indexOf(“:“) + 2, IPR.length()) + “\\com\\LiMing\\kbe“, “/w“, prtf[i].getAbsolutePath()};new Exec(arg6);System.out.println(“打开 CAD.......“);String[] arg = {CADPR + “\\“ + “acad.exe“, s};new Exec(arg);用户在 Intercad 中工作,然后关闭 Intercad在执行 GenTB.exe 文件写出明细表 txt 文件,自发送消息给父,父接受消息将明细表 txt 文件挂到 ItemRevision 下子:if (txtfiles.length > 0) {System.out.println(“send abc_mxb message“);child = new Child(5018, 5019, “127.0.0.1“, 1);String c = InterCADFolder.getAbsolutePath() + “\\“ + mainPrtName + “_mxb.txt$#“;child.send_string(c);child.recv_string(#);} else {child = new Child(5018, 5019, “127.0.0.1“, 1);String c = “no abc_mxb file#“;child.send_string(c);child.recv_string(#);System.out.println(“no abc_mxb message“);}父:if (filepath.indexOf(“_mxb.txt$“) != -1) { //intercad mxbfilepath = filepath.substring(0, filepath.indexOf(“$“)) + “#“;new GeneratePartlistText(session, filepath, ItemRev);parent.send_string(“#“);}子将临时文件夹下的文件压缩发送给父,父打包回 iman 中,子删除临时工作目录子:System.out.println(“压缩文件“);String[]arg2={IPR2+“\\InterCAD_jar.bat“,jar.getName(),imanTempFolder.getAbsolutePath()};new Exec(arg2);3 “KBE 组合夹具系统组合夹具系统“的集成的集成“KBE 组合夹具系统“是工装所现有的一种设计工具,虽然它是基于 UG,但是它的运作需要独立的数据库和操作系统的文件管理来支持,因此不能利用现有的 iMAN/UG 集成功能来管理,可行的管理方案如上图所示,此方案所管理的物件是以每一个工装为单位,而不是深入到工装结构下的零/部件,KBE 生成的数据包括如下表 。
由此方案所产生的工装设计,可以在没有 KBE 功能的 UG 系统内打开,用户亦可通过 JT-viewer 在 TCE 的应用界面浏览三维模型(Direct Model数据集),但是在设计的过程中如果要引用系统内的 UG 文件(如产品零件),必须先把文件导出集成 KBE 的实现原理和 Intercad 类似,都是通过多线程通讯完成的,最终结果如图4 辅助导入工具辅助导入工具4.1 需求需求为将工装所以前完成的大量二维工装设计 CAD 文件(历史数据资源)导入到“iMAN 工装系统“中,以便向设计、工艺等技术人员提供服务需要一个可批量导入二维 CAD 文件的工具,导入的同时将文件的相关属性提取出来,归并到“工装资源库“中,并自动生成“有效“的 BOM 结构表(“有效“指即能表明工装本身的结构关系,也要关联到被加工或测量零件的工艺表的相关工序中);因为此导入工作是非常规的,所以导入工具是需要订制的,另外导入工具需要 InteCAD 的技术支持才能完成4.2 导入策略导入策略从二维装配图,导入程序可以利用 InteCAD 提供的函数生成明细表文本文档和从标题栏里提取以下的属性导入程序先按工装图号生成工装 Item,因为标题栏内不含请制单号,所以工装所要提供一个工装图号与请制单号对应的文本文当,新生成的请制单会挂在工装 item 版本下,请制单的备注会注明这是批量生成的,导入程序再通过明细表文本文档把装配图及各零件图打成一个包,最后生成InteCAD 数据集挂在工装 item 版本下。
4.3 实现实现同样也利用了线程之间的通讯技术启动导入 import.bat 文件,首先子在存放导入文件夹下搜索出所有的组装件,public static boolean isAssemble(File f) {String dwgname = f.getName();if (f.isDirectory()) {//is it a directory?return false;} else if (!((dwgname.substring(dwgname.indexOf(.)).compareTo(“.dwg“) == 0)||(dwgname.substring(dwgname.indexOf(.)).compareTo(“.DWG“) == 0))){// is it not a dwg ?return false;} else {// is it only have one - ?int cnt = 0;for (int pos = 0; pos < dwgname.length(); pos++) {if (dwgname.charAt(pos) == -) cnt++;}if (cnt != 1) return false;}return true;}然后搜索出组装件相应的所有零组件,再到 iman 中搜索是否已存在与组装件同名的 Item,如果有就越过不导入。