工程图纸标题栏的自动生成及其信息提取的方法实现_第1页
已阅读1页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机应用与软件苗帅等:工程图纸标题栏的自动生成及其信息提取的方法实现计算机应用与软件Computer Applications and Software工程图纸标题栏的自动生成及其信息提取的方法实现苗帅,王卫东(江苏科技大学 计算机科学与工程学院江苏 镇江212003)摘要:随着AutoCAD工程图纸的广泛应用,如何能快速的操作标题栏及组织其信息,已经成为目前迫切需要解决的问题。本文利用VBA组件设计的人机交互界面,通过调用程序自动生成了具有属性的标题栏,实现了标题栏区域内信息的自动提取,并将提取的信息存储到Oracle数据库,这样不仅提高了制图效率,同时也达到了对图纸标题栏信息的有效组织。

2、关键词:VBAAutoCAD标题栏信息提取中图分类号:TP391.72文件标识码:THEACCOMPLISHED METHODOFAUTOGENERATIONANDINFORMATIONEXTRACTIONABOUT GRAPHICS TITLEBLOCKMiaoshuai, Wang Weidong(School ofComputer Science and Engineering, JiangsuUniversity of Science and Technology, ZhenjiangJiangsu212003, China)Abstract:With the extensive ap

3、plication of AutoCAD engineering graphics, how can quicklymanipulate title block and organizeinformation in graphics have become the problem which is urgently needed to handle.This paperuses the components of VBA for designing the human-machine interface. At the same time, it automatically generated

4、 with the properties of the title bar by calling the program command and also achievedthe automatic extraction of information which belongs to the title bar; this information is ultimately stored in Oracle database.This not only improves the mapping efficiency and also manages efficient the informat

5、ion of the title bar of the graphics.Key words:VBAAutoCADTitleBarInformational Retrieval0 引言收稿日期: 。苗帅,硕士研究生,主研领域: 模式识别与信息系统。利用AutoCAD进行工艺装备的设计时,会产生大量的DWG文件,每个DWG文件中既可能包含一张图纸,也有可能包含多张图纸。无论是图纸信息的组织还是查询,涉及的数据信息都是海量的,这样就会给图纸的信息管理带来麻烦。所谓AutoCAD图纸的信息管理就是利用技术手段对图纸信息进行组织,分类,录入到数据库,方便用户快速的查询检索以及修改。然而这些图纸的信息通

6、常都反映在收稿日期: 。苗帅,硕士研究生,主研领域: 模式识别与信息系统。对于DWG文件标题栏信息的提取,通常采用“模块化属性文字”的方法1,这种方法需先定义模块,这些模块包括图纸的信息和线框图形,提取信息时只需读取模块属性类别所定义的文字即可。这种方法只能满足单个企业内部当前生产需求,而且操作过程也不方便。此外,结合图形图像识别领域的技术,通过单元识别和格式识别,获取标题栏信息表的所有信息2,但是这种方法的准确率不是很理想,特别是给用户对信息查询的带来了影响。另外,还有一种基于ActiveX 技术的图纸标题栏信息自动提取的方法3,该方法介绍了一种利用AntoCADR14版提供的新一代开发接口

7、技术ActiveX Automation,通过访问AutoCADR14的对象模型,直接提取标题栏信息;这种方法很好解决了信息提取准确率的问题。但唯一的问题是要求用户设计标题栏时,用AutoCAD提供两个图形对象Attribute 和Block,没有具体说明如何设计具有Attribute 和Block的标题栏。通过对DWG文件标题栏信息提取现状的分析,可以得出在标题栏信息提取时,除了要考虑信息提取准确率等因素之外,还要考虑在提取之前对于标题栏的设计。特别是对于如何生成标题栏以及如何对标题栏的信息进行提取而后统一入库的系统流程没有一个完整的解决方案。因此,本文在对标题栏信息进行提取之前,首先要实现

8、标题栏的自动生成,使其具有Attribute 和Block,为之后的提取工作做好基础;然后采用VBA结合ActiveX Automation对标题栏内的信息进行提取,确保提取信息的准确率;最后采用ADO技术把提取的信息录入到数据库中。1 总体设计1.1 VBAVBA是AutoCAD内嵌的基于ActiveX技术的面向对象的可视化开发编程工具,由于VBA结构精简且常驻与主程序内部,故其代码运行速度快,数据共享方便。在AutoCAD中,允许VBA编程环境与AutoCAD同时运行,并通过ActiveX Automation接口对AutoCAD进行编程控制。它不仅能控制AutoCAD对象,也能向其它应用

9、程序发送数据或从中提取数据4-5。1.2标题栏的生成AutoCAD中虽然提供了很多用于制作标准化图纸的模板、图块,但对图纸中的标题栏缺乏一种简便、快速的编辑方法,一般是一项费时费力而又繁琐的重复劳动6。因此本文按照国家标准采用VBA自动生成具有属性值的标题栏块,这样使标题栏不仅可以快速的建立,而且建立好后也方便了信息的提取。标题栏生成的算法如下:遍历图纸中的所有实体,根据当前图中是否存在名称为“标题栏”的块参照来判断工作模式是创建模式或是修改模式。如果是创建模式,就调用函数CreateTleBar向图形中添加一个“标题栏”的块定义(防止块定义中实体的重复添加),然后计算关键点的位置,向块定义中

10、添加图框,标题栏分割线和标题栏文字;最后调用函数InsertBlock向图形中插入“标题栏”块参照,调用EditAttributes来根据用户在文本框中输入的参数值修改标题栏的属性值。如果不是创建模式,说明图形中以存在“标题栏”块参照,还需检验是否存在属性值;如果没有,则重复上述创建过程;如果有,则进入修改模式,调用函数ModifyTitleBar修改标题栏窗口的内容。最后显示用户输入或修改的内容同时标题栏属性块更新,具体流程见图1。创建标题栏的核心代码如下:Private Sub cmdOk_Click ()If createMode = True Then 创建标题栏Call Create

11、TitleBarElse 修改标题栏Call ModifyTitleBarEnd If 创建标题栏Private Sub CreateTitleBar () 如果图形中已经存在标题栏图块的定义 If BlkIsExist(标题栏) Then Go To InsertBlockEnd IfInsertBlock: 在图形中插入标题栏 Dim objBlkRef As AcadBlockReferenceSet objBlkRef = ThisDrawing._ModelSpace.InsertBlock(ptInsert, 标题栏, 1, 1, 1, 0)根据文本框的值修改标题栏的属性 Call

12、 EditAttributes (objBlkRef)End Sub开始开始是否为创建模式是否存在属性值创建和插入标题栏提取标题栏块的属性调用标题栏创建窗体初始化调用标题栏编辑窗体,修改窗口的内容显示用户输入或修改窗体中的内容把内容赋给块属性值,块更新结束图1 标题栏创建的工作流程1.3信息的提取将按上述方法自动生成标题栏后,通过ActiveXAutomation技术就能将标题栏中的信息提取出来。基本算法如下:遍历当前图纸中的所有实体,通过实体的属性判断该实体是否是标题栏属性块对象。如果是标题栏属性块,则判断该标题栏中是否包含Attribute对象。如果包含Attribute对象,则通过Get

13、Attribute方法获得快参照的属性集合。然后遍历此集合,通过该集合中的元素获取每个Attribute对象中包含的属性值。将属性值存入标题栏模板信息结构,判断是否结束遍历。遍历结束时,标题栏中所有Attribute对象中包含的关于图纸的信息都被统一入库,具体流程见图2。信息自动提取的核心代码如下所示:Dim EntObj As AcadEntityDim AttRefObjs As VariantDim n As IntegerDim i As IntegerDim j As Integer 判断块是否包含属性If EntObj.HasAttributes Then 遍历当前图形中的所有对象

14、For Each EntObj In SSetObj 返回属性数据AttRefObjs = EntObj.GetAttributes n=n+1 遍历属性For i = 0 To UBound (AttRefObjs)For j = 0 To LBObj.ListCount - 1If AttRefObjs (i).TagString = _LBObj.List (j) And LBObj.Selected (j) = True ThenIf n = 1 ThenxlSheet.Cells (n, j + 1).Value =_AttRefObjs (i).TagStringxlSheet.C

15、ells (n + 1, j + 1).Value =_AttRefObjs (i).TextStringElsexlSheet.Cells (n + 1, j + 1).Value =_AttRefObjs (i).TextStringEnd IfEnd IfNextNextNextEnd IfSet EntObj = NothingEnd Sub开始开始是否存在标题栏属性块遍历每一个实体是否包含属性调用GetAttribute读取属性将属性值存入标题栏模板信息结构标题栏模板信息统一入库结束遍历结束?图2 标题栏信息提取的流程1.4提取后的信息录入数据库ADO是在AutoCAD VBA中开发

16、数据库应用程序最好的技术,利用ADO编程模型可以完成访问和更新数据源的工作7。由于基于VBA创建数据库的ADO连接以及把信息添加到数据库表中的研究已经非常成熟;因此根据本文的具体情况,重点说明如何建立数据库的表结构。1.4.1 数据表的建立建立于ADO数据源的连接后,可以使用ADO编程模型的command对象执行SQL语句来实现Oracle数据表8。由于本文所处理的标题栏都是按国家标准生成的,因此本文只需建立一个表结构,数据表中的字段主要包括单位名称图样名称图样代号重量比例设计者设计日期审核者以及审核日期等其他一些附属信息;但是为了信息入库后方便建立索引,需要确定表结构的主键。标题栏中一般包括

17、签字区、更改区和名称代号区等多个部分。只有图纸的图样代号是图形文件的唯一标识,但是由于大量的工程图纸来自不同的设计单位,图样代号很难保证会出现不重复,因此本文采用一组事先已经编好并且保证不重复的代码作为表结构的主键。当一条信息录入数据库时,会自动产生一条代码与其对应作为主键,然后调用程序进入标题栏修改模式,把这个代码添加到图纸标题栏的图样代号一栏中,这样既可以保证信息在数据表中的唯一性,也提高用户查询的准确性。下面是创建数据表的部分程序:创建ADO连接并打开Sub CreateConnection () Dim ConStr As String 连接字符串 Set cn = New ADODB

18、.Connection cn.CursorLocation = adUseClient cn.Provider=Microsoft.Jet.OLEDB.4.0;ConStr = _Data Source=d: VBASample.mdb;cn.Open ConStrEnd SubPublic Sub AcadWriteToDB ()Call CreateConnection 建立ADO连接Set cmd = New ADODB.CommandSet cmd.ActiveConnection = cn创建bar数据表If HasTable (cn, bar) = False Thencmd.Co

19、mmandText = _CREATE TABLE bar (id char (10),标记 float,处数 float图样代码 float);cmd.ExecuteEnd If1.4.2 提取的信息入库为了把提取的信息一一对应到数据表中,需要标题栏模板信息结构和数据库作映射约束。根据这个映射约束关系,将提取信息表的值单元文本内容直接写入数据库表的相应位置,完成信息的入库。2系统功能模块设计VBA可提供强大的窗体创建功能,为应用程序设计出与AutoCAD软件包风格完全一致的对话框及其它屏幕界面9。本系统总共设计了3个模块:图框模块标题栏生成和修改模块以及标题栏信息提取模块。2.1图框模块本模

20、块主要的目标为:在AutoCAD 中,利用参数化绘图技术自动绘制符合国标的装配图图框及标题栏。用户可以选择使用其绘制标准A0A5 幅面的装配图图框和标题栏。该模块在自动绘图之前建立几个标准图层,使得绘制的图框线型符合国标要求,如图3所示。图3 图幅选择界面2.2标题栏生成模块本模块将利用自定义的List Control控件实现一种所见即所得表格式界面,可以方便地实现标题栏文字的编辑,并利用参数化绘图技术实现标题栏的绘制及文本的插入。修改标题栏的窗口和创建的窗口是一样的,只是文本框已被用户赋值,直接修改单击确定即可。图纸应优先采用国标规定的图幅(GB/T14689-93),图纸可以横向或纵向放置

21、。目前,标题栏的格式和尺寸无统一标准。按经验参考,取标题栏的宽度为180mm,高度56mm。标题栏一般由更改区签字区其他区名称及代号区组成10,图4所示。图4 标题栏生成模块界面2.3标题栏信息提取模块在标题栏导出的对话框中单击“选择”按钮,对话框隐藏,AutoCAD会提示“选择标题栏属性块”拾取完成后,对话框重新显示,在文本框中给出了拾取的标题栏属性块的名称结果。在选择“属性列表”框中是要导出的属性字段,可以全部或者部分导出,用户可以根据自己的实际需要自行修改要导出的属性字段,如图5所示。图5 标题栏导出界面3 结束语本文基于VBA对AutoCAD进行信息管理开发,实现了标题栏的自动创建和信

22、息提取,并通过ADO技术写到数据库中。整个程序在AutoCAD2004中调试通过,运行良好;标题栏的绘制和修改变得非常容易,而且满足了信息提取的准确度,为后续的信息查询优化做了准备工作。参考文献1 陈燕. 基于ODT的DWG文件标题栏信息自动提取的实现D. 上海: 华东师范大学,20042 伊国栋,谭建荣,刘振宇. 工程图纸中标题栏单元信息提取与识别技术研究J. 中国机械工程,2003,14(1):41-45.3 王欣,魏生民. 基于ActiveX技术的图纸标题栏信息自动提取J. 计算机技术与发展,2000,37(4): 507-512.4 孟兴菊,石梅生. 用VBA开发AutoCAD自动生成

23、标准图纸图栏系统J. 机械设计与制造,2005,(10): 73-74.5 吴敬兵,陈定方,余梦华等. 基于VBA的AutoCAD与Excel信息的双向传递J. 武汉理工大学学报(信息与管理工程版),2007,29(2): 74-76.6 简慧云. 用VBA开发AutoCAD标准图纸图栏系统J. 计算机应用,2002, 22(22): 56-58.7 张帆.AutoCAD VBA二次开发教程M.北京: 清华大学出版, 2006.8 邓明,张国枢,鲍和云. 用VB实现外部数据库的调用开发AutoCADJ. 计算机技术与发展,2008,18(7): 240-243.9 田启华,周祥曼,杜义贤. 基于A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论