基于AutoCAD管线流向检查的程序实现
2013-03-03范香香
范香香
(蚌埠市勘测设计研究院,安徽蚌埠 233000)
基于AutoCAD管线流向检查的程序实现
范香香∗
(蚌埠市勘测设计研究院,安徽蚌埠 233000)
地下管线探测工作是一项非常重要的工作,它的正确与否影响到其他建设工程的开展。本文主要论述利用微软的.NET软件Visual Studio结合AutoCAD的二次开发接口.NETAPI进行程序定制,此程序可以检查出管线流向的缺失、方向不一致问题,并自动修正箭头错误,还可以检查出整个管网水流的连续性,列出详细的错误提示。
地下管线;流向检查;特征码
1 前 言
由于近年来,受城市内涝的困扰,越来越多的城市开始了大范围的管线普查工作,主要是污水和雨水管线的普查。管线探测工作非常繁重,不仅外业工作量大,内业的数据处理工作也是很大,这样就造成了在数据处理时,容易出现一些不容易察觉的错误,如不小心删除了流向箭头、随意的挪动了图形等,在流向问题中,由于管线调查中出现了错误,导致管线有同出、同进的现象,使得污水或雨水的方向在管网中相互矛盾,水流无法排出,如图1所示。
图1 管线流向
在多达几万条数据中,利用人工去查找这些错误是相当困难的,而且费时费力。为了提高工作效率,提交合格的产品给委托单位,笔者开发了一套程序可以自动对图形中流向箭头进行检查,可以找出不合格的情况并进行处理,同时可以对整个管网进行水流检查,确保水流整体走向的正确性。
2 算法流程
把管线节点中流进方向表示为1,流出方向为0 (图2)。这样可以在整个管网中检查管线节点是否同时具有1和0这两个标识符,如果同时具备条件,则说明此节点是连续走向的,没有此条件的则标记为可疑点,可以到实地重新查看情况并进行改正,详细步骤如图3所示。
图2 管线节点标识
图3 流向检查流程图
3 开发思路及程序实现
由于现在在各项工程中,AutoCAD的应用比较广泛,不乏有许多优秀的二次开发软件,如测量中的南方CASS、建筑设计的天正软件等,所以本程序是基于AutoCAD来开发的。而在开发语言的选择中,采用了微软的.NET软件Visual Studio结合[1]AutoCAD的.NET API[2]进行开发,其程序运行的速度可以和C++的ObjectARX相媲美,而且Visual Studio中包含了VB、C#、J #等语言,开发者可以根据自己的喜好来选择,其中的VB.NET是最简单易学,适合非专业的开发人员。
(1)检查管线示向箭头[3,4]。从图形中遍历每条管线,以每条管线的端点作为选择集中矩形窗口选择的角点进行选择,如果选择集中有多个流向箭头,则计算流向箭头到管线的距离。如果距离都不为零,那么该管线没有示向箭头,给出错误提示。如果超过一个的距离为零,则示向箭头有重复。若每条管线对应一个流向,那么就检查箭头的方向和管线的方向是否一致,检查方法是根据角度来判断,如果不一致则根据线段的角度来调整箭头旋转角度,以达到自动修正的目的,如图4所示。
图4 窗口自动选择和错误提示以及示向箭头检查
(2)给每个管线节点赋特征码[5]。在生成管线时,如果节点作为起点,则赋予节点扩展数据为0,如果节点作为终点,则赋予节点扩展数据为1。如图5所示,管线点的特征码为1010,当然0和1的位置和顺序无关。
图5 节点特征码
主要代码如下[6]:
'给节点赋特征码
Public Sub addXdataForEntity(ByVal gxLines As List(Of Line),ByVal gxPoint As BlockReference)
'存储特征码
Dim strXdata As String="" '遍历和节点有联系的管线
For Each gxline As Line In gxLines '如果管线起点的坐标和节点坐标一致If gxline.StartPoint=gxPoint.Position Then
strXdata&=0 Else
strXdata&=1 End If
Next
Dim db As Database=HostApplicationServices.Working-Database
'开始事务处理
Using trans As Transaction=db.TransactionManager.StartTransaction
Dim Reg As RegAppTable=trans.GetObject(db.RegAppT-ableId,OpenMode.ForWrite)
If Reg.Has("GX")=False Then
Dim app As New RegAppTableRecord app.Name="GX" Reg.Add(app) trans.AddNewlyCreatedDBObject(app,True) End If
'加入扩展数据
Dim rb As New ResultBuffer(New TypedValue(DxfCode. ExtendedDataRegAppName,"GX"),_
New TypedValue(DxfCode.ExtendedDataAsciiString,strXdata))
gxPoint.XData=rb trans.Commit()
End Using End Sub
(3)检查同一个管线节点中,是否有大管径的水流向小管径的情况。主要是通过在图形中检查经过此点的管线,并通过提取管线的扩展数据来实现。
(4)检查每个管线节点的特征码。如果特征码有1和0,说明此管线时连续的,如果只有1或0,则管线是可疑点,需查明情况。错误报告如图6所示。
图6 错误提示报告
4 结 语
近年来,管线测量的工作越来越多,利用AutoCAD的二次开发,定制一些符合当地管线数据格式的程序,可以方便我们在处理数据时的工作。同时,减少了一些在实地调查中和数据录入时出现的错误,从而提高了工作效率,为单位节省了人力和物力,也为工程质量提供了保障。
[1] Thearon Willis Bryan Newsome.Visual Basic 2008入门经典[M].北京:清华大学出版社,2009.
[2] 秦洪现,崔惠岚,孙剑等.Autodesk系列产品开发培训教程[M].北京:化学工业出版社,2008.
[3] 张凤瑞.基于AutoCAD的管线数据采集系统的研究[J].城市勘测,2011(6).
[4] 李志刚.地下管线自动编号方法的研究与实现[J].城市勘测,2012(1):104~106.
[5] 钱业宏,花向红.AutoCAD扩展数据在地形图建库中的应用[J].城市勘测,2008(1):118~119.
[6] 赵向阳,牛守明,刘清丽.基于ObjectARX的城市地下管线数据建库方法探讨[J].城市勘测,2009(5):42~45.
The Realization of the Program to Check out the Pipeline Flow Based on AutoCAD
Fan Xiangxiang
(Bengbu Geotechnical Engineering and Survering Institute,Bengbu 233000,China)
It’s a very importantwork to carry out the underground pipeline detection that its correctness will affect other construction projects.Therefore,to ensure the correctness of pipeline data is requisite.This article is starting from here,about the program customization based on Microsoft's.NET software Visual Studio combined with AutoCAD secondary development interface.NET API.This program can check out the lack of the pipeline flow and the inconsistency of direction.Besides,it also can automatically correct the arrow error and check out the continuance of entire pipe network flow so as to set out the detail errormessages.
underground pipelines;the check of flow;signature
1672-8262(2013)03-152-03
P209
B
2013—03—02
范香香(1986—),女,助理工程师,主要从事城市测量工作。