电子图纸管理信息的自动提取技术研究
2015-04-07王鹏锦薛爱文刘世忠
王鹏锦,薛爱文,刘世忠
(太原科技大学,太原 030024)
电子图纸管理信息的自动提取技术研究
王鹏锦,薛爱文,刘世忠
(太原科技大学,太原 030024)
通过对AutoCad软件提供的ActiveX-Automation开放接口对象的属性和方法进行分析,项目实现运用面向对象的Visual Basic.net可视化软件编程语言对AutoCad软件进行二次开发,从Autocad软件绘制的DWG格式电子图纸文件中提取可供管理人员使用的标题栏和明细栏信息,项目研究结果实现了把电子图纸标题栏和明细栏信息智能提取到数据库中供有效管理图纸的目的,具有一定实用价值。
AutoCAD二次开发;自动提取技术;电子图纸;管理信息;开放接口
随着计算机绘图软件与绘图技术的不断发展,AutoDesk公司的AutoCAD软件系列成为国内外工程界绘图设计领域流行使用的计算机辅助设计软件,这个软件系列功能完备、使用灵活,有着广泛应用。在工程设计人员用AutoCAD软件进行机器装备的设计过程中,大量的使用AutoCAD软件绘制的DWG格式设计文件便以文件夹的形式存储在电脑硬盘中。这种存储状态下通常可以用文件名来区分图形文件的用途进行分类管理。由于每个文件中又可能同时包含多张不同内容的图形子文件,如果要采用根据电子图纸文件名进一步对标题栏和明细栏信息进行人工组织、查询和归类的管理档案方式,会使整个处理过程涉及到天量的数据信息。这种现实就会给图纸的信息管理带来很多不便。鉴于这种情况就迫切需要研发一种可以对DWG格式图纸文件进行自动智能管理的数据处理系统。这样的数据管理系统其本质就是利用计算机数据处理技术对每张DWG格式图纸文件的标题栏和明细栏信息进行提取、组织、分类,然后归类录入到数据库,以方便相关人员在管理中快速的录入、查询、检索以及修改。可以看出如何实现快速准确地提取DWG格式图纸文件的标题栏和明细栏信息并录入数据库是实现DWG格式电子图纸信息化管理的前提,同时也是完成对DWG格式图纸文件自动信息化管理的关键所在。
1 工程图纸信息化管理系统的概况
电子图纸根据其具体内容可以分为零件图和装配图,零件图的标题栏存放着对该图纸进行标识和说明的信息,装配图的相关信息除了在标题栏中存放外,明细表作为装配图的重要组成部分则存放着装配机器或部件的零部件信息。对存放在DWG格式图纸文件中的标题栏和明细栏信息进行有效提取至今仍然是个难点问题。在电子工程图纸信息化管理的研究过程过程中,本项目尝试建立一套独立于Autocad操作平台和其本身自带的二次开发技术的数据提取和管理技术,以供与设计无关的档案管理人员选择。为此,在研究开发过程中使用了AutoCAD软件对外开放的ActiveX-Automation二次开发技术,同时,利用优秀的Windows软件开发工具Visual Basic.net具有强大的数据库开发功能,这些成熟的技术手段为本系统自动化数据管理功能的实现提供了强有力的技术支持。现今各大企业中大量的采用AutoCAD软件绘制的工程图成为新的等待有效管理的设计档案材料。因此,企业档案管理人员面对的管理对象也从纸质图纸材料变成大量由AutoCAD软件生成的图形文件形式的材料。通常我们可以利用Windows系统所提供的文件管理功能进行简单管理。但是,Windows系统所具有的文件管理操作功能已经远远不能满足象管理AutoCAD图纸文件这种大数据量的自动化管理要求。相关部门在国内外已有类似的系统研发成果,但是各有所长。在扬长避短的基础上本项目有针对性地对DWG格式电子图纸的标题栏和明细栏实现了有效提取和存储管理。项目的数据库系统建立在具有普遍意义的Office数据库Acess基础上,利用Visual Basic.net对AutoCAD软件通过ActiveX-Automation开放接口进行二次开发,最后系统打包为一个可执行应用程序可以独立于Autocad软件自由运行。项目研究实现以下功能:可以把工程图纸中管理人员所需要的的标题栏、明细表信息提取出来并储存到Acess数据库中进行单独窗口界面管理,同时在此基础上通过系统对话窗口对所需图纸文件进行检索、统计和图形浏览,系统这些功能有效地实现了对电子工程图纸的自动化管理。该系统开发过程的关键技术就是利用Autocad软件具有的ActiveX-Automation接口,此接口对外部编程软件开放,提供的二次开发功能。使用Visual Basic.net可视化开发工具作为对Autocad软件进行二次开发的软件是很好的选择,可以将AutoCAD软件绘制的DWG文件中的图纸标题栏和明细表信息识别提取并存储到数据库中进行有效管理。该系统这种图纸标题栏和明细栏信息数据自动化提取功能大大地减轻了操作人员手工录入的负担和失误,因而有效提高了图纸分类管理环节的效率[1-3]。
2 Autocad软件对外开放接口二次开发技术
2.1 ActiveX-Automation概况简介
作为应用于网络环境数据交互场合的开发技术,ActiveX技术在数据交互场合中服务器/客户端模式的各个方面广泛使用,对其进一步研发可以形成ActiveX独立功能构件。这种技术是由微软公司首先提出的,主要用于支持在网络环境中进行数据交换。早期的数据交互是建立在OLE技术基础上的,这是一种建立在软件功能构件COM/DCOM(组成构件对象模型/分布式组成构件对象模型)基础上的数据交换技术,它是由包括两种对象(嵌入对象和链接对象)的复合文档为中心的数据交换形式,应用程序可以通过这种技术手段实现数据交换从而达到多个应用程序间共享数据的目的。计算机技术发展到今天,数据共享网络化趋势越来越明显,ActiveX技术便应运而生。这种技术是建立在底层DCOM技术基础上的高层应用技术,它针对支持网络环境数据交互做出了功能改进,可以更好地支持分布式对象功能。运用ActiveX技术,不同应用软件在各具特色的情况下可以实现协同工作。基于ActiveX技术应用程序之间便可以共享数据和彼此的软件功能。通过ActiveX技术可以轻松实现可编程的二进制对象在应用程序间的功能共享。如同WINDOWS系统控制应用程序一样,支持ActiveX技术的应用软件开发程序,就可以调用另一被开发应用程序公布出来对象的属性和方法,达到实例化二次开发某应用程序的目的,这样开发程序与被开发程序间就可以共享这个应用程序所提供的开放功能。软件开发工作者把应用程序间共享开放资源的接口开发技术称为ActiveX-Automation,简单称Automation.这样,通过Automation提供的新型编程接口可视化编程软件从外部就可以轻松访问另一被开发应用程序开放的二进制对象,这个被编程访问控制的二进制对象在Automation接口技术中被广泛称为Automation对象。其实在操作系统中,任何一个应用程序实质上是把内部各项功能封装在独立的Automation对象中并把这些封装功能通过编程接口进行公布以供其它应用程序编程访问的综合体。一般把这个应用程序间共享功能的模式称为服务器/客户端模式,其中提供开放 Automation对象的服务器应用程序,与访问这些Automation对象的客户端应用程序可以进行数据信息交互。传统的应用程序间数据交互通过函数调用来实现,这种函数调用接口形式提供的可供调用的函数采用平面式的罗列。基于ActiveX技术实现的应用程序间数据交互是通过客户端应用程序对服务器应用程序提供的可编程功能对象以共享方式调用来实现的。服务器应用程序中所有可编程Automation功能对象按照树层次结构进行组织。这种组织可以避免函数调用式接口编程时抽象的函数名称和复杂的参数规则,不会给编程接口实现带来很大难度,更有利于编程人员的把握和编程运用。设计人员使用客户应用程序编程实现所需功能时,通过查看服务器应用程序封装的功能对象模型,总体上就可以把握该应用程序提供的全部功能和各部分功能之间的逻辑层次关系,然后运用ActiveX-Automation技术,我们可以选择任何自己可以熟练使用的Automation客户端开发工具(例如Visual Basic或Jawa)去访问服务器应用程序公布出来的Automation对象,自由选择其他程序的现成功能为自己的程序所用,从而快速地创建自己的应用程序。从DWG格式工程图纸电子文档中自动提取相关管理信息的研究灵活运用这种技术在较小编程难度下实现了电子图纸管理信息智能识别并提取而后存入到数据库的功能[4-5]。
2.2 AutoCAD 的Automation对象模型及其作用
作为AutoCAD2010软件包提供的编程接口,ActiveX-Automation为客户端应用程序开发提供了很大方便。程序设计人员可以选择适合自己的开发语言开发工具,借助ActiveX接口技术从外部调用AutoCAD公布的Automation对象,从而充分使用AutoCAD软件向外部客户端应用程序开放出来的共享功能。
AutoCAD软件包提供的对外可编程Automation对象使用树层次逻辑结构进行组织,其组织形式结构如图1所示。现简述如下:主干层对象是Application对象,通过对Application对象编程控制可以开启AutoCAD应用程序,所以这个对象是Automation层次逻辑对象编程接口的总开关,只有打开Application对象才能访问其它对象。它起到总领AutoCAD应用程序全体对象的作用。次主干层对象是Documents和Preferences对象,通过Documents对象的编程访问实现在AutoCAD应用程序窗口中打开并操作的一个具体AutoCAD图形文件实例。Preferences对象包含着AutoCAD当前文件的设置信息,该对象对应于Preference属性对话框。分支层是Documents对象以及Preferences对象中所包含的各个具体对象集。AutoCAD实际图形文件的对象主要是Documents对象下属的图形和非图形对象。图形对象在AutoCAD中称为实体,就是可见的组成具体图形文件的对象,如Line、Arc和Text等。非图形对象在图形文件中不可见,这些对象主要用于对图形要素标准的设定,如Layer,LineType和DimStyle等。把以上图形对象和非图形对象归类组织,形成各种类型对象的集合,这些图形和非图形对象集合中具体的对象是程序设计人员编程操作的目标。Automation层次对象枝末底层正是这各种类型的具体对象,正是这些对象形成了最基本的图形要素,实际编程操作也是主要针对它们来进行。从图1中可以看出,以上树对象层次结构分析中显示的 AutoCAD应用程序中所有图形对象都是作为ModelSpace Collection和PaperSpace Collection集合对象的从属对象进行安排组织,相应非图形对象都包含在以相应类型名称命名的其它分支层集合对象中。可见,通过分支层集合对象,我们就可以访问当前图形中的所有实体对象,对这些对象根据需要进行编辑,修改或者提取。在电子图纸标题栏信息自动提取技术研究中,主要使用了Attribute和Block两种实体对象来完成对图形对象的遍历和提取[6-7]。
图1 AutoCAD Automation对象模型层次结构图Fig.1 The successive model of AutoCAD Automation object
3 标题栏和明细栏信息的智能提取方法
AutoCAD软件作为进行机器装备设计最常用的绘图软件有着相当的优势,在企业产品设计中占主流地位,随着设计过程的进行和深入必然产生大量的DWG格式图纸文件。任何一个DWG文件内容可能包含一个机器或零件图形,也有可能包含多个机器或零件图形。不论哪种情况,本项目的分析对象是一个图形文件中国家标准规定图框范围内的具体图形内容,可以方便理解为纸质图纸的一张图纸概念。其中反映零件结构图纸的说明和管理信息集中在标题栏中,而反映机器装备装配结构的总装配图或某些部件的装配图的相关管理信息除了包含在标题栏外,还分布在明细栏当中。装配图中的明细栏包含了简要说明组成该机器或部件所用到的标准件、通用件、一般零件或另一个部件的基本技术数据。对于电子图纸文件中的每一份图纸,通过编辑程序读取图纸中的标题栏和明细栏的相关管理信息并录入数据库,就可以给数据管理人员提供快速查询和检索的材料,还可以生成统计报表以及所用的标准件、通用件和其它零件的汇总表。因此将AutoCAD图形文件中每份独立图纸的标题栏和明细栏信息智能提取并存储到数据库中,是进行电子图纸管理的必要前提,这样既可以提高工作效率避免徒手录入数据的繁琐,又可以减少手工录入数据时不易避免的错误录入现象。
实际中不同设计单位对于图纸标题栏和明细栏制定的格式可能不尽相同。针对这种情况,本研究基于ActiveX-Automation技术对AutoCAD软件进行二次开发,编程语言采用Visual Basic.net可视化编程语言,设计了一个基本通用应用系统,实现从AutoCAD电子图形文件中智能提取保存图纸管理信息的功能。应用系统实现结合各单位生产实际风格不同的实际,对标题栏和明细栏的格式不进行严格限制,即可达到有效提取电子图纸档案管理信息的目标,具有灵活适应性广的特点。
如果使用本研究成果进行电子图纸管理,对工程设计人员绘制标题栏和明细栏有一定要求。具体内容以标题栏的绘制过程加以说明。如表1所示的国家标准标题栏中包含的图形对象有Line与Text实体。工程设计人员绘制标题栏时要用到Block和Attribute两个对象。每个Attribute对象相当于绑定了标题栏中的一个具体的Line与Text实体。当所有与标题栏所需图形实体对应的Attribute对象设置完成以后即将它们封装到一个Block对象中。只要将包含Attribute对象的Block对象插入到所设计的图纸文件中并填写相应内容即可完成标题栏的绘制。机器或部件装配图中明细栏的绘制方法和上述标题栏的绘制方法基本类同。但由于每张总装配图或部件装配图中组成的零部件数量不确定使得明细栏记录数也不固定,实际中添加明细栏便需定义相当于一个明细栏记录的Block对象表头,该Block对象中包含的若干Attribute对象和名称、材料和数量等栏目相对应,把这个表头封装在一个Block对象中,根据图中设计的零部件个数插入相应的封装了表头的Block对象便完成了明细栏的绘制。此过程简单易行,便于一般工程设计人员掌握使用[8-9]。
当终端用户已经设计好的图纸不是用上述过程设计的标题栏和明细栏,通过一些修改措施便可以满足程序的数据提取要求。一般情况下,绘制标题栏所用到的AutoCad实体对象包括Line与Text实体。在进行数据提取前,可以先行把标题栏设置成为块对象,然后为该快对象增加Attribute属性对象,把标题栏和明细栏中的信息内容改变成设置好的标题栏和明细栏块对象的附加属性值。这种办法同样可以达到利用程序提取块对象附加属性数据信息而实现对标题栏的信息提取功能。这种功能的自动实现将是本课题进一步研究的内容,在此暂不描述。
表1 国家标题栏
Tab.1 Standard Heading Form of Chinese Engineering
图2 数据信息读取方法的实现流程图Fig.2 The progress of reading data information
对于由Block和Attribute两个对象组成的标题栏信息的提取过程简要说明如下:
(1)Attribute对象是附着标签,具有数据交互功能,其中包含3个可配置子项:Tag ,Value和Prompt.Tag配置子项表示Attribute对象的名称。实际绘制过程中如果将Attribute对象的Tag配置子项设置为“图样代号”则表示该标签对象对应标题栏“图样代号”栏目。Value配置子项包含Attribute对象中的数据信息,如图纸文件中某份具体图纸的图号“GCJX00000”数据就存放在Value配置子项中。在定义好Attribute对象后,Value配置子项暂时不输入具体数据。绘图设计人员习惯于在整个图纸绘制完成后插入标题栏等块对象并进行填写标题栏数据。刚插入的标题栏块对象各栏目中还没有数据,空白待定。绘图设计人员在AutoCAD图形文件中插入定义好的块标题栏对象时,AutoCAD界面下方命令行中提示信息提醒为该块对象所附着封装的Attribute对象输入具体数据,输入的数据存储在标签对象配置子项中。开发管理信息智能处理应用程序时,通过编制程序访问所需Attribute对象的各个配置项就可以获得相应标题栏栏目的数据。
(2)Block对象作为容器对待,可将多个其他对象装入Block对象进行封装合并,形成一个独立的新对象。附着有其它对象的新Block对象可存储为一个DWG块文件,供重复使用。绘图设计人员需要在AutoCAD图形文件中使用该Block对象时,只要将它插入到图形文件中所需位置即可。
(3)在编制相关管理信息提取过程的程序中应该注意把Block对象和BlockRef对象、Attribute对象和AttributeRef对象区分清楚。这是由于BlockRef对象是基于Block对象定义生成的实例,同样,AttributeRef对象也是基于Attribute对象定义生成的实例,是抽象与具体的关系。
在明确以上三方面Block和Attribute对象特点的基础上就可以顺利地运用客户端程序访问这两个对象的实例从而提取出所需要的标题栏和明细栏图纸文件管理信息。实现这个过程的基本步骤为:(1)定义全局变量。(2)将AutoCAD服务器应用程序开放接口对象与Visual Basic.net客户端实现连接。(3)编程控制Document对象及其子对象的属性和方法实现具体操作和数据识别提取。以上对AutoCAD服务器应用程序二次开发过程选用Visual Basic.net面向对象的计算机软件开发语言实现。具体到实现自动提取数据的可执行程序时需要定义一个图纸信息对象(dwginfomation),通过调用该对象的一个自定义读取信息操作方法(readinformation)实现数据的提取,接着再运用其自定义存储信息操作方法(saveinfomation)通过ODBC接口实现数据自动存放入Acccess数据库中。图纸信息对象自动识别和提取信息方法的功能实现是本研究项目中数据处理过程的核心。该数据信息读取与存储的实现流程如图2所示。其中的数据存储功能由于本文篇幅所限,不能对其作出完整的功能介绍,在以后的研究成果中作者会及时与相关同行进行研讨交流。
4 结束语
本文提出的方法在以学生作业图纸为实例的工程模拟中实现。面对从手工绘图过渡到利用AutoCAD软件进行计算机辅助设计方面的快速发展和积累,我们迫切需要解决的问题是对大量设计单位积累下来的用AutoCAD软件绘制的DWG图纸文件进行有效管理。近几年这方面研究成果也不断涌现,在借鉴这些成果的基础上对“基于文字识别技术的图纸分类管理系统研究与开发”课题中的电子图纸文字识别和提取技术进行了研究探讨,开发了一个针对电子图纸管理信息自动提取的功能软件。运用该功能软件可以将DWG图纸文件的标题栏和明细栏中包含的管理信息进行快速高效读取,并通过ODBC接口存储到Access数据库中,以供后期设计档案管理所用。这项研究结果的实用之处体现在它开放和灵活的特点:
(1)设计标题栏和明细栏时,由图形设计者自行设定标题栏和明细栏的样式,设计者对于这部分内容通过Attribute和Block对象进行封装处理,所以该电子图纸管理信息智能提取功能面向最终用户是开放的,具有广泛的适用性;
(2)该功能通过一个独立的ActiveX功能构件实现,可以单独作为插件使用。这样当用户使用要求改变时,可以根据用户的需求而对插件功能作出相应改进,而且作为功能插件可以很方便地被集成到其它应用程序中;
(3)数据的自动入库是基于ODBC接口实现的,可以很方便地同Access数据库系统相连接,从而保护终端用户已有的资料信息。
[1] 曾湘宁.Act iveX 编程技术与技巧[M].北京:电子工业出版社,1997.
[2] 叶晓俊,蒲明辉.产品图纸文档管理[J].计算机辅助设计与制造,1998(3):34-36.
[3] 李桥梁,朱剑英.Aut oCAD 二次开发手段简介[J].计算机辅助设计与制造,1998(6):49-50.
[4] 谢中梅,陈友福,刘素楠.基于AutoLISP和Visual Basic的工程图纸信息提取与处理[J].制造业自动化,2011,33(4):145-148.
[5] 龚 雄,赵建军,陈立平.OpenDWG技术在工程图管理中的应用[J].工程图学学报,2005(6):6-10.
[6] 包建军.基于DWG的煤矿井下定位监测矢量图形系统设计[J].煤炭科学技术,2009,37(10):85-88.
[7] 晏韵,许超.基于DWGDirect访问AutoCAD DWG图形文件[J].工程图学学报,2010(6):178-181.
[8] 肖起年.基于DWGDirectX读写DWG图纸文件的实现[J].计算机系统应用,2009(3):164-167.
[9] CHARLES MCAULEY.AutoCAD 2000 ObjectARX编程指南[M].北京:机械工业出版社,2000:80-147.
Research on Automatic Extraction Technique of Management Information for Electronic Drawings
WANG Peng-jin,XUE Ai-wen,LIU Shi-zhong
(Taiyuan University of Science and Technology,Taiyuan 030024,China)
The study of gaining heading form and name list form information from the electronic DWG document drawn by AutoCAD affords an effective way to obtain management data that is used to organize engineering drawing design for anyone who treat documents in design department of an enterprise.Based on analysis of open ActiveX-Automation object afforded by AutoCAD software package,this study developed a computer program by using Visual Basic.net that extract the data of engineering drawing to database automatically,which will be beneficial to effectively manage engineering data.
AutoCAD secondary development,automatic extraction technique,electronic drawings, management information, open interface
1673-2057(2015)01-0028-07
2014-04-09
太原科技大学校青年基金(20113013)
王鹏锦(1978-),男,讲师,主要研究方向为工程制图。
TP317.4
A
10.3969/j.issn.1673-2057.2015.01.006