基于VBA的AUTUCAD二次开发可定制图戳填写器

时间:2022-06-07 01:09:34

基于VBA的AUTUCAD二次开发可定制图戳填写器

[摘 要]使用VBA对AUTOCAD进行二次开发,利用EXCEL作为定制工具,开发出一种完全可定制的图戳填写器,还可从已绘的CAD图纸中自动生成图纸列表,并可导出dwg或xls格式的图纸目录。

[关键词]AUTOCAD二次开发 VBA EXCEL 图戳图纸目录

中图分类号:TP391.72s 文献标识码:A 文章编号:1009-914X(2014)40-0164-02

0.引言

在用AUTO CAD(以下简称CAD)进行工程设计过程中,一般每张图纸都有一个图戳,用以说明工程、图纸信息等。而在一个工程中往往包含若干不同的专业,每个专业又包含很多部分,例如电气专业,有动力、照明,防雷接地,以及弱电等部分,每个部分又由若干张图纸构成。每张图纸的图戳有很多相同的内容,如果靠手工填写每个图戳,当图纸较多时,非常费时费力,特别当需要对图纸进行统一编号时,很容易出现页码填错的情况。本文利用VBA对CAD 进行二次开发[1],制作了一个可定制的图戳填写器,除了可以自动填写图戳内容外,还可自动导出图纸目录,大大减轻设计人员的工作量。

1.功能概述

工程设计中,一般各单位都会统一自己的图戳,为了美观和统一,且便于维护,通常会将图戳制作为图块,供设计人员在制图时调用。一般图戳内容相对固定,除了比例与每张图纸本身有关之外,其他都是相同或有规律可循的,这就意味着可以用软件自动填写。图戳一般由各设计单位自己定制,其格式没有统一标准,为提高灵活性以及兼容性,采用可定制的图戳填写器,以适应图戳的变化;对图戳内容进行统一编辑、修改、排序和回填;最后导出预定格式的图纸目录。

2.软件实现

2.1 定制内容和方法

由于VBA不仅是CAD的二次开发常用工具[2],还是EXCEL二次开发的首选工具[3],故用VBA来进行开发,用EXCEL来对图戳内容进行定制成了最佳选择。

建立三个Excel工作薄,分别是:图戳内容、专业图纸和工程情况。各自定制的内容如下:

图戳内容

主要包括图戳所包含的内容和其在图块中的标识,还可指明该内容是否从图上抓取;另外,每项都可定义使用的控件、取值范围、默认值等信息。

专业图纸

每个专业占一个表,主要填写该专业常用图纸名称(如电气专业),图纸格式,若为电子表格还应填写表格中各内容所占单元格情况,格式形如:。其中表示EXCEL的列标题,表示EXCEL的行号,方括号内是可选内容,对于合并单元格,1、2分别表示左上角起始单元格和右下角结束单元格。例如“B5”表示5行B列,而“B5-E10”表示从5行B列到10行E列的合并单元格。

工程情况

主要填写与工程有关的信息,该表在使用时经常会被修改,建议存放在工程指定目录下。

软件首先读取“图戳内容”,取得条目个数,计算窗体尺寸,然后动态生成各控件[4](若未指明或未知,均按文本框处理;可从图上抓取的条目会有一个“手掌”按钮),如图1所示;接着将“工程情况”的内容预填进相应控件内;然后读取“专业图纸”,当切换到任一专业时自动生成该专业默认图纸目录。通过增加、删除、编辑、上下移动等操作可对目录进行调整。

2.2 图戳识别与读取

一、图戳准备

不同的图纸类型图戳的型式可能不同,相同的属性其标识却不同,这就给图戳的识别和填写带来了麻烦。针对这种情况,有两种解决方法,一是在上述“图戳内容”页相应条目处给出所有该条目用到的所有标识,供程序读取使用;二是在使用前就将图戳相同属性的标识进行统一,基于对软件可靠性和通用性的考虑,本文建议采用第二种方法。除此以外,还有一点很重要的是不同的属性标识必须不同,否则,将无法正确识别和填写。通常在CAD的块编辑器中修改属性标识,在增强属性编辑器中还看不到修改的标识,此时需要先在块属性管理器中对块进行同步操作,这样,修改的属性标识才能真正起作用。

二、图戳识别与读取

由于块名在图戳使用过程中极易被修改,图戳识别不能靠块名来识别。本文采用以特定属性标识来识别的方法,在“图戳内容”数据簿中定义一个或多个用以识别图戳的属性标识。通过遍历块属性是否有上述属性来判断该块是否为图戳比靠图块名识别更科学和有效。

利用“手掌”按钮进行属性值提取时,通过上述方法首先识别对象是否为合法图戳,接着遍历该对象所有属性,若有预提取的属性,则读取其属性值,返回并填入相应控件内;否则,提示用户选择对象无效,重新选择或返回。

依据各专业的预定义图纸内容,生成初始的图纸目录,但图纸目录中图纸页数、图纸尺寸等通常需要修改;另外,具体工程的图纸目录也会不同。因此,需要对预定义的图纸目录进行编辑(包括增加、删除、修改和排序等)。当需要增加新的图纸或修改已有图纸的名字时,可从已知的图纸目录中选择也可重新命名、添加或修改。

2.4 图戳的回填

如图1所示,在界面上定义好该套图纸的各项内容后,选中图纸表格中某一行,表示将填写该图纸的图戳,根据“专业图纸”数据簿中的信息确定该图纸的默认格式(dwg或xls格式)。若是dwg格式,将回到CAD窗口并提示选择图戳,依序选择该图纸所有图戳后,通过前文所述方法来确定选择对象是否是合法图戳,合法的将被自动填充指定内容,否则自动跳过;若是xls格式,则需选择图纸所在文件和表页,接着软件将按“专业图纸”数据簿中该图纸的预定义格式将预定内容填充进去。

2.5 图纸目录的导出

图纸目录同样也可选择导出为dwg或xls格式,若选择为dwg格式,则提取事先准备好的图纸目录的dwg模板进行填写并放置在指定位置;若选择为xls文件,则选择文件和表页(也可新建表页)之后,将图纸目录的xls模板复制到该页,并按照“专业图纸”数据簿中的信息填写指定内容。

2.6 提取目录

除了可以以既定的图纸目录来填充图戳,还可从CAD图纸自动生成目录。当点击“提取目录”按钮后,切换至CAD窗口,并提示选择图纸,此时框选所有需要编入图纸目录的图纸(图戳),当遇到已有图纸名称时,对其进行累计,生成图纸列表。

3.结语

利用VBA开发的可定制图戳填写器完成后,利用InstallShield实现用户自定义菜单加载[5],当启动CAD时自动加载自定义菜单。当图纸绘制完成后,使用自定义菜单调出图戳自动填写器进行图戳填写和生成图纸目录,每套图纸数量越大,其优越性越突出。图2所示为图戳属性为15个的时候,用手工填写和用软件填写的效果比较,从图中可以看出,手工填写花费的时间和出错率与图纸数量成正比,而用软件来填写,其时间消耗不会随图纸量增加而显著增长,而出错率更会保持恒定并接近为0。

由上可见,利用可定制图戳填写器填写图戳,设计人员的出图效率和质量都有明显提高,不仅减轻了设计人员的工作量,还把设计人员从重复性的劳动中解脱出来,从而可以把更多的精力投入到设计本身当中去。

参考文献

[1] 张帆,郑立楷等.AutoCAD VBA 二次开发教程. 清华大学出版社,2006 -1:403-429

[2] (美)Marion Cottingham著.孔祥丰等译.AutoCAD VBA从入门到精通.电子工业出版社.2001-11

[3] (美)Bill Jelen著.王军等译.巧学巧用EXCEL 2003 VBA与宏.电子工业出版社.2005-9

[4] 张庄.VB动态控件数组的设计与实现.计算机系统应用.1999-11

[5] 刘彦富.罗新荣.梁虹.王保朕.AutoCAD VBA 二次开发应用程序技术.中国科技论文在线

上一篇:压力容器制造过程中变形问题的控制措施分析 下一篇:基于ArcGIS和AHP的煤层顶板含水层富水性评价