(长江宜昌航道局 湖北宜昌 443002)
AutoCAD VBA 工程是许多代码模块、类型模块和窗体的集合,它们一同运作,执行给定的功能。工程可以存储在AutoCAD 图形中,也可以作为独立的文件存储[1]。
AutoCAD VBA是运行在AutoCAD 进程内部的,不必通过与应用程序进行链接,就可以链接到AutoCAD中。AutoCAD VBA是通过ThisDrawing 对象链接到当前AutoCAD 进程的活动图形。通过使用ThisDrawing 直接获得访问当前文档对象和所有相关的方法、属性以及所有在该层次中的其他对象的权力[2]。本文通过VBA 编程能有效提取CAD 海图中数字分离标注式水深,具有提取准确、自动化程度高的特点。且将以往繁杂的提取工作简化,提高了工作效率,输出格式为excel表格,具有良好的可操作性。
根据中国海图图式国标规定[3],水深标注一般采用数字分离式标注方法。如右上图所示,数字分离式标注由整数部分和小数部分两部分组成,没有小数点,靠整数部分与小数部分字体大小和相对位置区分。整数部分位于小数部分左侧,字体比小数部分偏大,位置略高。在整数位下添加下划线代表负号,表示干出高度(深度基准面上)。整数部分和小数部分各自独立,两者并不关联。水深注记(整数)的中心即为水深的实测点位。
数字分离式水深标注示意图(水深10.3m)
打开AutoCAD 2004,然后点击工具——宏——Vba 管理器,然后点击新建,建立一个新的Vba 工程,然后点击Visual basic 编辑器,打开Visual basic编辑器,点击菜单插入——模块,在出现代码窗口输入以下过程代码[4][5]:
'为0层的水深数据建立一个选择集
'区分整数text 和小数text 并分别建立索引
'提取数据并组合
以某码头工程数据为实例,最后处理提取出来的excel表格数据,与原图对比:
原图
处理后
数字分离式水深标注是海图水深标注最常用形式之一,但自动化提取水深相对困难。本文提供了一种利用VBA 编程自动提取数字分离式水深标注的方法,提高工程技术人员工作效率,节省时间与精力。因此掌握一门编程语言,对测绘工作者是很有裨益的。而VBA 由于其简单易学,功能强大,并内嵌于AutoCAD,应该成为我们测绘工作者学习AutoCAD二次开发的首选工具。
[1](美)杰莱(Jelen,B.),(美)斯太德(Syrstad,T.).著,郭兵英译.Excel 2007 VBA 与宏完全剖析[M].人民邮电出版社,2008.
[2]李长勋.AutoCAD ActiveX 二次开发技术[M].国防工业出版社,2005.
[3]GB12319-1998.中国海图图式[S].中国标准出版社,1999.
[4]麦苗,高峰.应用VBA 技术实现提取水深数据自动化[J].水道港口,2006.04..
[5]新智工作室.VB6.0中文版教程[M].电子工业出版社,2001.