AutoCAD.NET技术在地下管线三维建模与碰撞检测中的应用

2019-08-07 08:42佛山市测绘地理信息研究院简汉佳
中国勘察设计 2019年7期
关键词:碰撞检测高程管线

■ 佛山市测绘地理信息研究院 简汉佳

1.引言

在实际的地下管线探测工作中,一般不会发生管线碰撞的情况,但在管线数据库中这种情况却普遍存在。造成管线数据碰撞的因素有很多,如仪器和人为造成的误差、采集地点间距过低造成的数据上的逻辑错误等。因此,如何发现和纠正管线数据的碰撞情况,是保证管线数据质量的重要手段。

2. AutoCAD.net技术

从AutoCAD 2006开始,Autodesk为其开发增加了.NET API。.NET API提供了一系列托管的外包类(Managed Wrapper Class),开发人员可以利用Visual Studio开发平台在.NET框架下使用任何支持.NET的语言,如VB.NET、C#.net 和Managed C++等,对AutoCAD进行二次开发[1]。

同时,随着AuotCAD 2010对三维建模的进一步优化,开发人员可以通过构造拉伸实体、构造放样三维实体及碰撞检查等方法,实现对地下管线数据进行三维建模和碰撞检查。

3.地下管线三维建模与碰撞检测的功能原理及实现

3.1 地下管线碰撞情况分析

(1) 管线碰撞可能出现的情况

管线碰撞可能出现以下3种情况[2](图1):

(a) 两管线相交,其高程范围有相交的情况,则两管线会出现碰撞;

图1 管线碰撞可能出现的情况

(b) 两管线并行,其空间最短距离小于两管线的半径之和,则两管线会出现碰撞;

(c) 两管线共线,若两管线相交或者平行空间距离小于两管线的半径之和,则两管线会出现碰撞。

(2) 基于平面几何与高程的检测算法及缺点

通过比较两条管线的高程差或两管线的空间间距d与两管线半径之各R1+R2,如果d>R1+R2,则两管线不碰撞,否则两管线碰撞。(图2)

图2 平面与高程检测

但是,由于管线埋设的多样性,个别特殊的管线碰撞情况仍无法利用以上方法计算,比如两管线相交,由于其中一条管线两端高差较大,即使两管线相交点的垂直(或水平)间距大于两管线的半径之和,两管线仍然存在碰撞的情况,如图3所示:

图3 特殊管线碰撞情况

3.2 基于三维实体的布尔运算

目前,大部分地下管线信息系统都是基于ArcGIS、SkyLine等地理信息系统软件作为三维平台,且都是以参数化的三维建模技术为主,无法快速地进行大面积的建模。

目前最准确的碰撞检测算法,是创建三维实体进行布尔运算。因此,本文提出了一种基于AutoCAD.NET技术的地下管线三维建模的实现方法,能够在AutoCAD环境下快速地对地下管线数据进行三维建模,同时通过对三维模型的布尔运算进行管线数据的碰撞检测。

3.3 实现方法

地下管线数据库主要采用Access数据库,每一类管线由点表和线表组成,点表记录了管线点的点号、坐标、井底深度、空间位置等信息;线表则记录了管线段两端的点号和埋深、管径、材质、埋设方式等信息。基于AutoCAD.net技术的三维建模和碰撞检测的流程如图4所示:

图4 碰撞检测流程图

(1)读取管线、点信息

根据管线两端平面坐标、管顶(或管底)高程、断面类型、管径等信息,计算管线中轴线的空间位置、起点的横截面及管线向量。

(2)利用AutoCAD.net建立Solid3d类型的模型

使用CreateBox方法建立长方体管线模型,圆柱体管线模型可以使用Create Frustum的方法建立,也可以利用Create Extruded Solid和Extrude方法,对计算得出的管线起点的横截面及向量进行拉伸来建立管线模型。

在AutoCAD 2010发布之前,受技术的限制,在根据管线的形状绘制圆柱体、长方体后,每个管线、点模型在坐标原点(0,0,0)创建,且垂直于XY平面,实际地下管线处于不同的位置、管线坡度不一,需将创建的管线、点模型进行旋转移动等进行一系列的三维几何变换、算法十分复杂[3]。但在AutoCAD 2010中,只需要根据管线的起点高程和截面形状绘制一个面域,再根据管线两端三维坐标计算出管线的拉伸向量,通过对面域的拉伸,就可以构建出一个位置和形状准确地地下管线三维模型。

(3)三维碰撞检测在三维模型建立后,可以利用Solid3d.CheckIn-terference()函数进行三维模型的碰撞检查。只要两管线的三维模型产生了交叠,该函数就能通过布尔运算计算出来。(图5)

图5 布尔运算

(4)提取碰撞管线信息

当检测到管线存在碰撞时,我们可读取两管线的属性信息,同时,通过Solid3d对象的Boolean Operation方法计算两个三维对象的交集,从而获取两管线的碰撞位置、空间净距、侵占比例等信息。

3.4 算法对比

在同一台电脑上,分别使用基于平面几何与高程的检测算法和基于三维实体的布尔运算的检测算法,对某一区域的34公里地下管线进行碰撞分析。结果显示,基于平面几何与高程的检测算法用时320秒,发现碰撞位置152处;基于三维实体的布尔运算的检测算法用时150秒,发现碰撞位置195处。从分析对比的结果来看,基于三维实体的布尔运算的检测算法无论是在从速度上还是在准确率上,都明显优于基于平面几何与高程的检测算法。

4.结语

本文介绍了基于AutoCAD.NET技术开发的三维建模和碰撞检测功能,不需要借助其他三维建模软件,可有效帮助生产单位在管线数据处理阶段对地下管线数据进行三维可视化操作、提高生产效率,同时可以减少在管线普查和管线竣工测量数据处理过程中,由于探测误差或数据处理中的人为错误,可能导致管线数据错误而出现的管线碰撞,保证了管线测量成果的质量。本技术经过实际检验,能够发现基于平面几何和高程碰撞检测算法无法发现的管线数据碰撞情况,具有较高的使用价值。

猜你喜欢
碰撞检测高程管线
基于动力学补偿的机器人电机力矩误差碰撞检测
1,4-丁二醇加氢进料泵管线改造
全新预测碰撞检测系统
海南省北门江中下游流域面积高程积分的应用
8848.86m珠峰新高程
基于BIM的铁路信号室外设备布置与碰撞检测方法
基于Android的移动GIS管线应用设计与实现
基于二次曲面函数的高程拟合研究
基于Virtools的虚拟灭火系统碰撞检测设计与实现
浅谈通信管线工程建设