张福利,丁亚南,何立新
(河南省中纬测绘规划信息工程有限公司,河南焦作 454000)
AutoCAD具有开放的体系结构,允许用户和开发者采用高级编程语言对其进行扩充和修改,能最大限度地满足用户的特殊要求。目前国内许多地形图成图软件均基于AutoCAD平台开发而成,在地形测绘的过程中使用了大量的独立地物符号、行树行灌木和面状填充等点状符号,在地形图整饰或编绘专题地形图时往往遇到这些点状符号遮挡其他地物,手工删除这些符号费工费时。本文详细论述了使用VBA快速删除遮挡符号的程序思路和代码组织编写,在生产实践中取得了良好的效果。在地形图自动化整饰领域进行了有益的探索,符合数字测绘产品程序化、自动化和智能化的发展方向。
VBA即Mcrosoft Office中的Visual Basic for Applications,自2000版本开始它便集成到了AutoCAD中。VBA为用户访问AutoCAD中丰富的技术框架打开了一条新的通道,它利用AutoCAD强大的ActiveX自动化对象模型,代表了一种新型的定制AutoCAD的模式构架。通过VBA我们可以操作AutoCAD几乎所有的内部功能,控制ActiveX使之相互之间发生互动,为自动删除AutoCAD中的各类实体提供了强大的技术支持。
地形图上的符号一般由点、线、面、文字符号组成,若按符号与地物的比例关系分类,点状符号又称为不依比例符号。点状符号按定位情况分为G两类:
①定位性符号:它在地形图上具有确定的位置,一般不能任意移动,如烟囱、水塔、检修井等,它们可以根据符号的位置,确定其所代表的地物及实地位置。
②说明性符号:它在地形图上一般是为了说明地物的质量和数量特征而附加的符号,它们依附于定位范围或定位线而存在,如旱地、林地符号配置于地类界范围内,行树依附定位线而存在,一般呈规则或不规则状排列,但无定位意义。对于无实际定位意义的点状符号或专题地图上无需表示的点状符号若遮挡了重要地物,在地形图内业整饰时,一般为保持图面整洁要删除这些符号。
地形图上的点状符号一般以图块的形式存在于DWG文件的图形空间中,每种符号(图块)均具有特定的内部名称(块名),在特定的比例尺下,符号有特定的比例因子和大小,每个符号插入点的三维坐标是固定不变的。AutoCAD中的快速选择功能可以方便的选择某类实体对象并添加到选择集中,用VBA代码建立选择集时可以同时设定选择过滤器的多个条件,从而更精确、快速的选择到所需的实体对象,进而用代码控制选中实体的移动、复制、删除等操作。建立选择集的方法很多,有“屏幕”选择集,“封闭区域”选择集、扩展属性选择集等,本文用到的主要是“封闭区域”选择集,如图1所示。
程序能自动删除遮挡地物的点状符号主要是基于AutoCAD选择集的操作进行的。设想存在一个点状符号,无论其形状如何,总能有一个平行于坐标轴的最小矩形框可以将符号完整包围(如图1所示)。如果以这个矩形框为选择集的边界,如果这个“封闭区域”内不包含其他实体,那么选择集选中的就是点状符号自身,实体的数量为1个。如果这个封闭区域内有其他符号、文字存在或有多段线、直线穿越,那么“封闭区域”内就包括了多个实体,如图2中的选择集1包含了2个实体,实体数量为2。图2中的选择集2包含了3个实体,实体数量为3。
分析可知:通过点状符号最小矩形包围框建立的选择集所选中的实体数量,如果数量大于1,那么可以判定该符号压盖了其他的地物,就可以将自身删除掉。
图1 封闭区域选择集示意图
图2 包含多个实体的选择集
①建立一个维数固定的静态数组用于存储需要删除的点状符号的基本信息,如块名称及基于插入点的左高度、右高度、左宽度和右宽度等信息;
②在代码中提供人机对话,便于用户在CAD命令行输入选择集过滤条件,如符号所在的图层等;
③依据输入的过滤条件对整个图形建立一个全局选择集,例如选择“ZBTZ”层上的所有点状符号;
④循环读取全局选择集中的每个符号的块名称并和数组中存储的符号信息进行字符比较,确定该符号是否为程序确定删除的符号;
⑤以每个点状符号的插入点为基点,以数组中存储该符号的长度信息构建一个矩形选择区域,建立一个局部选择集;
⑥对局部选择集内的实体数量进行判断,如果数量等于1则保留符号,否则便删除符号自身。
在图3的地形图中,陡坎线、文字和高程注记均不同程度地被旱地填充符号压盖,图面质量较差,程序运行后压盖地物的旱地符号均自动的被删除了,图面效果明显得到改善,如图4的处理前后对比。
图3 程序运行前的地形图
图4 程序运行后的地形图
程序投入使用后,在大面积的大比例尺地形图内业整饰中,短短几分钟的时间便可完成独立符号遮盖地物的删除工作,相比传统的人工查找删除,效率大大的提高,节约了人力资源的投入。限于篇幅,文中仅论述了程序的设计理论基础、开发思路和关键代码的编写过程。
[1]张帆,郑立楷,王华杰等.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004.
[2]张曜,张青,李丁.Visual Basic函数实用手册[M].北京:冶金工业出版社,2002.
[3]CJJ8-99.城市测量规范[S].
[4]GB/T 7929-1995.1∶500 1∶1000 1∶2000地形图图式[S].
[5]郑殿军,付翔等.地图制图[M].哈尔滨:哈尔滨地图出版社,2001.
[6]CASS 7.0成图软件参考手册[R].