APP下载

基于设计环境的图纸BOM管理系统

2012-07-09罗年猛肖祖安

图学学报 2012年5期
关键词:明细表报表图纸

罗年猛, 肖祖安, 朱 林

(华中科技大学国家企业信息化应用支撑软件工程技术研究中心,湖北 武汉 430074)

在工业生产实践中,如何有效的管理大量的工程图纸,并提高其重复利用的效率成了非常棘手的问题[1]。PDM(Product Data Management,产品数据管理),作为对企业设计过程管理,已经在国外一些著名企业中得到广泛的应用,但是在国内,部分企业的PDM在应用中困难重重,周期长,数据采集和处理难,缺乏准确性,PDM实施成功率低成了普遍现象,这样的企业在我国为数不少,大多是一些中小型企业,它们把CAD仅仅作为绘图工具来使用,经过多年的积累,存在大量无序的电子文档,企业一方面需要把这些宝贵的信息整理成可查阅的电子资料库,而另一方面实施PDM等管理软件又存在高成本、高风险等问题。而且企业往往需要进行大量的改造,投入很多的人力,这不是所有中小企业都可以承受的,但是他们又迫切的想摆脱手工编制 BOM(Bill Of Material,物料清单)的繁琐。因此,这些企业急需一种简单易用的“图纸BOM管理系统”。它不需要PDM、PLM中过于约束的功能、繁琐的流程管理,只需要实现零件图纸的查看、产品结构的管理、BOM 数据的提取和输出等基本功能[2]。因此,本文提出了一种简洁、高效的图纸BOM管理的方法,从逻辑上对图纸进行划分,以某一产品(或产品的某一部件)的所有图纸(一套图纸)为对象,帮助设计者管理和维护该套图纸,并且方便输出各种形式的BOM数据报表。

1 图纸BOM管理系统的设计

1.1 系统的总体架构

1.1.1 系统需要具备的功能

利用计算机来辅助企业生产管理,首先要使计算机能够获取产品的构成及相关的物料,为了便于计算机识别,必须把用图示表达的产品结构转化成某种数据格式,这种以数据格式来描述产品结构的文件就是物料清单,即是BOM[3]。在设计过程中,BOM 的数据来源主要是整套产品设计图纸中的标题栏和明细表中的信息。标题栏主要记录了该零件或是部件的名称、图号等信息;明细表则记录了部件或子部件所引用的零件的名称和数量等信息。故图纸中的标题栏和明细表不仅反映了该零件(或部件)的物料信息,还反映了零件之间的结构层次关系。在国内一些中小型制造企业中,设计图纸的无序化、BOM 报表的手工编制和人工管理严重的阻碍了知识的共享和重用,工作人员大量的时间和精力都花在了重复的劳动上,制约了企业的发展,降低了企业的市场竞争力,故对于这些企业来说,如何有效的管理设计图纸和BOM数据是其企业信息化的关键一步。

对于上面所描述情况,这些企业需要一种图纸BOM管理系统,来规范的管理他们的图纸和BOM数据,该系统必须具备如下4个功能:

1)实现图纸的批量管理、快速查看和查找;

2)能够从图纸中提取所需的BOM信息;

3)直观的生成产品结构,并且实现对产品结构的管理;

4)生成多种形式的BOM报表。

最后,考虑到设计人员习惯于CAD绘图环境并且要对图纸进行快速查看,故该系统集成于CAD环境中。

1.1.2 系统的架构设计

为了实现对图纸数据的统一管理和存取,系统的底层采用数据库支持,数据库是现在应用非常广的数据管理技术,常用的数据模型有如下3种:

1)层次模型(Hierarchical Model),使用树形结构来表示数据以及数据之间的联系;

2)网状模型(Network Model),使用网状结构表示数据以及数据之间的联系;

3)关系模型(Relational Model),是一种理论最成熟,应用最广泛的数据模型。在关系模型中,数据存放在一种称为二维表的逻辑单元中,整个数据库又是由若干个相互关联的二维表组成的。

与层次模型和网状模型相比,关系模型结构简单,采用了人们习惯的表达形式,易于掌握。它以关系理论作为指导,可以通过集合运算、谓词演算来表示查询。因此,本文的数据库设计采用了关系模型[4]。

整个系统的架构如图1所示。

系统分为3个层次:底层数据、中间处理和CAD平台。底层数据中,“工程图纸”是原始数据,图纸中标题栏和明细表信息被提取到“图纸数据库”中,这些数据是生成BOM报表的基础。然而,对于用户来说,数据库中的数据是与他们的操作直接相关的“原始数据”,数据库中的图纸数据和“工程图纸”中的图纸文件有一一对应的关系,这个是为了方便用户对图纸进行查找和查看;“中间处理”主要是对数据库中的数据再次抽取的过程,提取用户需要的数据并且进行相关的解析,为最终的输出做准备;“CAD平台”则是用户直接操作的环境,主要是实现数据的图形化或是视图化的过程。这样的层次结构使得图纸数据和管理程序相对独立,降低了整个系统的维护成本,同时,在保证数据完整性的前提下,管理程序以后的扩展也非常方便。

图1 图纸BOM管理系统的架构

1.2 关键技术和算法实现

由1.1节可以得知,系统的主要功能是图纸数据的提取和数据的导出,图纸数据库是整个数据流的枢纽,所以图纸数据库的设计、图纸数据的提取和数据的导出是整个系统的关键,其中,数据的导出主要包括产品结构的生成和BOM报表的输出。

1.2.1 图纸数据库的设计

图纸数据库是整个系统数据的枢纽,是用户操作的直接数据来源,故数据库的设计对整个系统非常的关键。

由图1可以看出,图纸数据库中首先必须包含如下数据:

1)数据库数据和图纸的映射关系;

2)图纸之间的结构关系;

3)图纸的BOM数据。

数据库数据是整个系统的基础,但是如何有效的组织数据则直接影响到系统的检索性能,故需要对原始图纸数据进行合理的分类。在数据库中主要采用如图2所示的几个表来存储图纸的主要信息。

图2中,“图纸定义文件表”、“定义文件和字段值映射关系表”和“字段属性表”包括了整个图纸的标题栏和明细表的定义属性,包括各个属性代表的名称和在图纸上的偏移坐标,这些定义信息是识别图纸的基础。工程上图纸的管理通常是通过产品来划分的,在这里系统以“项目”的概念来分别管理不同的产品的图纸。“图纸信息表”中主要是标题栏的信息,它和“明细表信息”表中的明细表信息是“图纸关系表”的数据来源,这3个表最终汇总成了“产品结构信息”表。对于一个项目来说,主要的信息有:项目ID、图纸ID、明细表信息ID、定义文件ID和字段属性ID,在数据库中对这些信息进行合理划分,分别存放在不同的表中,用各自的ID 做索引值,来进行数据检索。这样的信息组织减少了数据冗余,提高了应用程序的查询效率,同时,数据的层次结构简洁清晰,方便用户的管理和维护。

图2 图纸数据库设计图

1.2.2 图纸的批量录入

图纸管理以“项目”为划分,每个“项目”的图纸都可以批量录入,指定文件夹或是多个dwg文件都可以。对于单张图纸的录入过程如图3所示,图纸的批量录入是循环执行单张录入的过程。

图3 单张图纸的录入过程

图3 “遍历图纸”是对图纸中所有实体的迭代过程,从中找出标题栏和明细表,然后对整个标题栏和明细表的数据进行读取,这是图纸数据读取的关键部分。对图纸数据的读取主要有3种方法:“模板匹配法”、“块属性定义”和“图纸属性定义文件”。其中,“模板匹配法”要求现有的图形和预先定义的模板的形式完全一致,这样就可以根据模板中的位置来提取图纸中的数据,该方法主要用于一些格式比较固定的纯表格类数据的提取,对图纸的要求非常严格[5];“块属性定义”是现在用的非常广的一种图纸数据提取方法,在AutoCAD中提供一种块编辑器功能,可以对图块进行属性定义或是在图块中填写扩展数据来标识图形,在获取数据时对图纸进行遍历,找到之前定义的属性块,这样就可以通过定义的属性提取出填写在图纸中的数据[6];“图纸属性定义文件”则主要适合一些自由表格图形的数据提取,通过在属性表中定义的图纸属性和相应的相对坐标及坐标偏移量就可以找到一个包容盒,这样包容盒中的文字数据就可以很方便的提取了[7]。这里,系统提供了“块属性定义”和“图纸属性定义文件”这两种方法来提取图纸数据。下面主要是以“块属性定义”为例,图纸中标题栏和明细表都被定义成带属性的块,完整定义信息是由定义文件和保存在图块中的扩展数据组成的。图纸的遍历仅执行一次,遍历的算法过程如图4所示。

图4 图纸的遍历过程

“读取标题栏信息是否成功”,是检查遍历的图纸的结果中是否存在标题栏的ID,如果存在则读取标题栏中保存的扩展数据,找到相应的定义文件,定义文件中保存了标题栏的字段的定义信息,然后根据定义信息可以得到标题栏中各个字段的填写区域,从而可以获取到标题栏中填写的所有信息,例如:图号、名称、图幅等。“读取明细表信息是否成功”的过程也是类似的。程序的基本流程图如图5所示。

图5 读取标题栏定义的过程

“检查是否存在递归包含”的作用是检查一张图纸是否在明细表中又包含了自己,如果存在递归包含则不会被添加到图库中,因为这在输出产品结构树时会引起一个类似死循环的结构。如果要添加的文件已经存在图纸数据库中,则删除原来已经保存在数据库中的相关图纸信息,重新添加一次。

1.2.3 产品结构树输出

在图纸的标题栏和明细表信息的录入时,系统会在图库数据库中新建1个“图纸关系表”(如果已经存在,则或删除重建),用来管理录入图库中的图纸之间的关系。“图纸关系表”中主要记录了3个字段:项目ID(根据项目新建的顺序,从1开始顺序取值)、图纸ID(按照图纸添加的顺序,从1开始顺序取值)、父图纸ID。图纸的父子关系主要是根据图纸中的明细表的引用关系来确定的:如果a图纸的明细表中引用了b图纸,则认为b图是a图的零件,a图是b图的父亲。产品结构树的输出过程如图6所示。

图6 产品结构树输出过程

“建立文档父子关系”是产品结构树的关键步骤,其过程主要分为3步:

1)从“图纸信息表”中获取图纸ID;

2)根据图纸ID在相应的“明细表信息表”中查询该图纸明细表中所引用的图纸的ID,保存到一个数组中;

3)根据获得的图纸 ID数组逐个的查询,这样就得到了文档的父子关系,然后添加到“图纸关系表”中;

“检查是否存在递归包含”的依据是“图纸关系表”中图纸ID和其父图ID是否相等,如果相等,则认为是存在递归包含,不相等接着进行下一步,插入到结构树的相应位置进行显示。

1.2.4 BOM报表输出

BOM报表可以输出多种格式:txt、xls、dbf和dwg。图纸的数据包含标题栏和明细表信息,数据按照产品结构树的层次来输出。BOM 报表输出的数据来自“产品结构信息”表,这个表中的数据是“图纸信息表”和“明细表信息表”的综合,包含的数据量非常大,考虑到整个系统的性能,“产品结构信息”表不会自动刷新,用户在需要时手动刷新。txt、xls和dbf格式都是按照顺序直接写出数据,是比较通用的格式,而dwg格式报表则是把数据填写在dwg格式的表格中,这是很多管理软件没有的报表格式,dwg格式的报表在工业实际中应用非常广泛,符合设计人员的使用习惯,方便修改和维护。dwg格式报表需要预先定义一个报表格式和相应的表格定义文件,系统会根据dwg表格模板和定义文件中定义的字段选择性的提取“产品结构信息”表中的数据填写到表格中,从而输出dwg报表。

2 图纸BOM管理系统实例

图纸BOM管理首先是要建立图库数据库,数据库中主要包含图纸的定义信息,和各个用于存储图纸信息的数据表,这些信息都是以后图纸的信息提取和保存的基础。然后可以新建项目、添加图纸,新建的项目和添加的图纸信息都会被保存到先前建立的数据库中,系统最终会根据图纸的信息生成一个产品结构树,可以对树中的任意一张图纸进行查看,填写等操作,对于每个项目都可以输出报表,选择输出报表,可以得到如表1所示的报表数据。

针对这个网格中数据,可以输出成多种格式:txt、dbf和dwg。对于dwg格式的报表需要预先定制好输出的表格形式,表2是输出的dwg报表。

3 结 束 语

图纸BOM管理系统已经在多个企业使用,如:成都成工工程机械有限公司等,系统直接集成在CAD环境中,操作简单直观,符合设计人员的使用习惯,提高了图纸数据的重复利用率,减少了设计者的重复劳动,得到了用户的一致好评。未来该图纸BOM管理可以朝着网络协同方面发展,实现多用户并行工作和图纸数据的完全共享,这将又会是一次大的飞跃。

表1 报表数据

表2 输出dwg报表

[1] 叶 涛,郭 晖. 基于AutoCAD的图库管理系统设计与实现技术[J]. 武汉理工大学学报,2007,29(2):51-54.

[2] 杨晓镇. 产品设计 BOM 信息自动生成及管理的研究[D]. 大连: 大连理工大学,2007.

[3] 林 娅. 制造 BOM 的数据存储和查询优化技术研究及软件研发[D]. 重庆: 重庆大学,2007.

[4] 何玉洁. 数据库基础及应用技术[M]. 北京: 清华大学出版社,2002: 7-15.

[5] 刘建民. 工程图档信息管理系统的设计与实现[D].天津: 天津大学,2005.

[6] 张良栋,王 杰. CAD图中明细表信息的提取和BOM 生成方法的研究[J]. 制造业自动化,2004,24(12): 46-49.

[7] 龚 雄,赵建军,陈立平. OpenDWG技术在工程图管理中的应用[J]. 工程图学学报,2005,26(6): 6-10.

猜你喜欢

明细表报表图纸
2019年中国出口石材明细表(三)
浅谈汽车线束产品图纸管理
2019年中国出口石材明细表(二)
2019年中国出口量值石材明细表(一)
看图纸
模具图纸在全生命周期内的信息管理系统研究
镇长看报表
2011年十家拍卖公司秋拍1000万元以上成交拍品前50名明细表
月度报表
月度报表