郝埃俊,贺军政
(深圳市勘察测绘院有限公司,广东深圳 518028)
城市地下管线不仅是城市重要的基础设施,还是城市生存与发展的生命线。目前全国大部分城市都在进行地下管线普查和地下管线修补测工作,并建设了地下管线地理信息系统,且具备三维可视化功能。但地下管线信息系统三维场景的建立大都基于ArcGIS、SkyLine等地理信息系统软件,要求具有一个标准的完善的数据库数据。在城市地下管线普查和修补测实施过程中,国内大多生产单位都采用AutCAD进行地下管线探测的图形数据处理。深圳市是全国最早实现地下管线普查的城市之一,我们经过多年的普查经验,摸索总结了一种基于ObjectARX技术的三维地下管线的实现方法,能快速进行三维地下管线建模,并可以在AutoCAD环境直接浏览地下管线空间关系,方便生产单位的作业人员,借用三维建模成果进行检查并修改,可帮助生产单位提高数据质量。
ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。与以往的AutuCAD二次开发工具AutoLISP和ADS不同,ObjectARX应用程序是一个DLL(动态链接库),共享AutoCAD的地址空间,对AutoCAD进行直接函数调用。所以,使用ARX编程的函数的执行速度得以大大提高。ARX类库采用了标准的C++类库的封装形式,这也大大提高了程序员编程的可靠度和效率。运用ObjectARX进行二次开发,目前常用的开发环境是Microsoft Visual C++6.0 、Microsoft visual studio 2005、Microsoft visual studio 2008。
地下管线数据内容多、数据量大、逻辑性和专业性强,但有规律性。地下管线数据主要分为属性数据和空间数据,管线属性数据主要包括点号、连接点号(方向号)、材质、管径或断面尺寸、埋设方式、点特征、附属物、埋深、备注等;管线空间数据主要是管点和管线的空间坐标(X,Y,H)。基于ObjectARX技术的三维地下管线具体实现思路如下:
(1)采用C#对AutoCAD进行二次开发;
(2)利用 AutoCAD三维要素中 Autodesk.Auto-CAD.DatabaseServices.Solid3d的Box和Frustum构建三维管点和管线;
(3)采用数学模型将管点和管线旋转移动到相应位置;
(4)采用AutoCAD三维场景渲染。
地下管线数据分为属性数据和空间数据,他们分别存储在管点调查表和管线调查表,管点调查表包括点号、特征、附属物等属性数据和坐标、高程空间数据;管线调查表包括起始点、终止点、管径、起始埋深、终止埋深等属性数据。
图1 管点、管线表
在读取管点、管线数据构建三维模型时,可利用C#数据库开发功能,采用SQL语句实现快速读取相关数据,包括从两个数据表关联读取。如下代码:
AutoCAD三维要素通常包括曲面、柱、方形、球形等要素,但没有专门的管点、管线要素。在AutoCAD环境中,构建管点、管线要素可以采用ObjectARX技术借用柱、方形来实现,Autodesk.AutoCAD.DatabaseServices.Solid3d类包括CreateBox和CreateFrustum两个函数,作用分别创建一个方形和柱形,读取地下管线数据库管径、管线长度、井径、埋深,作为函数参数可以创建不同大小、长度的方形和柱形。实现代码简略如下:
在AutoCAD环境中,采用ObjectARX技术构建管点、管线要素即方形或柱形,受ObjectARX技术的限制,每段管线和井均是在坐标原点(0,0,0)创建,且垂直于XY平面,而实际地下管线位于不同位置,起止坐标都有固定的三维坐标,且管线坡度不一。因此需将创建的管线、管点要素进行旋转移动等一系列的三维几何变换,达到地下管线的实际位置布局。
三维几何变换主要运用平移变换和旋转变换,三维旋转满足右手定则,各坐标轴旋转方向如图2所示。
图2 旋转变换的角度方向
旋转变换矩阵如下:
绕Z轴旋转
绕X轴旋转
绕Y轴旋转
平移变换矩阵如下:
简略代码如下:
通过以上技术设计思路,采用C#语言基于Object-ARX技术对AutoCAD进行二次开发得到三维地下管线快速建模功能,运行此功能命令,然后在AutoCAD环境中,视觉样式设置为“真实”模式,并将边模式属性设置为无,即可以得到如图3效果。
图3 三维效果图
在AutoCAD环境实现三维地下管线快速建模功能,经过我们多年从事地下管线探测总结,归纳其发挥的作用有如下几点:
(1)平台通用,操作简单,上手容易,方便生产单位作业。地下管线生产人员及审核人员大都熟悉AutoCAD,在AutoCAD环境实现三维地下管线建模让用户可轻松操作,可在此环境中进行三维地下管线浏览和进行检查工作。
(2)成果数据复制转移方便。在AutoCAD环境的三维地下管线数据可以单独存储一个文件,复制或转移给另一用户,并可在任意一台装有CAD的计算机中像浏览DWG文件一样进行浏览,不像ArcGIS那样需装载大型数据库。
(3)丰富了检查功能,帮助用户提高数据质量。在二维平面数据处理过程中,无论采用交叉分析、纵横断面等分析手段,对管线空间三维布局都无法全面而形象的表达出来。故在CAD平台中实现三维地下管线建模功能,可以全面反映地下管线空间布局情况,检查和排查出交叉管线、管径异常管线等问题管线。借用此方法进行检查并给予修改,可帮助生产单位提高数据质量。
通过多年地下管线探测经验,采用ObjectARX技术实现三维地下管线快速建模方法,在AutoCAD环境中对地下管线普查数据进行三维建模,大大方便了用户于通用平台操作、浏览、检查地下管线数据,有效帮助生产单位提高生产效率。
[1]CJJ61-2003.城市地下管线探测技术规程[S].
[2]杜四春,银红霞,蔡立军.C#程序设计[M].北京:中国水利水电出版社,2006.
[3]温志勇.基于ObjectARX技术的巷道三维建模与开发研究[D].太原理工大学;2005.
[4]李长勋.AutoCAD ObjectARX程序开发技术[M].北京:国防工业出版社2005.
[5]徐莉.三维地质建模中的CAD图形I/O接口研究[D].成都理工大学;2008.
[6]魏占营,王宝山,李青元.地下巷道的三维建模及C++实现[J].武汉大学学报·信息科学版,2005,30(7).
[7]鞠建荣,武小军,张凤梅.AutoCAD数据到ArcSDE的转换方法研究[J].城市勘测,2010(z1).