首页 >> 分纸机

产品设计BOM的自动生成方法及关键技术研电热带楚雄印刷软件手机天线不锈钢轴Rra

文章来源:正信机械网  |  2024-03-20

产品设计BOM的自动生成方法及关键技术研究

1 引言

在制造业中,产品物料清单即BOM(Bill of Material)是企业基础的核心数据,是联系企业设计制造和生产经营管理的桥梁。在整个产品全生命周期的各个阶段,面对不同的生产部门存在多种不同意义的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)数据准备模块:该模块为设计部门管理人员提供了信息输入的接口,管理人员根据企业产品的分类,将和该产品相关的所有图纸文件和面机,录入到系统中。

(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 到耐火母线槽JB/T10327⑵0023 倍,而针对目前最新版的AutoCAD2004 的DWG,该DXF 文件的大小更升为6 到7 倍,这无疑为企业又带来了一个附加的存储费用。

为了不受AutoCAD 系统的约束,保持数据提取功能的独立性,本文采取The Open Design Alliance 即OpenDWG 联盟组织提供的ODT 技术,ODT 是OpenDWG Toolkit 的简称,它不需要AutoCAD 运行环境的支持直接读取DWG 和DXF 文件,并且可以将之转换为它自己的数据格式,而且由于这种格式是对外开放的,无疑将为企业后续的生产管理提供便利。ODT支持Windows 和Unix 操作系统,针对这两种操作系统的各个版本,ODT 又细分了很多版本,用户只需要根据自己的环境,选取不同库文件,将其加入到自己的开发项目中去即可。到目前为止,ODT 已经支持到了AutoCAD2004。ODT 以动态库的方式提供给用户,直接读取DWG 图形文件,对其中数据进行挖掘整理。通过使用ODT 大大地增强了我们应用系统的独立性,缩小了系统的体积,同时必然增强了系统的鲁棒性。本文在对DWG图纸信息提取的实现过程中,没有遇到数据丢失的现象,完整地得到了我们所需要得所有数据。

要使用ODT必须先建立ODT 得应用环境,根据用户操作系统的版本,将必需的动态库、动态库引出文件、头文件、初始化文件加入到项目工程中,然后为ODT 在内存中开辟所需要的空间,接着对ODT 进行初始化,加载DWG 格式文件,然后调用ODT 开发包的功能函数,遍历图纸读取图纸数据,当读取工作完成以后关闭ODT 在内存中所开辟的空间,接着卸载DWG 格式文件。如图1 所示。

在实际当中,我们需要的数据一般都是从图纸的标题栏和明细表中而来,这里详细记录了图纸中组成产品的零部件的信息,如名称、数量、材料等。因此我们主要就是提取标题栏和明细表中的数据。根据实践经验,企业设计部门对图纸一般都有比较严格的规定,譬如对图纸的图幅、标题栏、明细表这些没有涉及到零部件本身形状尺寸的图纸要素,会采用一些标准的格式,将它们的位置、形状尺寸、间距、表中字体等这些属性以确定的方式在图纸中规定下来。这样无形中为我们对图纸数据的挖掘提供了便利,这样就可以通过ODT 在图纸中找到一些关键的位置、尺寸(如标题栏的右下角基点),以及由此而上找到明细表并且通过线条之间构成的包围盒准确找出表中的字段及其对应的字段值。这样得到的数据准确,而且大大提高了数据读取的速度。通过ODT 技术的使用我们得到了需要的所有数据并将之存入到一个名为dwgfileInfoArray的数组中,该数组中每一个元素代表一张图纸信息,并且该元素分别记录了明细细表和标题栏数据,其数据结构如图2 所示。

2.3 设计BOM 产品结构数据模型及产品结构树的建立

2.3.1 设计BOM 产品结构数据模型

数据模型要能充分反映产品结构,能满足用户对数据的处理要求。产品实际的组成往往很复杂,其关系往往是一种状的关系,如图3 所示。

实际当中一个产品由十几个甚至上百成千个零部件组成,而一个部件又由一个或多个零部件组成,这些关系可以用表或图的形式表述。最终产品处在最高层,它的直接零部件处在第2 层,这些层的每一组件同样又可以连续分解成更低层的零部件直至最基本零件:外购件或原材料,并且存在这样的情况:一个零件被多个零部件引用,这样实际中产品零部件之间就形成了一种除了根节点外的多对多的状关系。这种结构难以处理,为了清晰地表达产品结构,为了将设计BOM中产品的所有部件能按层次关系全部显示出来,使产品及其构成的父子关系一目了然,而且为了便于计算机的处理,我们必须打破这种结构,本文采取将被多次引用的零件或者部件多次复制的方式, 将图3 转化为图4 的形式,这样复杂的图形结构被解构成为计算机容易处理的树状结构,使用了树型结构数据模型,即所谓的产品结构树,它按照产品、部件、零件的相互依赖关系组成的树形结构,可以按层次进行展开,而且这种结构正好符合我们要读取的零部件图纸的标题栏和明细表之间的关系。一般情况下每一张产品图纸都包含有标题栏或者明细表,或者二者皆有。这两个表非常详细地记录了零部件本身的信息。标题栏中记录了零部件的名称、代号以及表达该零部件图纸的图幅、页数等总体情况。而明细表则记录了该部件的详细组成部分如零件名称、数量、材料、加工单位等。

2.3.2 建立设计BOM产品结构树

在具体实现上,产品结构是一套图纸内部关系的反映。根据企业的不同情况,在产品设计结构中,不论零件还是部件都有一个惟一标识它们的关键属性,如图号。据此我们便可以在产品结构树中惟一确定该零部件,将其插入到结构树中相应层次的节点中。对于复杂的部件它又由子零部件组成,此时在图纸中一般都会有明细表,该表中详细记录了组成该部件的零部件,如零部件的名称、数量、重量、材料技术、采购方式等。这样针对一张图纸,我们完全可以根据标题栏和明细表得到该部件的组成,形成一颗子树,如果我们能进一步将每张图纸通过它们在其它图纸的明细表中的相互引用情况,就可以构造出和我们设计的产品结构数据模型相吻合的整个产品结构树。

利用ODT我们已经得到了组成产品直轴冲床的零部件信息,并且将之存储到了相应的几个数据结构中,在此首先我们需通过访问这些信息,找到输入的图纸中的总装图的信息。我们根据总装图是产品结构树的根节点这个属性可以得到这样一个明显的结论;那就是该图的图号(在此我们以图号惟一标识零部件)在其它图纸的明细表中不会出现,否则它就不是总装图纸。据此我们按以下步骤得到总装图。

(1) 调入一张图纸标题栏数据中的图号,在所有其它图纸的明细表数据中搜索,如果没有找到和它相同的图号名称,那么这个图号就是总装图号,转(2);如果该图号在明细表中被找到,那么终止当前查找过程,转步骤(3);

(2)将其加入到总装图的数组中,转步骤(3);

(3) 如果所有图纸的图号都已被调入过,那么程序终止,否则调入下一张图纸的标题栏图号,在所有其它图纸的明细表数据中搜索,如果没有找到和它相同的图号名称,那么这个图号就是总装图号,转(2);如果该图号在明细表中被找到,那么终止当前的查找过程,转步骤(3)。

这样我们得到了总装图号的数组,然后接以上步骤就要按照深度优先的策略从总装图号开始自顶向下递归构造产品结构树。

将总装图号和根节点位置作为初始值,输入到下面的递归函数中:

ConstructProductTree(Code code, Item item) code 是图号名在进样进程中发现内标物的峰值变低了称,item 是树的节点位置

{ 将当前节点插入到树中,并返回当前节点的父点总装图号返回的是根节点本身

FatherIem = Insert( code , item );

if( HaveChild( code ) ) 判断当前节点是否有子节点即是否有明细表数据

{ 如果有明细表数据记录,那么则循环调用递归函数

for ( k = 0; k

精兴装饰
老破小改造
卧室装修
局部装修