您的位置:网站首页 > CAD新闻

PDM系统图文档入库技术研究

时间:2011-02-26 19:31:04 来源:

引言

目前,CAD已经在企业中得到了广泛的应用,并明显地提高了设计能力和图纸质量,但工程师们在享受CAD带来的好处的同时,不得不将大量的时间浪费在查找设计所需信息上,因此对于自动获取电子图文档信息的需求变得越来越迫切。

在数据库基础上发展起来的产品数据管理(Product data management,简称PDM)技术,可以将企业内分布于各种系统和介质中的关于产品及产品数据信息进行集成与管理,使得企业由过去的依赖纸质文档的管理转变为真正的企业信息化管理。PDM系统中的图文档管理的基本功能就是将图文档的基本信息(如图号、名称、材料等)进行人库、编辑和查询。这种方便快捷的图文档查询和浏览功能是基于“图档人库”功能,它可以将在使用PDM之前,工作过程中已经生成的大量图文档录人到数据库中,是PDM图文档管理中的重要的功能之一。在这个过程中,图文档中用于文件查询以及文件本身的属性性质的一些基本信息也同时录人到数据库中。

本文的工作就是要解决在图文档人库存储的过程中,文件中的基本信息如何处理的问题。

1、图文档的存储方式

图文档在人库存储的过程中,为了使PDM系统对人库后的文件能有效管理,要求图档的基本信息同时录人,因此它的存储方式一般分两种:

一种方式是保持文件的完整性,这些文件中的数据不能与文件脱离,一旦脱离就失去意义,因此数据和文件要封装在一起,然后存放在文件服务器上,即所谓的“打包”。

另一种方式是从文件中可以提取一些数据,这些数据具有独立的意义,将这些数据分门别类地放到数据库中,以便对文件内容进行检索和统计,即所谓的“打散”。

PDM系统所管理的各种文档的存储方式各不相同。

(1)图形文件中的各个元素没有必要分别管理,只需将文件的整体,名称代号以及标题栏中的基本元素和特征参数放到数据库中。

(2)数据文件中由相应的应用程序分析后产生的数据文件往往数据量大,可读性差,对这样的文件除了特征参数外,文件整体存储。但是数据文件中产品定义信息中的数据可以作为属性,就象关键字一样便于用户查询有关文件,需要“打散”处理。

(3)文本文件记录的各种技术要求,更改说明,使用方法中,除了个别特殊信息需要进行检索和统计外,一般按整体管理。

(4)表格文件中像产品定义信息这样的表格文件描述了产品部件或零件的各种属性,是分类检索的主要依据和汇总的主要对象,因此必须从文件中提取,然后“打散”,把它们分门别类的放到数据库中。

其中的图形文件,尤其是企业中大量使用的AutoCAD软件所产生的CAD图档的读取和信息处理是PDM图档人库的重点,所以在此要重点分析一下CAD图纸标题栏中的图号、设计者、创建日期、版本号及类型等信息的自动提取和人库问题。

DWG作为AutoCAD的缺省文件格式,其内部结构尚未公开,但其DXF文件格式却是用来进行数据交换的公开格式文件,通过读取DXF类型的图形交换文件读取图纸标题栏的信息,实现信息批量人库。

2、DXF文件结构分析

DXF类型的图形交换文件是具有专门格式的ASCII码的文本文件,它比较好读,易于被其它程序处理。主要用于实现高级语言编写的程序与AutoCAD系统连接,或其他CAD系统与AutoCAD交换图形文件如图1所示。

newmaker.com

2.1DXF文件的总体结构

DXF文件本质上是由成对的代码和与代码关联的值组成的。这些代码(即组码)不仅指出了其后组值的类型,而且与此组值配对。通过使用这些配对的组码和组值,DXF文件被组织成区域,包括:HEADER(标题)区域、CLASSES(类)区域、TABLES(表)区域、BLOCKS(块)区域、ENTITIES(实体)区域、OBJECTS(对象)区域和EOF(文件结尾)。这些区域由记录组成,而记录又由依次排列的组码和数据条目组成。在DXF文件中,每个组码和每个数据条目都各占一行。

每个区域都是以一个其后跟随着字符串SECTION的组码0开始,接着是组码2和表示区域名称的字符串(例如HEADER)。每个区域都是由定义它的元素的组码和组值组成。其后跟着字符串ENDSEC的组码0表示该区域结束。如表1所示。

newmaker.com

2.2ENTITIES区域的作用

ENTITIES(实体)区域记录了每个几何实体的名称及有关的几何数据,如ARC,CIRCLE,LINE,MTEXT及POINT等实体。图形文件的图形部分信息基本在这一段中描述。本文所研究的标题栏中的文本信息即是用ENTITIES区域中的MTEXT(文本框)实体来描述。因此将重点分析一下MTEXT实体中的一些组码和组值。

表1列出描述MTEXT的一些属性,左边为组码,右边的说明给出了它的具体含义。

由表1我们可以看到,组码1的值代表了这个文本的字符串,读出它的值,就可以得到这个文本信息。这个文本值对应何种属性,则由这个文本在图中的位置即它的插人点来决定。如图2所示,图纸的标题栏中的图档名称,编号等信息固定在一个个矩形框中,读出其插人点并判断落在哪个矩形框中,那么这个字符串值就是相应的图档属性值。插人点的坐标由组码10和20的组值读出。

newmaker.com

2.3HEADER区域的作用

为了确定矩形框的位置,我们需要确定一个基点,相对于基点的各个矩形框的位置就可以计算出来。通常我们为了方便起见把这个基点定在标题栏的最右下点,也即整个图幅的右下点,这个点可以通过读取DXF文件中HEADER区域中的代码读出这个点的x,y坐标值。

表2列出这个区域中的一些组码及说明。

newmaker.com

由表2我们可以看到,只要读取DXF文件中$LIMMIN变量后的组码10和20的值即可以得到图幅的左下点坐标值,同理可得到图幅的右上点,有这两个点就可以确定图幅的最右下点,即标题栏的基点。

3、程序的实现及流程图

应用程序采用VisualC++6.0语言开发,VC语言提供了丰富的MFC类库,使用者可以使用它的类库,方便快捷的建立一些数据结构,比如用CPoint类定义基点,CRect类定义矩形区域。并可以运用CRect类中的成员函数PtInRect0判断点是否落入矩形区域。

图3为程序的总流程图,需要先读出基点,再定义模板,然后读出文本信息。图4为读取基点的流程图,求得的变量maxx和miny即为基点的x,y坐标,由此可以构造基点类对象。

newmaker.com

newmaker.com

为了方便信息录人数据库,还定义了一个自定义的CBiaoTiLanMod类,它的成员变量是文本框矩形类和两个文本字符串,分别表示矩形框和它所包含的属性名及文本值(定义略)。

根据基点和图2提供的尺寸,创建标题栏模板类对象组,以分别表示各个矩形区域和落人这个区域所对应的文本值。程序读出DXF文件中的文本框的值,并根据插人点判断落人哪个对象的矩形区域后,将文本值赋予此对象的成员变量Text2,随后将Text2存人相应的数据库表中。信息的录人工作就可以完成了。

4、结论

本文提出在开发PDM系统“图档人库”功能的过程中,图形文件,数据文件,文本文件以及表格文件所采取的不同的文件存储方式,并重点解决图形文件人库后图档对象的名称、图号、设计者等属性的自动生成的问题。通过分析DXF文件结构,读取DXF文件结构的CAD图纸中的标题栏信息,从而将电子图纸中的标题栏信息自动提取人库,并成功的运用到实际操作中。