1、利用 AutoCAD VBA 二次开发解决深圳市水利基金项目排水管线成图问题【摘要】:AutoCAD VBA 是 AutoCAD 和 Visual Basic 的结合技术,利用它可以完成 AutoCAD 的二次开发工作,本文重点讲述的是利用 VBA二次开发,将管线基本信息写入块属性中,实现在 AutoCAD 图上就能直观显示管线的基本参数,方便管线图使用,提高工作效率。 【关键词】:AutoCAD;Visual Basic;VBA;DAO;管线图;块属性。Application of AutoCAD VBA Secondary Development in Pipeline Drawings
2、Lai Dongjie Shenzhen Water Planning and Design Institute, 518000,Shenzhen,Guangdong, China Abstract:AutoCAD VBA is a combination of AutoCAD software and Visual Basic programming language, which can be used to complete AutoCAD secondary development. This paper focuses on how to write the basic inform
3、ation of pipeline into block properties through AutoCAD VBA programming.After that,the basic parameters of pipeline would be directly displayed on AutoCAD drawings,which benefits the use of pipeling drawings and improves work efficiency. Key words: AutoCAD;Visual Basic;Microsoft Visual Basic for App
4、lications;Data Access Objects;Pipeline Drawing;Block property. 中图分类号:F407.9 文献标识码:A 文章编号: 一 前言 为加快水务建设步伐,提高防洪抗灾能力,缓解我市水资源供需矛盾,促进国民经济持续、快速、健康发展,为深圳建设一流的现代化国际性城市创造良好的水环境,广东省深圳市人民政府专门设立水利建设基金,从市收取的政府性基金中提取 3用于水务建设的专项资金。 水利基金项目 在 AutoCAD R14 版本中,Autodesk 公司首次包括了 Microsoft 的Visual Basic forApplications(V
5、BA)新技术,将 AutoCAD 和 Visual Basic 的功能结合在一起,在 R14 以后的版本(AutoCAD2000、2002、2004、2008 和 2010 等)中我们均可以利用 VBA二次开发技术定制应用程序,实现一些在 AutoCAD 不能或不易实现的功能和效果。 在管线图的使用过程中,会经常遇到这样的一个困扰,管线图上显示出来的信息往往不能够反映全部管线参数,很多管线参数需要到管线点成果表中查询才能够知道,这种图和数据两边不能够关联互通需要来回不停切换查询,使用起来非常不便,影响工作效率不说,还容易因此查错、对错数据也不在少数。为了解决这个难题,我在平时的工作中就不停探索
6、,寻找解决问题的办法,后来终于找到一种解决办法,那就是利用 AutoCAD 的 VBA 二次开发功能进行编程,将管线基本信息(可以按自己需求进行增减)写入到块属性中,这样在 CAD 图上就可以直观看到管线的相关信息,使用起来就非常方便。 二 块属性 块属性是一种可以与块对象相关联的文字对象,它在块对象中提供用户一种交互式的标识或者标签。块属性常常是与图形对象关联的一些信息,如可以关联管线成果中的点号、连接点号、管径(或断面尺寸) 、埋深、材质、点特征、附属物、电压、压力、总孔数、已用孔数、电缆根数、管偏和权属单位等。 块属性对于用户管理和使用图形信息非常有用,用户不但可以在图上直接显示块属性信
7、息,还可以从图形中提取出属性参照的信息,然后在电子表格或数据库中使用这些信息。 三 数据库连接 管线信息写入块属性首先在 AutoCAD 成图时要与管线数据库连接,连接方法如下: 使用 DAO 编程,可以访问并操作数据库,在 VBA 模块中,通过引用对象、集合打开数据,方法如下: Dim dbDataName As Database Dim dbRecordLine As Recordset Set dbDataName =_ OpenDatabase(FileNameStr) 打开数据库文件 FileNameStr Set dbRecordLine =_ dbDataName.OpenRec
8、ordset(“Select * From 管线数据“) 打开数据记录:管线数据 四 块属性写入 要使用块属性,首先需要先定义属性,方法是使用 AddAttribute 来添加块属性,代码如下: 定义并插入块对象和写入块属性 Dim BlocksObj As AcadBlockReference Dim AttriObj As AcadAttribute Set BlocksObj=_ Thisdrawing.Blocks.Add(BlockInPoint, “块名称“) AttValue= dbRecordLine(“点号“) & dbRecordLine(“连接点号“) & _ dbRec
9、ordLine(“地面标高“) & _ dbRecordLine(“埋深“) & _ dbRecordLine(“管径“) & _ dbRecordLine(“材质“) & _ . Set AttriObj=_ BlocksObj.AddAttribute(AttHeight,AttMode,AttPrompt,AttInsPoint,AttTag,AttValue) 其中 AttHeight 为文字高度, AttMode 属性的类型,AttPrompt 提示字符串,AttValue 为块属性的属性值,即管线信息数据,可以将打开的管线记录中相应的内容赋值给它。写入到块属性中的管线信息在打开的
10、AutoCAD 图上就可以直接显示出来,如下图所示: 放大图: 由上图可知,利用 VBA 编程生成的综合地下管图,图中块是有属性的,当我们打开这类图形时,想要知道每个管线点的信息,可以在图上直接获取,而不需要在图和成果表中来回查找,方便使用,可以大大提高工作效率。 五 数据库关闭 块属性写入完成以后,通过 VB 编程,需要将打开的数据记录和数据库文件关闭,否则影响数据库文件安全,关闭数据记录和数据库文件的代码如下: dbRecordLine.Close dbDataName.Close 六 结束语 随着计算机技术不断提升和程序开发设计方法的不断发展,VB 程序开发将在更多的工作领域得到更加广泛
11、的应用,除了文中提到的利用AutoCAD 的 VBA 二次开发可以解决在管线图中显示管线信息以外,比如在测绘的其他专业(地形测量、航空摄影) 、机械、模具等其他行业都可以把相关的信息写到图上的块属性中,不仅方便使用,还可以简化查询工序,提高生产力。 【参考文献】 李凤华编著AutoCAD 2002/2000 VBA 开发指南清华大学出版社; 美Marion Cottingham 著,孔祥丰等译AutoCAD VBA 从入门到精通电子工业出版社; 张晋西编著Visual Basic 与 AutoCAD 二次开发清华大学出版社; 曾洪飞、张帆、卢择临编著AutoCAD VBA & VB.NET 开发基础与实例教程中国电力出版社; 安剑、孙秀梅编著的Visual Basic 数据库系统开发自学手册人民邮电出版社; 赛奎春、李俊民编著的Visual Basic 函数参考大全人民邮电出版社; 张宏林、孔艳 王哲等编著的Visual Basic 6.0 开发数据库人民邮电出版社; 姚巍编著的Visual Basic 数据库开发从入门到精通人民邮电出版社。