版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、UG平台下注塑模CAD系统BOM表功能的开发胡卫卫 王华昌(华中科技大学 材料学院,湖北 武汉430074)摘要:模具设计完成后为了快速准确得到其BOM(Bill Of Material),在UG三维设计平台下进行二次开发,开发出由实体装配模型生成BOM 的功能模块。该模块能快速自动识别出存储在模具三维模型中的零部件信息,生成可配置化的BOM表;并且可以从外部导入修改过的BOM表,保证零件信息与BOM的同步更新。关键词:BOM,装配模型,遍历,树,ExcelDevelopment of BOM function for mold CAD system under the UG platform
2、Hu Weiwei Wang HuachangAbstract:In order to generate the BOM of mold quickly after design, a function module is designed through further development under the UG platform. In the newly designed BOM module, part information stored in 3-D model is recognized automatically and quickly, and then a confi
3、gured BOM will be generated correctly; in the other hand, the modified BOM in Excel format can be imported to the 3-D model so as to update the part information of mold.Key words: BOM, assembly model, ergodic, tree, Excel1、 引言BOM(Bill Of Material)是定义产品结构的重要技术文件,是一种描述装配的结构化零件表,它反映了一个产品所有零部件的构成层次关系和数量
4、关系,产品从设计到制造的全生命周期中,BOM 起着重要的作用。因此,BOM的变化与维护将对生产产生最直接的影响,BOM的数据结构及算法构成了ERP系统数据模型的核心1。注塑模具企业的BOM表通常包括零件名称、零件编号、零件描述、零件尺寸和零件数量等信息。另外,不同企业可能会有各自不同的BOM表信息涵盖内容要求,甚至同一项BOM内容在各企业都会有不同的叫法。然而,目前国内模具企业设计人员在完成模具结构设计、生成模具物料清单(BOM)时,方法不外乎有以下两种:一是对照庞大的模具装配结构信息,逐个零件地测量、拾取其BOM信息然后记录到对应的Excel文件中;另外一种方法则是借助UG的注塑模设计向导M
5、oldwizard提供的BOM表功能,自动生成模具的BOM表。第一种方法费时费力,而且长时间靠人工记录繁多的零件信息难免出错;第二种方法则对注塑模模具设计过程有限制必须使用Moldwizard进行设计,从而大大限制了设计人员的设计自由度。两种方法还有一个共同的不足之处就是:BOM表一旦生成,就与对应的模具产品结构模型失去关联,当在外部Excel中更改零件物料信息以后,对应零件模型的信息难以保持同步更新。正是基于以上原因,提出了UG平台下注塑模CAD系统BOM表功能的开发。2、 功能定义及设计2.1 功能定义综合前文提到的两种BOM设计方法的优点,本模块提供的BOM表功能既达到了全自动识别零件信
6、息和出表的效果,又保证了识别过程和BOM表格式、内容可配置的特点,为各具特色的众多模具企业提供了足够的设计和使用自由度。总体来说,本BOM模块具有以下功能:(1)自动从模型中提取零件BOM信息;(2)零件命名规则开放,给出缺省配置;(3)支持装配、非装配情况;(4)BOM表输出内容与格式可配置;(5)支持外部BOM表的导入功能。2.2 功能设计在注塑模CAD设计中,产品装配模型可以规范为一个根部在上的产品结构树。产品本身为树根,组成产品的每一零部件均为树的节点。BOM程序即是要将此产品结构树的相关数据以一定的格式识别出来,并输出到Excel中。“一定的格式”即指BOM程序采用的数据结构。本系统
7、采用树型数据结构组织模具产品结构树的信息。程序首先定义一个全局树结构变量,然后用模具产品结构树本身的装配结构信息初始化全局树变量,树根即为产品装配模型的根节点,其它装配节点则分别与全局树变量的其它子节点一一对应。程序接下来就可以通过这个全局树变量把模具产品装配模型映射到BOM程序的对话框界面上(参见图一,对话框左边“装配树列表”部分)。之后单击“识别零件信息”识别按钮,程序自动从产品装配模型中识别、提取BOM信息,并将这些信息存放到前面已初始化的全局树变量中。BOM信息识别完成后,就可以通过在对话框左边模具装配树中选择零件节点,查看其对应的BOM信息了;同时还可以方便地编辑任何一个零件节点的B
8、OM信息。识别完零件信息后,就可以单击“Export BOM”按钮输出模具产品的BOM表了,选择路径、输出文件名、确认即可。在退出模块时,程序会自动把包含所有零件BOM信息的全局树变量保存到磁盘上。下次对该模具产品再使用BOM功能时,程序会自动从磁盘上读入上次保存下来的BOM信息(假如有的话)。如果用户对生成的BOM表进行了编辑,则可以通过再次调用BOM程序,使用其“Import BOM”导入功能,把这些更新及时地应用到产品模型上。图一:UG平台下开发的BOM功能模块界面3、 BOM表功能实现及其相关技术3.1 模具产品装配树结构信息的初始化程序首先要建立一个全局树变量,用来存储模具产品的装配
9、结构信息,保证构成模具产品的每一个零件都与内存模型中全局树变量的一个子节点唯一对应起来。这个过程就是模具产品装配树结构信息的初始化。程序实现流程参见图二,具体算法如下:图二:模具产品装配结构信息初始化流程图(a)在UG平台下打开三维CAD实体装配模型,读取装配树根节点(即第一层的唯一节点),经判断该节点为装配体,获取其基本信息(UF_ASSEM_ask_component_data2),如节点零件名称等,用这些基本信息构造程序全局树变量的树根节点;(b)读取装配模型中根节点下的所有零件子节点,假设子节点数为part_occ_num,将该part_occ_num个子节点存放到临时数组child_
10、part_occs(只需调用UG API函数UF_ASSEM_ask_part_occ_children3即可)。另外,定义一个循环变量i,令i = 0;(c)获取第i个零件子节点的类型;(d)如果类型为装配体,则获取其基本信息(UF_ASSEM_ask_component_data),用获取到的基本信息为程序全局树变量构造一个对应的子树节点。然后以该装配体零件节点为根节点,调用递归函数CycleAllParts,直至所有零件节点都没有子节点,同时也在这个过程中不断为程序全局树变量构造相应的树节点。当CycleAllParts递归函数执行完毕,即回溯到(c)步骤中第i个零件子节点的状态时,令i
11、 = i + 1,(d)步骤结束;(e)如果类型为零件,则直接获取该零件节点的基本信息(UF_ASSEM_ask_component _data)并为程序全局树变量相应地构造一个叶子节点,令i = i + 1;(f)如果i < part_occ_num,重复执行步骤(c)(e),直到i = part_occ_num,算法结束。3.2 三维实体装配模型的BOM信息识别与提取在该部分中,程序自动从产品装配模型中识别、提取BOM信息,并将这些信息存放到前面已初始化的全局树变量中。这是整个BOM功能模块的核心部分,程序运行的时间开销和空间开销主要花费在这部分。需要识别的BOM信息内容项通常包括文
12、件名称(在初始化部分已经识别)、零件名称、零件编号、零件规格、零件数量、零件材质、供应商、备注等,不同的企业可能还会有不同的内容要求。为了保证程序的灵活性和适用性,对于BOM信息的包含内容项,即程序需要识别和输出哪些BOM信息,本系统采用了配置文件的设计方案。在配置文件中,系统预先定义了一些默认的BOM信息内容项;但配置文件同时又是开放给用户的,用户在使用BOM功能模块之前,可以自行修改配置文件的内容,这样就达到了BOM信息内容项可配置的目的,大大提高了程序的灵活性和适用性。对程序实现而言,只需在三维实体装配模型的BOM信息识别之前,先从配置文件中读取BOM信息所应包括的内容项即可。在识别三维
13、实体装配模型的BOM信息时,有时可能会遇到模型复杂,零件装配层次比较深的情况。此时如果采用上文初始化小节中提到的递归算法,来对模型信息进行识别的话,由于每一个零件节点的BOM信息识别都需要占用相当部分的系统开销,程序对模型装配树节点的递归识别就会花费大量的时间来保存数据量相对较大的递归函数现场,同时还可能出现递归算法太深导致系统堆栈空间消耗完毕的情况。最终导致的现象是,程序识别BOM信息所花费的时间大大延长,识别过程占用大量系统资源,更有甚者是BOM程序没有响应,甚至系统长时间没有响应。为了避免这些情况的出现,本系统在BOM信息识别部分采用了非递归算法,把对装配树的深度优先递归识别算法改进为非
14、递归实现。实体装配模型BOM信息的非递归识别算法可描述如下:(参见图三)(a)定义一个临时树节点temp_node,初始化为模型装配树的根节点A;估计模型装配树的规模(即节点数),定义一个足够大的数组,元素类型为树节点的数据类型,将数组的所有元素的初始值赋为空,该数组用来模拟外部堆栈,最后再定义一个整形变量top,用来表示外部堆栈的栈顶指针,初始值为0,表示栈顶指针指向栈底,即堆栈状态为空;(b)对temp_node进行BOM信息识别,并将temp_node压栈,栈顶指针top加1;图三:三维实体模型装配结构树A(c)判断temp_node是否有子节点,如果有的话,将temp_node的子节点
15、赋值给temp_node,并执行步骤(b);(d)重复执行步骤(b)(c),直到temp_node本身为叶子节点,即图三的节点B;(e)如果top > 0,从栈中弹出一个元素,并将该元素的(下一个)兄弟节点赋值给temp_node,栈顶指针top减1 ;如果top <= 0,算法结束;(f)重复执行步骤(b)(e),直到top <= 0,算法结束。以上即为实体装配模型BOM信息的非递归识别算法,对于图三所示装配树而言,算法的具体实现过程为:识别根节点A,A进栈;识别A的子节点B,B进栈;B没有子节点,出栈,识别B的后继兄弟节点C,C进栈;识别C的子节点E,E进栈;E没有子节点
16、,出栈,E没有后继兄弟节点;栈内下一个节点C出栈,识别C的后继兄弟节点D,D进栈;识别D的子节点F,F进栈;F没有子节点,出栈,识别F的后继兄弟节点G,G进栈;G没有子节点,出栈,G没有后继兄弟节点;栈内下一个节点D出栈,D没有后继兄弟节点;栈内下一个节点A出栈,A没有后继兄弟节点;栈为空,算法结束。3.3 BOM报表导出及导入的相关实现BOM报表的导出(即生成BOM)和导入主要涉及到数据库访问技术。在制造业中,鉴于零件数据库结构比较简单,系统的后台数据库常采用Excel文件4。Excel文件访问(读写)技术有很多种,常见的有ODBC、ActiveX Automation等。ODBC(Open
17、 Database Connectivity) 是由 Microsoft公司于1991年推出的开放式数据互联技术,它为用户提供了一个访问关系数据库的标准接口,它可以通过MFC或API使应用程序独立于原数据库管理系统5。使用ODBC访问Excel文件,要求系统中安装有ODBC驱动“Microsoft Excel Driver (*.xls)”。尽管Excel 并不是一个关系数据库系统,ODBC驱动仍然可以把Excel工作表当成数据库来访问。ActiveX Automation是Microsoft公司制定的一套开放性标准,它为应用程序与外界之间提供了一种接口,该接口由一组对象构成,这些对象封装了应
18、用程序的所有功能,通过这些对象固有的属性和方法,使几乎所有面向对象的编程语言都能访问到应用程序自身的数据库6。简而言之,ActiveX Automation技术允许一个应用程序操纵另一个应用程序中实现的对象,被操纵的应用程序称为服务器程序,服务器程序实现的对象叫服务,而请求操纵的应用程序则成为客户程序。Excel是最早支持 ActiveX标准的应用程序之一。上面两种技术都提供了访问Excel文件的方法,但是利用ODBC访问Excel是将Excel文件当成一个关系数据库来处理,其重点是数据的读写,对于Excel表格的格式不具备理想的处理能力;而利用ActiveX Automation技术,则可以
19、通过Excel应用程序提供的接口和服务,直接操纵Excel表格本身,包括数据和格式处理,具有很强的灵活性。本BOM系统由于对生成的BOM表内容和格式均有一定要求,所以采用第二种方法。关于具体实现,这里受篇幅所限,就不再详述。确定了访问Excel的技术和方法以后,BOM程序就可以很方便地实现Excel格式BOM表的导出和导入了。下面简要介绍一下导出、导入BOM表时,可配置技术的实现。BOM表的可配置其实包括两方面:一个是内容的可配置,另一个是格式的可配置。BOM表导出、导入内容的配置通过配置文件实现,配置文件的具体写法可以参照以下示例(图四):图四:BOM表内容及格式配置文件示例以导出BOM表为
20、例,程序首先从配置文件中读取BOM表应该输出的内容(前提当然是这些内容包含在识别到的模具BOM信息里面)以及这些内容在Excel中所处的位置,即上图中的EXPORT-ITEMS-COLUMN),然后程序从前面识别到的模具BOM信息里面提取出需要输出的信息,最后利用前面谈到的访问Excel的技术,将这些BOM信息输出到Excel文件中,从而完成BOM表的导出。BOM表的格式配置其实也在这个过程中完成,格式配置的具体内容包括字体、大小、颜色、对齐方式、是否合并单元格、单元格的边框线条粗细等,具体实现方法是:程序先从配置文件中读取BOM表的Excel模板(即图四中的SYSTEM-EXCEL-TEMP
21、LATE),然后将这个模板文件的路径显示在程序界面上(相当于图一所示程序界面中的“默认模板”按钮实现的功能,用户当然还可以通过程序界面的“选择模板”按钮重新选择模板文件),之后程序在导出BOM表时,会先打开模板文件,然后读取模板文件的Excel格式,最后在导出模具BOM信息到Excel文件中的同时,将这些信息设置成模板文件的格式,从而完成BOM表格式的配置。3.4 BOM表自动生成实例以下是模具产品设计完成之后的三维实体装配模型,以及利用本BOM功能生成的与之对应的模具产品物料清单。图五:模具产品的三维实体装配模型图六:通过本BOM功能生成与图五模型对应的模具产品物料清单部分截图4、 结论纵观全文,可以看出:本模块不但具有自动识别零件BOM信息的功能,还可以对识别到的BOM信息非常自由地进行编辑和调整,对回转体直径、倾斜实体尺寸自动进行纠正;可以在界面上很方便地改变一个零件的BOM表输出状态(即是否要输出到BOM表);可以通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- SMTP服务器租赁合同范本
- 教育设施爱心基金管理办法
- 能源企业隔音墙施工合同
- 人工智能项目投资担保人还款协议
- 教育咨询高级顾问聘用合同样本
- 旅游设施施工合同备案说明
- 园林绿化施工管理合同样本
- 教育公益捐赠管理办法
- 环保设施清洁施工合同建筑膜
- 体育馆化粪池建设协议
- 电机绝对零点校正完整版
- 341农业知识综合三考研近年考试真题汇总(含答案)
- 小区安防工作规范
- 北师大数学六年级下册第一单元《圆柱与圆锥》单元整体解读课件
- 2023年江苏专转本英语真题及解析(全)
- 幼儿园中班美术:《向日葵》 课件
- 自动化控制仪表安装工程定额
- 普希金《驿站长》阅读练习及答案
- 《生物多样性公约》及国际组织课件
- 个人信用报告异议申请表
- Unit 4 Lesson 1 Avatars 教案 高中英语新北师大版必修第二册(2022-2023学年)
评论
0/150
提交评论