精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料产品设计BOM的自动生成方法及关键技术研究提出了一种产品设计BOM的自动生成方法,利用OpenDWG联盟组织提供的OpenDWGToolkit(以下简称ODT)技术从DWG文件中读取设计BOM所需要的信息,自动生成设计BOM产品结构树及其展开产品结构关系表。讨论了在设计BOM自动生成过程中所遇到的难点及相应的解决办法,实现了一个设计BOM自动生成系统并将之应用于企业实际生产管理中。1引言在制造业中,产品物料清单即BOM(BillofMaterial)是企业基础的核心数据,是联系企业设计制造和生产经营管理的桥梁。在整个产品全生命周期的各个阶段,面对不同的生产部门存在多种不同意义的BOM视图:设计BOM、工艺BOM、制造BOM、质量BOM、成本BOM、采购BOM、销售BOM。设计BOM是企业产品设计部门用来组织和管理生产某种产品所需的零部件物料清单,它是产品设计工程师在完成产品设计后获得的,它是其它BOM视图的基础,其它的BOM都是在设计BOM的基础上,根据自身的需要,将其分解、添加、修改、调整后形成的,所以说设计BOM在整个系统中起着关键性作用。国内针对BOM的研究很多,但是大部分都是侧重于阐述BOM在企业中如何应用,或者阐述BOM的数据组织结构及其各种BOM之间的转换,而针对BOM具体如何生成并没有详细的阐述,忽略了一个最为基础且关键的问题:面对现代复杂产品,其BOM数据是如何获得的,在获得数据后,最初的设计BOM是如何形成的。如果依然采用手工填写数据、编写BOM的方法,显然对于复杂的产品是不可取的,不仅费力,费时,繁琐,而且容易出错。本文正是基于以上提到的问题,特别针对设计BOM、对其BOM数据的提取以及BOM的自动生成方法及相关技术做了研究,并将其应用于企业,解决了企业的实际问题。2设计BOM自动生成系统的整体框架设计BOM本质上是产品在工程设计阶段的产品结构的反映,在设计部门完成产品设计以后,设计BOM已经隐含在产品当中,我们要将这种隐含关系提取出来并且以适当的表现方式将其显式地表现出来。基于目前企业基本都采用了CAD系统来进行产品设计,因此产品结构存在的最原始的状态也就是CAD系统产生的成套电子工程图纸,而设计BOM的数据也正是来自于这些电子图纸。这些图纸以图形和文本的形式清楚地描述了产品、部件、零件的组成结构及相互关系。本文就是要将这些图纸中已经存在的数据,根据它们之间的相互关系,通过ODT技术提取其中数据,再以产品结构树以及其对应的产品结构关系表的形式表现出来,并将之作为企业产品的重要文档保存到产品数据库中,为企业后续的工作做准备,或者为设计新产品时提供参考。本文将系统分成以下几个功能模块分别完成上述任务。(1)数据准备模块:该模块为设计部门管理人员提供了信息输入的接口,精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料管理人员根据企业产品的分类,将和该产品相关的所有图纸文件,录入到系统中。(2)数据提取模块:该模块将处理管理人员录入的所有图纸。利用ODT技术直接读取CAD电子图纸中设计BOM所需要的零部件信息,并将之存储到相应的数据结构中。(3)建立设计BOM产品结构树:该模块根据企业对产品零部件组成结构的描述,将已经得到的产品零部件信息组织生成产品结构树,即设计BOM的产品结构树形式。通过该结构树设计人员可以清楚地查看产品的组成是否正确,如果发现产品结构有问题,那幺,此时即可对产品的设计做出调整,此时设计的BOM视图是以树层次结构展现出来的。(4)设计BOM产品结构树的展开:设计BOM以产品结构树的形式并不能满足用户的全部需求,很多信息只通过树型结构无法表达出来,因此我们将设计BOM展开成产品结构关系表的形式,该表不仅反映了产品结构的层次关系而且进一步体现了各个层次之间数量、重量以及各个层次零部件的来源(采购、外委、自制)等其它部门所需要的重要信息。2.1设计BOM数据的准备这个阶段是设计BOM形成的最初阶段,也是关系到设计BOM数据是否准确完整的一个关键部分。设计部门必须要能够准确、完整地输入整套产品图纸文件,然后系统接收该套图纸文件,为下一步做准备。在此系统对输入的图纸不做检查,但是在数据提取阶段和产品数据结构树形成后,系统会给设计人员相应的提示,并且在产品结构树构造完成以后,设计人员可以将树展开检查该产品结构是否正确。如果不正确的话可以回溯,并且检查图纸输入是否正确,重新输入。2.2设计BOM数据的提取数据提取工作在BOM的形成过程中具有关键性的作用,如果数据提取出现错误,那幺我们接下来的工作将是毫无意义的。当前我国企业应用CAD系统已经是非常普遍,基本实现了甩图板,正因为如此,设计BOM才具有了自动生成的需求。国内目前应用最广泛的CAD系统是Autodesk公司的Auto-CAD系统,它产生的图纸文件格式是DWG格式的文件,这种图纸在我国企业中大量的使用,普遍性很强,但是由于Autodesk公司没有公开该文件的格式,用户无法直接从该文件中提取自己需要的信息。我们虽然可以使用一些二次开发语言如AutoLISP、ObjectARX、VisualLISP、VBA等,根据自己的需要开发一些特殊功能,但是这些语言运行的环境都离不开Auto-CAD系统,Autodesk公司也提供了dxf文件格式作为与其它系统进行数据转换的接口文件,但是这种文件格式有着天然的缺陷,首先它也是必须在AutoCAD系统平台下才可以被操作,其次该文件的格式复杂难懂,普通用户难以正确地读取,而且DWG经过另存转换后得到的DXF文件,其文件的大小是dwg文件的2到3倍,而针对目前最新版的精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料AutoCAD2004的DWG,该DXF文件的大小更升为6到7倍,这无疑为企业又带来了一个附加的存储费用。为了不受AutoCAD系统的约束,保持数据提取功能的独立性,本文采取TheOpenDesignAlliance即OpenDWG联盟组织提供的ODT技术,ODT是OpenDWGToolkit的简称,它不需要AutoCAD运行环境的支持直接读取DWG和DXF文件,并且可以将之转换为它自己的数据格式,而且由于这种格式是对外开放的,无疑将为企业后续的生产管理提供便利。ODT支持Windows和Unix操作系统,针对这两种操作系统的各个版本,ODT又细分了很多版本,用户只需要根据自己的环境,选取不同库文件,将其加入到自己的开发项目中去即可。到目前为止,ODT已经支持到了AutoCAD2004。ODT以动态库的方式提供给用户,直接读取DWG图形文件,对其中数据进行挖掘整理。通过使用ODT大大地增强了我们应用系统的独立性,缩小了系统的体积,同时必然增强了系统的鲁棒性。本文在对DWG图纸信息提取的实现过程中,没有遇到数据丢失的现象,完整地得到了我们所需要得所有数据。要使用ODT必须先建立ODT得应用环境,根据用户操作系统的版本,将必需的动态库、动态库引出文件、头文件、初始化文件加入到项目工程中,然后为ODT在内存中开辟所需要的空间,接着对ODT进行初始化,加载DWG格式文件,然后调用ODT开发包的功能函数,遍历图纸读取图纸数据,当读取工作完成以后关闭ODT在内存中所开辟的空间,接着卸载DWG格式文件。如图1所示。在实际当中,我们需要的数据一般都是从图纸的标题栏和明细表中而来,这里详细记录了图纸中组成产品的零部件的信息,如名称、数量、材料等。因此我们主要就是提取标题栏和明细表中的数据。根据实践经验,企业设计部门对图纸一般都有比较严格的规定,譬如对图纸的图幅、标题栏、明细表这些没有涉及到零部件本身形状尺寸的图纸要素,会采用一些标准的格式,将它们的位置、形状尺寸、间距、表中字体等这些属性以确定的方式在图纸中规定下来。这样无形中为我们对图纸数据的挖掘提供了便利,这样就可以通过ODT在图纸中找到一些关键的位置、尺寸(如标题栏的右下角基点),以及由此而上找到明细表并且通精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料过线条之间构成的包围盒准确找出表中的字段及其对应的字段值。这样得到的数据准确,而且大大提高了数据读取的速度。通过ODT技术的使用我们得到了需要的所有数据并将之存入到一个名为dwgfileInfoArray的数组中,该数组中每一个元素代表一张图纸信息,并且该元素分别记录了明细细表和标题栏数据,其数据结构如图2所示。2.3设计BOM产品结构数据模型及产品结构树的建立2.3.1设计BOM产品结构数据模型数据模型要能充分反映产品结构,能满足用户对数据的处理要求。产品实际的组成往往很复杂,其关系往往是一种网状的关系,如图3所示。精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料实际当中一个产品由十几个甚至上百成千个零部件组成,而一个部件又由一个或多个零部件组成,这些关系可以用表或图的形式表述。最终产品处在最高层,它的直接零部件处在第2层,这些层的每一组件同样又可以连续分解成更低层的零部件直至最基本零件:外购件或原材料,并且存在这样的情况:一个零件被多个零部件引用,这样实际中产品零部件之间就形成了一种除了根节点外的多对多的网状关系。这种结构难以处理,为了清晰地表达产品结构,为了将设计BOM中产品的所有部件能按层次关系全部显示出来,使产品及其构成的父子关系一目了然,而且为了便于计算机的处理,我们必须打破这种结构,本文采取将被多次引用的零件或者部件多次复制的方式,将图3转化为图4的形式,这样复杂的图形结构被解构成为计算机容易处理的树状结构,使用了树型结构数据模型,即所谓的产品结构树,它按照产品、部件、零件的相互依赖关系组成的树形结构,可以按层次进行展开,而且这种结构正好符合我们要读取的零部件图纸的标题栏和明细表之间的关系。一般情况下每一张产品图纸都包含有标题栏或者明细表,或者二者皆有。这两个表非常详细地记录了零部件本身的信息。标题栏中记录了零部件的名称、代号以及表达该零部件图纸的图幅、页数等总体情况。而明细表则记录了该部件的详细组成部分如零件名称、数量、材料、加工单位等。2.3.2建立设计BOM产品结构树在具体实现上,产品结构是一套图纸内部关系的反映。根据企业的不同情况,在产品设计结构中,不论零件还是部件都有一个惟一标识它们的关键属性,如图号。据此我们便可以在产品结构树中惟一确定该零部件,将其插入到结构树中相应层次的节点中。对于复杂的部件它又由子零部件组成,此时在图纸中一般都会有明细表,该表中详细记录了组成该部件的零部件,如零部件的名称、数量、重量、材料技术、采购方式等。这样针对一张图纸,我们完全可以根据标题栏和明细表得到该部件的组成,形成一颗子树,如果我们能进一步将每张图纸通过它们在其它图纸的明细表中的相互引用情况,就可以构造出和我们设计的产品结构数据模型相吻合的整个产品结构树。精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料利用ODT我们已经得到了组成产品的零部件信息,并且将之存储到了相应的几个数据结构中,在此首先我们需通过访问这些信息,找到输入的图纸中的总装图的信息。我们根据总装图是产品结构树的根节点这个属性可以得到这样一个明显的结论;那就是该图的图号(在此我们以图号惟一标识零部