股票代码:836996    |  中文版   |ENGLISH  |  在线留言
高级搜索:

总部电话:027-87591226-8000

销售咨询热线: 400-027-8806

传真: 027-87591226-8001

电子邮箱:sale@oureman.com

联 系 人:周小姐 (市场部)

公司网站: http://hzyxrr.com

益模总部地址: 武汉市东湖高新技术开发区光谷大道中国光谷云计算海外高新企业孵化中心1号楼20楼、21楼


行业资讯

行业资讯

BOM表的功能开发

作者:益模软件 来源: 时间:2014-08-14 17:02:44

BOM(BillOfMaterial)是定义产品结构的重要技术文件,是一种描述装配的结构化零件表,它反映了一个产品所有零部件的构成层次关系和数量关系,产品从设计到制造的全生命周期中,BOM起着重要的作用...

1、引言

        BOM(BillOfMaterial)是定义产品结构的重要技术文件,是一种描述装配的结构化零件表,它反映了一个产品所有零部件的构成层次关系和数量关系,产品从设计到制造的全生命周期中,BOM起着重要的作用。因此,BOM的变化与维护将对生产产生最直接的影响,BOM的数据结构及算法构成了ERP系统数据模型的核心[1]。


        注塑模具企业的BOM表通常包括零件名称、零件编号、零件描述、零件尺寸和零件数量等信息。另外,不同企业可能会有各自不同的BOM表信息涵盖内容要求,甚至同一项BOM内容在各企业都会有不同的叫法。然而,目前国内模具企业设计人员在完成模具结构设计、生成模具物料清单(BOM)时,方法不外乎有以下两种:一是对照庞大的模具装配结构信息,逐个零件地测量、拾取其BOM信息然后记录到对应的Excel文件中;另外一种方法则是借助UG的注塑模设计向导Moldwizard提供的BOM表功能,自动生成模具的BOM表。


        第一种方法费时费力,而且长时间靠人工记录繁多的零件信息难免出错;第二种方法则对注塑模模具设计过程有限制——必须使用Moldwizard进行设计,从而大大限制了设计人员的设计自由度。两种方法还有一个共同的不足之处就是:BOM表一旦生成,就与对应的模具产品结构模型失去关联,当在外部Excel中更改零件物料信息以后,对应零件模型的信息难以保持同步更新。正是基于以上原因,提出了UG平台下注塑模CAD系统BOM表功能的开发。


2、功能定义及设计


2.1功能定义


        综合前文提到的两种BOM设计方法的优点,本模块提供的BOM表功能既达到了全自动识别零件信息和出表的效果,又保证了识别过程和BOM表格式、内容可配置的特点,为各具特色的众多模具企业提供了足够的设计和使用自由度。总体来说,本BOM模块具有以下功能:(1)自动从模型中提取零件BOM信息;(2)零件命名规则开放,给出缺省配置;(3)支持装配、非装配情况;(4)BOM表输出内容与格式可配置;(5)支持外部BOM表的导入功能。


2.2功能设计


        在注塑模CAD设计中,产品装配模型可以规范为一个根部在上的产品结构树。产品本身为树根,组成产品的每一零部件均为树的节点。BOM程序即是要将此产品结构树的相关数据以一定的格式识别出来,并输出到Excel中。“一定的格式”即指BOM程序采用的数据结构。本系统采用树型数据结构组织模具产品结构树的信息。程序首先定义一个全局树结构变量,然后用模具产品结构树本身的装配结构信息初始化全局树变量,树根即为产品装配模型的根节点,其它装配节点则分别与全局树变量的其它子节点一一对应。程序接下来就可以通过这个全局树变量把模具产品装配模型映射到BOM程序的对话框界面上(参见图一,对话框左边“装配树列表”部分)。之后单击“识别零件信息”识别按钮,程序自动从产品装配模型中识别、提取BOM信息,并将这些信息存放到前面已初始化的全局树变量中。BOM信息识别完成后,就可以通过在对话框左边模具装配树中选择零件节点,查看其对应的BOM信息了;同时还可以方便地编辑任何一个零件节点的BOM信息。识别完零件信息后,就可以单击“ExportBOM”按钮输出模具产品的BOM表了,选择路径、输出文件名、确认即可。在退出模块时,程序会自动把包含所有零件BOM信息的全局树变量保存到磁盘上。下次对该模具产品再使用BOM功能时,程序会自动从磁盘上读入上次保存下来的BOM信息(假如有的话)。如果用户对生成的BOM表进行了编辑,则可以通过再次调用BOM程序,使用其“ImportBOM”导入功能,把这些更新及时地应用到产品模型上。

 

 

图一:UG平台下开发的BOM功能模块界面


3、BOM表功能实现及其相关技术


    3.1模具产品装配树结构信息的初始化


        程序首先要建立一个全局树变量,用来存储模具产品的装配结构信息,保证构成模具产品的每一个零件都与内存模型中全局树变量的一个子节点唯一对应起来。这个过程就是模具产品装配树结构信息的初始化。程序实现流程参见图二,具体算法如下:

 

 

图二:模具产品装配结构信息初始化流程图


(a)在UG平台下打开三维CAD实体装配模型,读取装配树根节点(即第一层的唯一节点),经判断该节点为装配体,获取其基本信息(UF_ASSEM_ask_component_data[2]),如节点零件名称等,用这些基本信息构造程序全局树变量的树根节点;


(b)读取装配模型中根节点下的所有零件子节点,假设子节点数为part_occ_num,将该part_occ_num个子节点存放到临时数组child_part_occs(只需调用UGAPI函数UF_ASSEM_ask_part_occ_children[3]即可)。另外,定义一个循环变量i,令i=0;


(c)获取第i个零件子节点的类型;


(d)如果类型为装配体,则获取其基本信息(UF_ASSEM_ask_component_data),用获取到的基本信息为程序全局树变量构造一个对应的子树节点。然后以该装配体零件节点为根节点,调用递归函数CycleAllParts,直至所有零件节点都没有子节点,同时也在这个过程中不断为程序全局树变量构造相应的树节点。当CycleAllParts递归函数执行完毕,即回溯到(c)步骤中第i个零件子节点的状态时,令i=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信息内容项通常包括文件名称(在初始化部分已经识别)、零件名称、零件编号、零件规格、零件数量、 零件材质、供应商、备注等,不同的企业可能还会有不同的内容要求。为了保证程序的灵活性和适用性,对于BOM信息的包含内容项,即程序需要识别和输出哪些BOM信息,本系统采用了配置文件的设计方案。在配置文件中,系统预先定义了一些默认的BOM信息内容项;但配置文件同时又是开放给用户的,用户在使用BOM功能模块之前,可以自行修改配置文件的内容,这样就达到了BOM信息内容项可配置的目的,大大提高了程序的灵活性和适用性。对程序实现而言,只需在三维实体装配模型的BOM信息识别之前,先从配置文件中读取BOM信息所应包括的内容项即可。


       在识别三维实体装配模型的BOM信息时,有时可能会遇到模型复杂,零件装配层次比较深的情况。此时如果采用上文初始化小节中提到的递归算法,来对模型信息进行识别的话,由于每一个零件节点的BOM信息识别都需要占用相当部分的系统开销,程序对模型装配树节点的递归识别就会花费大量的时间来保存数据量相对较大的递归函数现场,同时还可能出现递归算法太深导致系统堆栈空间消耗完毕的情况。最终导致的现象是,程序识别BOM信息所花费的时间大大延长,识别过程占用大量系统资源,更有甚者是BOM程序没有响应,甚至系统长时间没有响应。为了避免这些情况的出现,本系统在BOM信息识别部分采用了非递归算法,把对装配树的深度优先递归识别算法改进为非递归实现。实体装配模型BOM信息的非递归识别算法可描述如下:(参见图三)


(a)定义一个临时树节点temp_node,初始化为模型装配树的根节点A;估计模型装配树的规模(即节点数),定义一个足够大的数组,元素类型为树节点的数据类型,将数组的所有元素的初始值赋为空,该数组用来模拟外部堆栈,最后再定义一个整形变量top,用来表示外部堆栈的栈顶指针,初始值为0,表示栈顶指针指向栈底,即堆栈状态为空;


(b)对temp_node进行BOM信息识别,并将temp_node压栈,栈顶指针top加1;

   图三:三维实体模型装配结构树A


(c)判断temp_node是否有子节点,如果有的话,将temp_node的子节点赋值给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没有子节点,出栈,E没有后继兄弟节点;栈内下一个节点C出栈,识别C的后继兄弟节点D,D进栈;识别D的子节点F,F进栈;F没有子节点,出栈,识别F的后继兄弟节点G,G进栈;G没有子节点,出栈,G没有后继兄弟节点;栈内下一个节点D出栈,D没有后继兄弟节点;栈内下一个节点A出栈,A没有后继兄弟节点;栈为空,算法结束。


3.3BOM报表导出及导入的相关实现


        BOM报表的导出(即生成BOM)和导入主要涉及到数据库访问技术。在制造业中,鉴于零件数据库结构比较简单,系统的后台数据库常采用Excel文件[4]。


         ActiveXAutomation是Microsoft公司制定的一套开放性标准,它为应用程序与外界之间提供了一种接口,该接口由一组对象构成,这些对象封装了应用程序的所有功能,通过这些对象固有的属性和方法,使几乎所有面向对象的编程语言都能访问到应用程序自身的数据库[6]。简而言之,ActiveXAutomation技术允许一个应用程序操纵另一个应用程序中实现的对象,被操纵的应用程序称为服务器程序,服务器程序实现的对象叫服务,而请求操纵的应用程序则成为客户程序。Excel是最早支持ActiveX标准的应用程序之一。


       上面两种技术都提供了访问Excel文件的方法,但是利用ODBC访问Excel是将Excel文件当成一个关系数据库来处理,其重点是数据的读写,对于Excel表格的格式不具备理想的处理能力;而利用ActiveXAutomation技术,则可以通过Excel应用程序提供的接口和服务,直接操纵Excel表格本身,包括数据和格式处理,具有很强的灵活性。本BOM系统由于对生成的BOM表内容和格式均有一定要求,所以采用第二种方法。关于具体实现,这里受篇幅所限,就不再详述。确定了访问Excel的技术和方法以后,BOM程序就可以很方便地实现Excel格式BOM表的导出和导入了。


         下面简要介绍一下导出、导入BOM表时,可配置技术的实现。


         BOM表的可配置其实包括两方面:一个是内容的可配置,另一个是格式的可配置。BOM表导出、导入内容的配置通过配置文件实现。


         以导出BOM表为例,程序首先从配置文件中读取BOM表应该输出的内容(前提当然是这些内容包含在识别到的模具BOM信息里面)以及这些内容在Excel中所处的位置,即上图中的EXPORT-ITEMS-COLUMN),然后程序从前面识别到的模具BOM信息里面提取出需要输出的信息,最后利用前面谈到的访问Excel的技术,将这些BOM信息输出到Excel文件中,从而完成BOM表的导出。BOM表的格式配置其实也在这个过程中完成,格式配置的具体内容包括字体、大小、颜色、对齐方式、是否合并单元格、单元格的边框线条粗细等,具体实现方法是:程序先从配置文件中读取BOM表的Excel模板(即图四中的SYSTEM-EXCEL-TEMPLATE),然后将这个模板文件的路径显示在程序界面上(相当于图一所示程序界面中的“默认模板”按钮实现的功能,用户当然还可以通过程序界面的“选择模板”按钮重新选择模板文件),之后程序在导出BOM表时,会先打开模板文件,然后读取模板文件的Excel格式,最后在导出模具BOM信息到Excel文件中的同时,将这些信息设置成模板文件的格式,从而完成BOM表格式的配置。


3.4BOM表自动生成实例


        以下是模具产品设计完成之后的三维实体装配模型,以及利用本BOM功能生成的与之对应的模具产品物料清单。


 

图四:模具产品的三维实体装配模型


图五:通过本BOM功能生成与图五模型对应的模具产品物料清单部分截图


4、结论


        纵观全文,可以看出:本模块不但具有自动识别零件BOM信息的功能,还可以对识别到的BOM信息非常自由地进行编辑和调整,对回转体直径、倾斜实体尺寸自动进行纠正;可以在界面上很方便地改变一个零件的BOM表输出状态(即是否要输出到BOM表);可以通过配置文件来指定需要输出哪些BOM信息,通过Excel模板来配置BOM表的格式;最后还可以把在外部修改过的BOM表导入到相应的3D模型中,保证模型信息的同步更新。与手工设计BOM表相比,本模块大大提高了工作效率,保证了物料清单信息的准确性,消除人工疲劳导致的设计出错;与UGMoldWizard自带的BOM工具相比,本模块则显得灵活,实用,对模具设计人员的限制少。


       伴随着市场竞争的日益激烈,模具企业对CAD应用技术的要求越来越高,从二维到三维,从人工设计到图纸的自动生成,从流水线作业到并行设计,UG越来越受到企业的青睐。通过UG提供的二次开发接口技术,可以方便的开发出满足各种需求的实用应用程序。针对注塑模CAD系统开发的BOM表功能,在综合传统BOM表生成方法和数据库访问技术的基础上,可以大大地缩减注塑模设计中BOM表的制作时间,提高BOM表的准确率,为模具企业设计与制造整体生产效率的提高提供了重要保障,具有广阔的应用前景。


5、参考文献


[1]张媛,蔡宗琰.ERP的BOM结构设计及算法研究[J].机床与液压,2008,36(1):1


[2]黄翔,李迎光.UG应用开发教程与实例精解[M].北京:清华大学出版社,2005.


[3]董正卫,田立中,付宜利。UG/OpenAPI编程基础[M]。北京:清华大学出版社,2002。


[4]吴新波,王耕耘.基于三维CAD实体模型的模具BOM表自动生成方法研究[J].模具工业,2007,33(2):3


[5]侯雪萍。开放式数据库互联ODBC方案集粹[M]。北京:电子工业出版社,1995。


[6]蔡长安.VC++6.0环境下的ODBC数据库接口与编程技术[J].江汉大学学报(自然科学版),2003,31(1):1



关键字:BOM 模具 数据库 CAD 

027-87591226 027-87451620 sale@oureman.com

友情链接:武汉益模科技


秒速时时彩开奖网 北京赛车网站 北京赛车网站 秒速时时彩 秒速时时彩 秒速时时彩开奖网 秒速时时彩计划 秒速时时彩手机官网 秒速时时彩官网 北京赛车高倍率平台