AutoCAD块属性的生成与提取
2013-05-25 by:广州有限元分析、培训中心-1CAE.COM 来源:仿真在线
AutoCAD中块的属性是在一个块内的变量文字区,利用块属性可以给块加上文字或数据信息,利用块属性来提取文件信息,避免文件信息提取时无效信息过多,提取、处理复杂的情况,提取的信息即为所需要的明细表信息,而且采用块属性建立明细表,这样建立的明细表具有统一的样式,也便于在AutoCAD中的管理,更能满足企业对文件标准化的要求。
1引言
目前,AutoCAD提供了五种二次开发手段,分别是:AutoLISP, ADS ,ARX , VisualLlSP, VBA和Visual Basic。这五种开发工具都具有强大和丰富的二次开发能力及自己鲜明的特点。由于有些工具不适应目前的可视化编程要求,而逐渐被其他工具所替代。与其他几种二次开发方法相对比,VBA具有全开放式的对象模型、良好的运行速度、能够使AutoCAD与其他应用程序直接共享数据等优点。
本文研究利用VBA操作AutoCAD文件中Block对象的属性,将其中包含的明细栏信息导人Microsoft Excel的Worksheet对象中,生成符合要求明细表。研究基于对象模型的AutoCAD文件信息处理技术,研究介于AutoCAD和Excel之间的数据信息交换程序的开发,以及对产生的明细表进行后续处理的方法。
2明细表自动提取的实现
将AutoCAD中的明细表信息自动导人Excel的实现过程为:首先通过VBA访问AutoCAD,然后从AutoCAD中获取明细表信息,接着将明细表信息导人Excel,最后再Excel中对提取出来的明细表信息进行进一步的处理。
提取明细栏信息的过程主要包括通过块属性建立明细栏、利用VBA提取明细栏信息、在Excel中对提取的明细栏信息进行整理等几个步骤。
现在以一个实际工作中碰到的例子来具体说明利用VBA从AutoCAD文件中提取明细表信息到Excel的全过程。因为涉及保密的原因,删去了图纸中原有的具体设计内容,仅保留了有关的图框和明细栏的内容。
2.1 明细栏的建立
当装配图中需要输人明细栏信息时,按照国标及所标的要求,明细栏位于图纸标题栏的上方,按由下到上的顺序填写。首先在指定位置插入事先生成的标示明细栏各项名称的明细栏表头图块:明细栏头.dwg,如图1所示。
插人明细栏表头后,就可以依次输人明细栏的各项内容了。为了统一明细栏的格式和便于以后的明细栏信息提取,这里采用了带属性的块插人来输入各项明细栏信息。
达到这个目的,需要建立一个带有属性的块mxl。属性是在一个块内的变量文字区,利用属性可以给块加上文字或数据信息。首先按照有关明细栏的标准要求画出一行符合要求的明细栏表格,然后选择AutoCAD的下拉菜单中的绘图Draw-块Block-定义属性Define Attributes,或者直接在命令行输人attdef命令来生成明细栏的各项内容属性,此时弹出的对话框如图2所示。
使用带属性的块插人来创建明细栏,没有具体格式限制,用户可以根据实际需要设计白己的格式,具有很大的灵活性,也利于信息的统一提取。
在带属性的块中有Attribute和Block两个图形对象,一个Attribute对象对应明细栏中的一个栏月项,将对应明细栏中的所有栏目的Attribute对象组合在一起放人Block对象中,该对象就是用户定义的一个明细栏记录,然后将定义好的Block插人到图中,就是在图纸中放置了一条明细栏。
由于每张总装图或部件装配图中明细栏记录的个数是不定的,因此只需为一个明细栏记录定义一个Block,该Block包含若干Attribute对象,对应于名称、材料和数量等栏目,在AutoCAD图形中生成明细栏时,有多少个明细栏记录就插人多少个明细栏Block。
我们用InsertBlock方法将块插人到图形中,用AddAttribute方法往块中添加属性,属性的参数有标记、属性值、插入属性时的提示、文本的插人点。
创建了明细栏图块后,其它明细栏内容均可通过插人mxl图块,依照命令行的提示输人各项明细栏的具体内容而生成。
明细栏图块只需创建一次,以后其他装配图需要输人明细栏时就可以同样插人这次创建的mxl图块。
因为在创建图块属性时已经规定了各属性文字的位置、格式,所以以后插人的各条明细栏的文字位置、格式均保持一致,保证了图样的统一,也便于管理,避免每次确定明细栏文字位置、格式的重复劳动,提高了输入栏信息的速度。
通过反复插人mxl图块,并分别输人各项明细栏内容,直到完成各条明细栏信息的输人,即可完成在装配图中建立明细表的工作。
2.2 明细表提取
将按上述方法定义好的明细栏插人到AutoCAD图形中,就可以通过VBA利用ActiveX Automation技术就能将其明细表信息提取出来,再导人Excel进行排序、统计等处理了。
基本算法是:历遍当前图纸中的所有实体,访问实体的EntityType属性判断该实体是否为BlockRef对象,如果是,则判断该BlockRef对象是否包含AttributeRef对象,如果包含,则获取AtteibuteRef对象的列表,历遍此列表,通过TagString和TextString属性获取每个AttributeRef对象中的数据。历遍结束后,明细栏信息就被提取出来,然后导人Excel中即可形成初步的明细表。
2. 3明细表的后处理
刚提取出来的明细表排列比较混乱,还不能达到进行清晰统计的目的,为此需要对Excel文件进行整理。首先对序号栏进行排序,然后调整各栏的宽度,使得各栏内的内容均显示完全、清晰。再对明细表信息进行分门别类的整理,才能产生符合要求的明细表,满足实际的需要。
3结束语
经过对AutoCAD装配图中的明细栏的组成进行认真分析,结合本单位在设计、生产等领域的实际情况,实现一种利用AutoCAD块属性提取AutoCAD装配图中明细栏信息的开发模式,成功地应用于实际的日常工作项目中,提高工作效率和所提取的明细表数据的准确性。这种方式具有复杂程度低、易于掌握的特点,在各种机械设计加工行业具有推广价值。
相关标签搜索:AutoCAD块属性的生成与提取 AutoCAD培训 AutoCAD培训课程 AutoCAD图纸设计 AutoCAD在线视频 AutoCAD技术学习教程 AutoCAD软件教程 AutoCAD资料下载 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 Autoform培训