文档库 最新最全的文档下载
当前位置:文档库 › 利用VBA自动提取CAD图纸明细表并进行数据库管理

利用VBA自动提取CAD图纸明细表并进行数据库管理

利用VBA自动提取CAD图纸明细表并进行数据库管理
利用VBA自动提取CAD图纸明细表并进行数据库管理

自动提取CAD图纸明细表及数据库管理的研究与实践

本文TAG:工程图明细表自动提取AutoCAD数据库管理2008-10-21

作者:尹胜安出处:e-works 阅读:1582 推荐:0

本文详细介绍了如何开发应用AutoCAD来自动提取CAD图纸明细表及管理数据库,其切切实实的

为设计工作节约了大量的时间。

制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL 进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。

AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。

Microsoft VBA (Visual Basic for Application) 是一个面向对象的可视化编程环境,它是由Visual B asic派生而来,AutoCAD内嵌的VBA提供了与Visual Basic相似的丰富的开发能力。AutoCAD从R14版开始增加了作为ActiveX Automation服务器应用程序的功能,这是一个功能强大的接口,它提供了一系列开放的对象,通过这些对象,VBA应用程序便可以对AutoCAD进行编程控制。AutoCAD2000及以

后版本其功能进一步扩充,强化了AutoCAD与数据库的通讯能力,能够使AutoCAD与其它应用程序(例如Microsoft Excel、Word、Access)直接共享数据。它是对AutoCAD进行二次开发的一种强有力的手段。

笔者以AutoCAD2004为背景,应用VBA开发工具和Access数据库技术成功地实现了自动提取CAD 图纸明细表与进行数据库管理的研究目标并取得较好的实用效果。

一、自动提取AUTOCAD图纸明细表

工程技术图纸的右下角区域一般都布置着标题明细栏,记载着图形总体和明细的特征信息和基本技术要数,它是所有派生技术文件的信息源头和依据,CAD图纸继承了这个惯例。我国国家技术标准GB/T10 609.1~2-1989对图纸标题明细栏的形式、内容、尺寸都作了具体规定。虽然各企业图纸标题明细栏样式不尽相同,但大同小异,基本结构一致。标题栏记载着图形的外部信息,明细栏记载着图形内在的详细要素和彼此的关联。

(图一)

明细栏由若干明细行组成,明细行则由各栏目组合。自动提取AUTOCAD图纸明细表的信息其实质就是针对明细行对各栏目进行提取数据的操作。提取明细行数据的方法概括起来,通常有坐标定位法和块行取值法两种:1.坐标定位法:即先点选起始明细行左下角坐标与末尾明细行右上角坐标所在的位置,确定提取数据的区域范围,对该区域范围内的所有实体对象进行逐一扫描,读出文字对象(TEXT、MTEXT)的(X、Y)坐标属

性和字符串属性。通过文字对应坐标值的分析确定该文字在明细表中的位置,实现自动提取数据的操作。这种方法对单图的DWG文件效果较好,但对多图的DWG文件和不规则的标题明细栏操作起来就很复杂且取数的精度也较难控制,实用效果不够理想,这种方法对以往标题栏未作规范要求的老图纸其作用显而易见。

2.块行取值法:即利用AutoCAD块行属性特征来提取明细栏的信息。

在AutoCAD内部对象模型(AutoCAD Object Model)以层次结构组织起来,顶层可编程的Application对象启动AutoCAD应用程序的一个实例,通过Application对象定位到其它对象;第2层是Document和Preference对象,Document对象代表当前在AutoCAD应用程序窗口中打开并操作的一个AutoCAD图形文件,Preference对象对应于Preference对话框包含AutoCAD当前的配置信息;第3层是Document的集合对象,如ModelSpace,PaperSpace,Blocks对象等等,通过集合对象我们就可以访问当前图形中的所有实体。

块行取值法主要使用集合中Attribute和Block两个对象。具体设计明细行时,没有格式限制,唯一要求就是必须使一个Attribute对象对应明细行中的一个栏目项,将对应明细行中所有栏目的Attribute对象组合在一起放入Block对象中,该Block对象就是用户定义的块行(明细行)。将定义好的块行依次插入(复制)到图纸标题栏上方,组成图纸明细栏。其操作如下:

·绘图→块→定义属性(图二、图三)

·修改→对象→属性→块属性管理器(图四、图五)

图二

图三

图四

图五

图六

Attribute对象是具有交互功能的一种标签,含有3个配置项:Tag,Value和Prompt。

Tag项是该Attribute对象的标志符,即Attribute对象的名字。例如Tag设置为"件号",表示该Attribute 对应明细栏中的"件号"栏目。

Value项表示Attribute中包含的真实数值,如某个具体的件号值为"001"。在定义Attribute对象时,由于初始明细栏目中的具体内容不确定,则该属性一般暂不输入数据。待块行建立后其输入的数据就存储在Attribute对象中,这样通过程序访问Attribute对象的Value 属性就可以获取其中的数据。

Prompt项表示Attribute的提示信息,引导用户完成数据输入操作。

Block对象是一个容器对象,该Block包含多个Attribute对象。在AutoCAD图形中插入明细行后,只要点击该行系统就会提示用户输入相应的值,并显示在图形标题明细栏中。

在开发中要注意区分Block和BlockRef(块引用对象)、Attribute和AttributeRef(属性引用对象)对象。在AutoCAD图形中定义Block时,该Block对应Block对象。将定义好的Block插入到另一个图形中,就是基于Block的定义生成一个实例,该实例就是BlockRef对象;同样,在AutoCAD图形中定义Attribute 时,该Attribute对应Attribute对象。将包含在Block中Attribute插入到另一个图形中,就是基于Attribut e 的定义生成实例,实例对应的就是AttributeRef对象。因此在从AutoCAD图形的明细栏中自动提取管理信息时,涉及到的两种对象是BlockRef和AttributeRef对象.

将按上述方法定义好的规范明细栏插入到AutoCAD图形中后,通过ActiveX Automation 技术就能将明细栏中的信息提取出来。在Document的集合对象中Modelspace对象是一个特殊最大的BLOCK,包含图纸中所有实体(图形对象),由于BLOCK、Attribute允许嵌套,因此为搜索当前实体中的属性信息提供了方便。基本算法上使用了递归调用扫描当前图纸中的所有实体,通过实体的EntityType属性判断该实体是否是BlockRef 对象,如果是,则判断该BlockRef 对象中是否包含AttributeRef 对象。如果包含则获取AttributeRef 对象的列表。然后扫描此列表,通过TagString和TextString属性获取每个AttributeRef对象中的数据,并同步写入ACCESS数据库;当扫描结束时,明细栏中所有AttributeRef对象中包含的信息都被提取出来,自动在ACCESS 数据库中即可形成初步的明细数据表。

在AUTOCAD中自动提取明细表数据解决方案思路如(图七)所示:

血液DNA快速提取方法

Rapid Extraction of High Quality DNA from Whole Blood Stored at 4oC for Long Period Materials and Methods Standard chemicals This method uses standard chemicals that can be obtained from any major supplier; we used chemicals supplied by Sigma Co. as follow: EDTA M), pH : Add gr of anhydrous EDTA to 800 ml of distilled water. Adjust pH to with NaOH pellets. Make up to 1 liter with distilled water. Autoclave at 15 for 15 min. 1 M Tris-HC1, pH : Dissolve gr of Tris base in 800 ml of distilled water. Adjust pH with concentrated HCl. Allow mixture to cool to room temperature before finally correcting pH. Make up to 1 liter with distilled water. Autoclave at 15 for 15 min. Preparation of Red blood cell lysis buffer: M Tris-HCl pH , 320 mM sucrose, 5 mM MgC12, 1% Triton X 100. Add 10 ml of 1 M Tris, gr of sucrose, gr MgC12, adjust pH to and finally add 10 ml of Triton X-100 to 800 ml of distilled water, and make up to 1 liter with distilled water. Autoclave at 15 for 10 min. Sugars at high temperature can cause caramelization (browning), which degrades the sugars [5]. Preparation of Nucleic lysis buffer: M Tris-HC1, mM sodium citrate, 1 mM EDTA, 1 % sodium dodecyl sulphate (SDS). Take 10 ml of 1 M Tris-HC1 (pH , gr of anhydrous EDTA (pH , 10 gr SDS, gr of sodium citrate, and adjust pH to . Make up to 1 liter with distilled water. Autoclave 15 min at 15 TE Buffer, pH : Take 5 ml of 1 M Tris-HCl, pH , 2 mL of M EDTA, pH 8, and make up to 1 liter with distilled water. Adjust pH to and autoclave 15 min at 15. Chloroform prechilled to 4°C. Ethanol (100%) prechilled to -20°C. Procedure of DNA Extraction Before starting DNA extraction, liquid blood venogects should be shake gently by rotating blood mixer (vortex) 1.Pour 500 μl of blood into a ml eppendorf tube and add 1000 μl of red cell lysis buffer. 2.Shake microfuge tube gently (up to homogenizing), then spin for 2 minutes at 7000 rpm. 3.Discard supernatant and repeat steps 1-3 two or three more times to remove hemoglobin. It is important to breakdown the pellet by vortexing and rinses it well in red blood cell lysis buffer in order to clean the white blood cells from residual of hemoglobin. 4.Placing the tube on tissue paper for few seconds downward. Be careful from cross-contamination between different samples. 5.Add 400 μl of nucleic lysis buffer to eppendorf tube. Note: if the pellet formed, you must pipette the pellet up to dissolve it. 6.Add 100 μl of saturated NaCl (5M) and 600 μl of chloroform to eppendorf tube and mix on a rotating blood mixer at room temperature then spin it for 2 minutes at 7000 rpm. 7.Transfer 400 μl of supernatant to a new ml tube. 8.Add 800 μl of cold (-20°C) absolute Ethanol and shake it gently then vortex it. DNA should appear as a mucus-like strand in the solution phase.

相关文档