AutoCAD中一种自动处理悬挂的方法及其实现

2014-01-27 05:54陈清平尧志青陈方清
地理空间信息 2014年2期
关键词:改动等高线交点

陈清平,尧志青,胡 菡,陈方清

(1.湖北省测绘工程院,湖北 武汉 430074)

AutoCAD中一种自动处理悬挂的方法及其实现

陈清平1,尧志青1,胡 菡1,陈方清1

(1.湖北省测绘工程院,湖北 武汉 430074)

介绍了数字线划图生产过程中利用CAD二次开发(VB.NET+ObjectARX)自动检查并处理悬挂线的技术,并对该技术存在的不足进行了分析。

悬挂点;悬挂线;悬挂容差;CAD二次开发

1 悬挂线定义和产生原因

在矢量图形的自动生产过程中,可能会遗漏、重复或错误定位某些点,从而产生悬挂线。例如,航测数据采集因受生产软件和手轮角盘等硬件条件的制约,采集者为了贴附地物进行精确采集,将会放弃三维捕捉和二维捕捉,从而产生悬挂线。在线划图的编辑处理过程中,会遇到一些咬合精度达不到要求的悬挂线。仅与一条线段相连的节点称为悬挂节点,与悬挂节点相连的线段称为悬挂线。

利用AutoCAD 2007进行线划图的生产过程中,遇到的悬挂线可分为2种情况:悬挂线与参照线之间有缝隙(见图1)、悬挂线超过了参照线(见图2)。

这2种悬挂在生产的过程中会大量出现,需人工进行编辑处理以达到生产要求。本文分析和研究了一种自动处理悬挂线的方法,利用VB.NET和ObjectARX对AutoCAD进行二次开发,用程序实现悬挂线的自动处理。

图1 悬挂类型之一

图2 悬挂类型之二

2 自动处理悬挂线的前提和参数

在处理悬挂线前,首先要确定悬挂线、悬挂点的位置和坐标,即全图查找悬挂点并定位每一个悬挂点。

定义一个容差范围圆,超过容差圆半径的悬挂可认作正常悬挂,保留悬挂查询点,供人工判断。在容差范围内的悬挂可用程序改动。1∶1万的数字线划图容差半径设置为5 m时(图面距离为0.5 mm),程序自动处理结果达到预计效果的99.9%。大比例尺数字线划图可根据精度情况减小容差半径。

3 具体实现过程

3.1 具体步骤

1)结合查询出来的悬挂标示,遍历DWG图中的LWpolyline(轻量多段线)和Line(直线),通过对照悬挂标示的X、Y值与线段的首尾节点X、Y值,获得悬挂标示Id与悬挂线Id相关联的二维集合(此处不需考虑节点Z值),搜索需改动的悬挂对象和位置(如图3所示)。

图3 确认悬挂对象

2)根据比例尺大小和实际情况设置容差圆的半径大小,该半径即为自动处理悬挂改动距离的最大范围。如果程序判断改动范围超过了该半径,则放弃自动处理悬挂,保留悬挂标示,供人工判读。

3)遍历悬挂点列表,搜索出以悬挂点为中心的特定范围内的多段线,判断搜索出的多段线条数n。当n<2时表示该悬挂点已经超出改动范围,不做处理;当n≥2时,计算求出悬挂线与各条参照线的交点或延长线的交点,从而求出悬挂处需延长或裁剪的距离集合。遍历该集合得出最短距离值,如果该值没超过容差圆半径则执行悬挂点改动,延长或缩短到最近交点上,即给悬挂点赋交点的X、Y值和自身Z值以达到消除悬挂的效果。

在搜索以悬挂点为中心的特定范围内的参照线时,程序可进行优化处理。如果把全图线段作为参照线的集合,程序将会遍历该集合进行解算求改动最小距离,使得计算量成平方级增长,非常费时;可将程序改进为利用悬挂点为中心,框选特定范围内的(利用窗交工具)线段作为参照线集合解算结果,使得计算量大为减少,效果比较理想。对于不同标高的线段求交点消除悬挂,可通过正射投影到一个任意水平面上,获得交点。提取交点的X、Y值,提供给悬挂点进行移动,从而消除悬挂。

4)分别标示出改动过和未改动的悬挂点位,供人工检查和修改。图4中绿色圆为改动处,红色圆处因改动范围超过容差所以未处理,交由人工判断。具体实现流程如图5所示。

3.2 主要代码

1)查找悬挂点、悬挂线。

2)通过设定的容差批量延伸、裁剪多段线消除悬挂。

4 注意事项和解决方法

利用该算法编译的程序经过测试和生产,遇到了以下问题:

1)由于原线划图中存在错误,导致程序依照算法判断出的结果也出现错误。例如,一条地类界本应停靠在双线路的虚线上,但由于原图将其错误地穿过双线路的虚线边而停靠在实线附近,程序运行后,会依照算法将地类界咬合双线路的实线边而穿越了双线路,使得最终结果错误。

2)判断等高线的合理悬挂问题。由于等高线在坎线下方的悬挂是合理存在,所以使用该方法处理等高线悬挂时会出现错误。在其自动处理悬挂时,应先冻结等高线层,避免等高线的参与。如何有效地处理等高线悬挂问题还有待程序的更加完善。

3)AutoCAD 2007的数学精度问题。在2007版的CAD中其默认显示精度为0.000 1个单位,而运算精度可以达到0.000 000 01个单位,所以在程序运算时应注意计算结果的四舍五入,以保证数据精度的统一。

[1] Watson K, Nagel C. Beginning Visual C#2005[M].北京:清华大学出版社,2006

[2] 杨德麟.大比例尺数字测图的原理方法与应用[M].北京:清华大学出版社,1998

[3] 陈国良.并行算法的设计与分析[M].北京:高等教育出版社,2003

[4] 武汉大学测绘学院测量平差组.误差理论与测量平差基础[M].武汉:武汉大学出版社,2003

[5] (美)Coombs F. Visual Basic编程实用大全[M].北京:中国水利水电出版社,2005

[6] 李士雨.工程数学基础——数据处理与数值计算[M].北京:化学工业出版社,2005

[7] 高春燕,李俊民,刘彬彬.Visual Basic程序开发范例宝典[M].北京:人民邮电出版社,2006

Research and Realization of Processing Suspension Automatically Technology in AutoCAD

byCHEN Qingping

This article introduced the technology of searching and processing suspension line automatically in the production process of DLG by the secondary development of CAD (via VB.NET& ObjectARX),and analyzed the weakness at the same time.

suspension point,suspension line,tolerance,secondary development of CAD

P208

B

1672-4623(2014)02-0067-03

10.11709/j.issn.1672-4623.2014.02.024

2012-11-19。

陈清平,高级工程师,研究方向为航空摄影测量。

猜你喜欢
改动等高线交点
地形图的阅读
阅读理解
一种基于Fréchet距离的断裂等高线内插算法
借助函数图像讨论含参数方程解的情况
试析高中数学中椭圆与双曲线交点的问题
“等高线地形图的判读”专题测试
鸵鸟
基于南方CASS的等高线内插功能的改进*1
咪咪(节选)
指数函数与幂函数图象的交点的探究性学习