基于ObjectARX提取AutoCAD中任意格式表格信息
针对AutoCAD图纸中的标题栏和明细表信息的提取,本文以Visual Studio 2008为开发平台,采用单元化表示信息和基表匹配的方式提取标题栏信息,并通过构建三元数组的文本信息矩阵表达明细表结构,完成明细表信息的提取。同时,采用基于动态链接库MFC设计ObjectARX应用程序,将最终提取出的表格信息通过ADO技术存储至SQLServer数据库中,程序运行结果表明,打开AutoCAD图纸后加载应用程序tqmxb,运行提取明细表命令,按照命令窗口提示进行操作,框选表格大体区域即可完成全部提取操作。该研究为PDM 系统的应用提供基础信息,对自动生成产品结构树,提高产品数据管理效率具有实际意义。
AutoCAD绘图软件中不仅能存储图形的几何信息,而且还存储了用户自己建立的“非图形信息”,如标题栏和明细表。这些信息对于生成产品结构树,实现PDM 管理具有重要作用。目前,对工程图纸中文件信息提取的研究很多,郭林源等人研究了利用基于矩阵存储的方法对自动提取任意工程图纸中明细栏信息;伊国栋等人提出了基于单元概念的描述方法来提取工程图标题栏信息;杨铭等人阐述了从工程图表中获取零部件信息的方法。对于这两种表格信息的提取目前还没有一个统一的方法。基于此,本文通过对标题栏和明细表信息提取技术及不同图纸的表格形式可能不相同的情况,研究了基于动态链接MFC库设计ObjectARX应用程序,开发出良好的人机交互界面,并通过对访问SQL Server数据库的技术ADO进行封装,以存储提取出来的零部件信息。此方法操作简单,适用范围广,易于把数据库信息转换成其他格式,为其他系统的应用提供了基础。
1、标题栏信息的提取
1.1、标题栏结构分析
AutoCAD图纸中标题栏一般形式为二维表,由线段和字符串构成,前者对于表达表格的信息起到辅助作用,而后者是表格信息的重要内容。国标中标题栏表格形式如图1所示。
图1 标题栏信息表格
1.2、标题栏信息的单元化表示
本文采用基于动态链接MFC库的ObjectARX应用程序对AutoCAD进行开发,实现对标题栏表格信息的提取。从图纸中得到的表格内容是一个包含有字符串与线段的集合,通过对集合中的原始数据进行分析和识别,生成标准的单元集合,从而实现单元化表示标题栏。单元识别对标题栏的格式识别和信息提取起着关键作用,其识别过程为:首先根据各个线段的相交和相邻情况确定单元边界;其次通过分析线段与字符串的相对位置确定单元边界对字符串的包容情况;最后将整个标题栏以单元集合的方式表达出来。
图2 信息单元
在表达单元的几何属性时采用线段编号的方式以避免线段的求交计算,进而提高信息的处理效率。将标题栏的x 方向线段和y 方向线段分别进行编号,使构成表格的每个单元具有唯一的边界线段编号hihjvpvq,信息单元如图2所示。信息单元表达的基本形式为:unit(hihjvpvq,text)。其中,text为字符串string所包含的纯文本内容。如“(图样代号)”所在的单元可以表示为:unit(07121617,“(图样代号)”)。
1.3、标题栏表格的格式识别
标题栏信息表经单元识别后得到了构成表的单元集合,集合中各单元之间存在着语义关系和位置关系,而这两者之间又有一定的关联。即在某些特定格式的标题栏表格中,前者可以通过后者来表达。在相同类型的标题栏信息表中,属于同一组的单元其位置关系是稳定的,因此可以用来表达表格格式。对标题栏信息表的格式识别主要步骤如下:
1) 构造一个基表,其中不包含任何具体内容,只是作为表达同一类表格式的载体。
2) 待提取的标题栏表格信息单元化以后,将其单元与基表单元进行匹配,通过部分信息是否相同来推断整个待提取表的格式。
3) 建立基表与数据库之间的映射关系,将提取出的信息存储到数据库。
3、结束语
本文以Visual Studio 2008为开发平台,采用基于动态链接MFC库的ObjectARX技术对AutoCAD进行二次开发,程序设计实现良好的人机交互界面。通过提示用户框选装配图中明细表和标题栏的位置,将表格中零部件信息提取出来;同时,采用封装好的ADO技术对SQL Server 2008数据库进行访问,将提取出的明细表信息保存到数据库中,存入数据库的信可以轻松转换成其他格式,从而为PDM 系统的应用提供基础信息,该研究对自动生成产品结构树,提高产品数据管理效率具有实际意义。