郝埃俊,賀軍政
(深圳市勘察測(cè)繪院有限公司,廣東深圳 518028)
城市地下管線不僅是城市重要的基礎(chǔ)設(shè)施,還是城市生存與發(fā)展的生命線。目前全國(guó)大部分城市都在進(jìn)行地下管線普查和地下管線修補(bǔ)測(cè)工作,并建設(shè)了地下管線地理信息系統(tǒng),且具備三維可視化功能。但地下管線信息系統(tǒng)三維場(chǎng)景的建立大都基于ArcGIS、SkyLine等地理信息系統(tǒng)軟件,要求具有一個(gè)標(biāo)準(zhǔn)的完善的數(shù)據(jù)庫(kù)數(shù)據(jù)。在城市地下管線普查和修補(bǔ)測(cè)實(shí)施過(guò)程中,國(guó)內(nèi)大多生產(chǎn)單位都采用AutCAD進(jìn)行地下管線探測(cè)的圖形數(shù)據(jù)處理。深圳市是全國(guó)最早實(shí)現(xiàn)地下管線普查的城市之一,我們經(jīng)過(guò)多年的普查經(jīng)驗(yàn),摸索總結(jié)了一種基于ObjectARX技術(shù)的三維地下管線的實(shí)現(xiàn)方法,能快速進(jìn)行三維地下管線建模,并可以在AutoCAD環(huán)境直接瀏覽地下管線空間關(guān)系,方便生產(chǎn)單位的作業(yè)人員,借用三維建模成果進(jìn)行檢查并修改,可幫助生產(chǎn)單位提高數(shù)據(jù)質(zhì)量。
ObjectARX是AutoDesk公司針對(duì)AutoCAD平臺(tái)上的二次開(kāi)發(fā)而推出的一個(gè)開(kāi)發(fā)軟件包,它提供了以C++為基礎(chǔ)的面向?qū)ο蟮拈_(kāi)發(fā)環(huán)境及應(yīng)用程序接口,能真正快速的訪問(wèn)AutoCAD圖形數(shù)據(jù)庫(kù)。與以往的AutuCAD二次開(kāi)發(fā)工具AutoLISP和ADS不同,ObjectARX應(yīng)用程序是一個(gè)DLL(動(dòng)態(tài)鏈接庫(kù)),共享AutoCAD的地址空間,對(duì)AutoCAD進(jìn)行直接函數(shù)調(diào)用。所以,使用ARX編程的函數(shù)的執(zhí)行速度得以大大提高。ARX類庫(kù)采用了標(biāo)準(zhǔn)的C++類庫(kù)的封裝形式,這也大大提高了程序員編程的可靠度和效率。運(yùn)用ObjectARX進(jìn)行二次開(kāi)發(fā),目前常用的開(kāi)發(fā)環(huán)境是Microsoft Visual C++6.0 、Microsoft visual studio 2005、Microsoft visual studio 2008。
地下管線數(shù)據(jù)內(nèi)容多、數(shù)據(jù)量大、邏輯性和專業(yè)性強(qiáng),但有規(guī)律性。地下管線數(shù)據(jù)主要分為屬性數(shù)據(jù)和空間數(shù)據(jù),管線屬性數(shù)據(jù)主要包括點(diǎn)號(hào)、連接點(diǎn)號(hào)(方向號(hào))、材質(zhì)、管徑或斷面尺寸、埋設(shè)方式、點(diǎn)特征、附屬物、埋深、備注等;管線空間數(shù)據(jù)主要是管點(diǎn)和管線的空間坐標(biāo)(X,Y,H)?;贠bjectARX技術(shù)的三維地下管線具體實(shí)現(xiàn)思路如下:
(1)采用C#對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā);
(2)利用 AutoCAD三維要素中 Autodesk.Auto-CAD.DatabaseServices.Solid3d的Box和Frustum構(gòu)建三維管點(diǎn)和管線;
(3)采用數(shù)學(xué)模型將管點(diǎn)和管線旋轉(zhuǎn)移動(dòng)到相應(yīng)位置;
(4)采用AutoCAD三維場(chǎng)景渲染。
地下管線數(shù)據(jù)分為屬性數(shù)據(jù)和空間數(shù)據(jù),他們分別存儲(chǔ)在管點(diǎn)調(diào)查表和管線調(diào)查表,管點(diǎn)調(diào)查表包括點(diǎn)號(hào)、特征、附屬物等屬性數(shù)據(jù)和坐標(biāo)、高程空間數(shù)據(jù);管線調(diào)查表包括起始點(diǎn)、終止點(diǎn)、管徑、起始埋深、終止埋深等屬性數(shù)據(jù)。
圖1 管點(diǎn)、管線表
在讀取管點(diǎn)、管線數(shù)據(jù)構(gòu)建三維模型時(shí),可利用C#數(shù)據(jù)庫(kù)開(kāi)發(fā)功能,采用SQL語(yǔ)句實(shí)現(xiàn)快速讀取相關(guān)數(shù)據(jù),包括從兩個(gè)數(shù)據(jù)表關(guān)聯(lián)讀取。如下代碼:
AutoCAD三維要素通常包括曲面、柱、方形、球形等要素,但沒(méi)有專門(mén)的管點(diǎn)、管線要素。在AutoCAD環(huán)境中,構(gòu)建管點(diǎn)、管線要素可以采用ObjectARX技術(shù)借用柱、方形來(lái)實(shí)現(xiàn),Autodesk.AutoCAD.DatabaseServices.Solid3d類包括CreateBox和CreateFrustum兩個(gè)函數(shù),作用分別創(chuàng)建一個(gè)方形和柱形,讀取地下管線數(shù)據(jù)庫(kù)管徑、管線長(zhǎng)度、井徑、埋深,作為函數(shù)參數(shù)可以創(chuàng)建不同大小、長(zhǎng)度的方形和柱形。實(shí)現(xiàn)代碼簡(jiǎn)略如下:
在AutoCAD環(huán)境中,采用ObjectARX技術(shù)構(gòu)建管點(diǎn)、管線要素即方形或柱形,受ObjectARX技術(shù)的限制,每段管線和井均是在坐標(biāo)原點(diǎn)(0,0,0)創(chuàng)建,且垂直于XY平面,而實(shí)際地下管線位于不同位置,起止坐標(biāo)都有固定的三維坐標(biāo),且管線坡度不一。因此需將創(chuàng)建的管線、管點(diǎn)要素進(jìn)行旋轉(zhuǎn)移動(dòng)等一系列的三維幾何變換,達(dá)到地下管線的實(shí)際位置布局。
三維幾何變換主要運(yùn)用平移變換和旋轉(zhuǎn)變換,三維旋轉(zhuǎn)滿足右手定則,各坐標(biāo)軸旋轉(zhuǎn)方向如圖2所示。
圖2 旋轉(zhuǎn)變換的角度方向
旋轉(zhuǎn)變換矩陣如下:
繞Z軸旋轉(zhuǎn)
繞X軸旋轉(zhuǎn)
繞Y軸旋轉(zhuǎn)
平移變換矩陣如下:
簡(jiǎn)略代碼如下:
通過(guò)以上技術(shù)設(shè)計(jì)思路,采用C#語(yǔ)言基于Object-ARX技術(shù)對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)得到三維地下管線快速建模功能,運(yùn)行此功能命令,然后在AutoCAD環(huán)境中,視覺(jué)樣式設(shè)置為“真實(shí)”模式,并將邊模式屬性設(shè)置為無(wú),即可以得到如圖3效果。
圖3 三維效果圖
在AutoCAD環(huán)境實(shí)現(xiàn)三維地下管線快速建模功能,經(jīng)過(guò)我們多年從事地下管線探測(cè)總結(jié),歸納其發(fā)揮的作用有如下幾點(diǎn):
(1)平臺(tái)通用,操作簡(jiǎn)單,上手容易,方便生產(chǎn)單位作業(yè)。地下管線生產(chǎn)人員及審核人員大都熟悉AutoCAD,在AutoCAD環(huán)境實(shí)現(xiàn)三維地下管線建模讓用戶可輕松操作,可在此環(huán)境中進(jìn)行三維地下管線瀏覽和進(jìn)行檢查工作。
(2)成果數(shù)據(jù)復(fù)制轉(zhuǎn)移方便。在AutoCAD環(huán)境的三維地下管線數(shù)據(jù)可以單獨(dú)存儲(chǔ)一個(gè)文件,復(fù)制或轉(zhuǎn)移給另一用戶,并可在任意一臺(tái)裝有CAD的計(jì)算機(jī)中像瀏覽DWG文件一樣進(jìn)行瀏覽,不像ArcGIS那樣需裝載大型數(shù)據(jù)庫(kù)。
(3)豐富了檢查功能,幫助用戶提高數(shù)據(jù)質(zhì)量。在二維平面數(shù)據(jù)處理過(guò)程中,無(wú)論采用交叉分析、縱橫斷面等分析手段,對(duì)管線空間三維布局都無(wú)法全面而形象的表達(dá)出來(lái)。故在CAD平臺(tái)中實(shí)現(xiàn)三維地下管線建模功能,可以全面反映地下管線空間布局情況,檢查和排查出交叉管線、管徑異常管線等問(wèn)題管線。借用此方法進(jìn)行檢查并給予修改,可幫助生產(chǎn)單位提高數(shù)據(jù)質(zhì)量。
通過(guò)多年地下管線探測(cè)經(jīng)驗(yàn),采用ObjectARX技術(shù)實(shí)現(xiàn)三維地下管線快速建模方法,在AutoCAD環(huán)境中對(duì)地下管線普查數(shù)據(jù)進(jìn)行三維建模,大大方便了用戶于通用平臺(tái)操作、瀏覽、檢查地下管線數(shù)據(jù),有效幫助生產(chǎn)單位提高生產(chǎn)效率。
[1]CJJ61-2003.城市地下管線探測(cè)技術(shù)規(guī)程[S].
[2]杜四春,銀紅霞,蔡立軍.C#程序設(shè)計(jì)[M].北京:中國(guó)水利水電出版社,2006.
[3]溫志勇.基于ObjectARX技術(shù)的巷道三維建模與開(kāi)發(fā)研究[D].太原理工大學(xué);2005.
[4]李長(zhǎng)勛.AutoCAD ObjectARX程序開(kāi)發(fā)技術(shù)[M].北京:國(guó)防工業(yè)出版社2005.
[5]徐莉.三維地質(zhì)建模中的CAD圖形I/O接口研究[D].成都理工大學(xué);2008.
[6]魏占營(yíng),王寶山,李青元.地下巷道的三維建模及C++實(shí)現(xiàn)[J].武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2005,30(7).
[7]鞠建榮,武小軍,張鳳梅.AutoCAD數(shù)據(jù)到ArcSDE的轉(zhuǎn)換方法研究[J].城市勘測(cè),2010(z1).