王大志,黃 鵬
(國家電投集團廣西電力有限公司,廣西 南寧 530022)
隨著近幾年BIM(建筑信息模型)技術的興起,越來越多的工程設計人員開始從二維設計轉向三維設計。二維設計大多采用AutoCAD軟件。該軟件價格便宜、使用方便,且對計算機硬件配置要求較低,提供的二次開發接口便于用戶擴展其功能。因此,設計人員多傾向于在AutoCAD上開展土石方工程三維設計。然而,AutoCAD自帶的三維內部命令僅能實現最基礎的三維設計,例如:規則三維實體的建立、三維實體的簡單剖切、繪制符合函數變化規律的三維多段線等;然而土石方工程三維設計涉及的三維實體模型復雜,對三維模型的數據獲取要求高,因此,工程設計人員開始使用Civil 3D,Revit,Bentley,CATIA,GEOPAK等功能強大的軟件開展土石方工程三維設計,但這些軟件存在以下不足:① 價格昂貴,例如一套CATIA軟件的使用費約為10萬元,而一套AutoCAD軟件的使用費僅約0.8萬元;② 功能繁雜,熟練掌握軟件應用需花費大量精力,且軟件中很多功能使用率低;③ 三維設計工作流程繁多、效率低,例如Civil 3D進行復雜的放坡設計時,必須在配套的Subassembly軟件上完成放坡截面裝配設計,然后將數據輸入到Civil 3D以完成后續設計[1];④ 對計算機硬件配置要求高,使用配置較低的電腦運行會出現卡頓;⑤ 核心功能不全,例如Revit的三維路線功能不全,需要使用dynamo插件先建立三維路線,再導入到Revit,而dynamo插件的安裝又增加了軟件的使用難度[2]。
因此,如果能直接在AutoCAD平臺上進行土石方工程三維設計,工程設計人員將不需要花費大量精力去熟悉新的軟件,而是把精力多放在設計上;同時,也能提高設計工作效率,帶來較大的經濟效益。國內僅有少數專家、學者利用AutoCAD平臺開展土石方工程三維設計研究,取得了一定成果。周樂韜等[3]建立了地形三維實體和挖方三維實體,并通過布爾運算,得到基坑開挖設計三維實體,實現了基坑開挖的三維設計。李文昌等[4]利用AutoCAD內部命令,采用切割的方式,實現了單級邊坡開挖的三維設計。廉杰等[5]利用AutoCAD二次開發技術建立三維實體地形,并通過拉伸挖填實體地形建立輔助三維實體,再通過布爾運算得到設計三維實體。然而,上述研究僅能實現基坑開挖、單級邊坡開挖等簡單體型的三維設計,未能實現土石方工程量的分類統計及施工控制點坐標的提取。在充分吸取上述研究成果的基礎上,采用基于AutoCAD平臺的ObjectARX二次開發技術,實現了土石方工程三維設計。
ObjectARX是基于AutoCAD平臺的二次開發軟件包,它生成的ARX應用程序是一個DLL(動態鏈接庫),對AutoCAD直接進行函數調用[6]。ObjectARX可以實現對AutoCAD底層進行二次開發,能夠滿足不同專業設計人員的開發需求。ObjectARX常用的開發環境為Microsoft visual studio,同時,還需要安裝ObjectARX SDK;不同的AutoCAD版本對應不同的ObjectARX SDK版本。
ObjectARX三維實體造型技術包括實體生成、設計和查詢[7]。實體生成使用AcDb類和AcGe類的相關函數。實體設計主要靠實體間的布爾運算來實現。布爾運算是數字符號化的邏輯推演法,包括合并、相交、相減[8]。該方法可以將簡單的基本圖形組合產生新的形體。實體的布爾運算有3種:① 并運算,求兩個或兩個以上實體的并集,即合并為一個實體;② 交運算,求兩個或兩個以上實體的交集,即生成實體的公共部分;③ 差運算,將一個實體集從另一個實體集中減去。實體查詢是通過相關函數獲取實體的信息,包括質量、體積、坐標等。
在實際應用過程中,首先調用AcDb3dSolid類的成員函數初始化三維實體,然后調用booleanOper函數進行布爾運算得到設計三維實體,最后以getSlice和getMassProp函數為基礎,構造自定義的函數對三維實體進行剖切和查詢,檢查設計成果。
土石方工程三維設計的思路是根據坡比、坡高、馬道寬度、方向等設計參數,快速建立設計三維實體。首先,根據地形測量數據和地質鉆孔數據建立原始工程地質三維實體。其次,通過設定邊坡、基坑、堤壩、溝槽等挖填參數繪制放坡封閉橫截面,再生成面域,然后以挖填體的走向線為掃掠路徑,通過沿掃掠路徑拉伸面域形成輔助三維實體。最后,輔助三維實體和原始工程地質三維實體進行布爾運算,獲得設計三維實體。對于上述每個設計步驟,采用ObjectARX技術編制應用程序,進而實現在AutoCAD平臺的土石方工程三維設計過程中調用(圖1)。

圖1 建立設計三維實體流程Fig.1 Processes of establishing a designed 3D solid
采用Delaunay三角剖分法繪制地形三角網曲面[9],如圖2所示;利用Surfer軟件對地層鉆孔數據進行插值擬合,形成三維網格數據文件,并導出為“*.dat”格式,利用ObjectARX二次開發技術編程建立地層三角網面;建立掃掠、放樣建模接口函數,沿Z軸拉伸各地層三角網面形成實體,并通過布爾運算生成原始工程地質三維實體模型[10],如圖3所示。

圖2 基于Delaunay三角剖分的地形三角網面Fig.2 Terrain triangulation based on Delaunay triangulation

圖3 原始工程地質三維實體模型Fig.3 3D solid model of original engineering geology
3.2.1 走向線繪制
輔助三維實體是由符合坡比、坡高、馬道寬度等設計參數約束條件的放坡封閉橫截面沿走向線拉伸而形成的三維實體[11]。放坡封閉橫截面是一個垂直于走向線的二維封閉圖形。該圖形靠設計邊坡一側的曲線由多級邊坡設計參數確定。走向線是放坡封閉橫截面在原始工程地質三維實體上的延伸方向線(圖4)。

圖4 放坡封閉橫截面和走向線關系Fig.4 Relationship between sloping closed cross section and strike line
在建立放坡封閉橫截面前,工程設計人員必須根據設計意圖繪制出走向線。走向線類似于道路的路線,是一條由三維坐標點(包括X,Y,Z坐標)連接而成的三維多段線(AcDb3DPolyline)。
對于基坑開挖、邊坡開挖、堤壩回填等項目,走向線上點的Z坐標一般位于同一高程,可以先在XY平面直角坐標系中繪制一條二維多段線(AcDb2DPolyline),然后將該二維多段線移至設計高程處得到走向線(圖5)。

圖5 基坑開挖、邊坡開挖、堤壩回填項目走向線Fig.5 Strike lines of foundation pit excavation,slope excavation and embankment backfilling projects
對于溝槽開挖項目,走向線上的Z坐標一般不在同一高程,走向線的平面線形(俯視圖投影線)和縱面線形(正視圖投影線)由設計人員通過計算得出,溝槽開挖項目的走向線如圖6所示。因此,溝槽開挖項目繪制走向線的方法是先從平面線形中提取X和Y坐標點,然后從縱面線形中提取Z坐標點,最后將坐標值代入繪圖函數,繪制走向線[12],具體步驟如下。

圖6 溝槽開挖項目走向線Fig.6 Strike line of trench excavation project
(1) 設置一個步長,從平面線形起點樁號至終點樁號,沿長度方向逐步提取平面線形的X坐標和Y坐標。坐標提取通過AcDbCurve類的“getPointAtDist”函數實現,該函數定義為:
getPointAtDist(double dist,AcGePoint3d& point)
其中,dist為沿曲線輸入從曲線的起點樁號至需要定位的點的距離,point返回由dist定位的點。該函數在曲線上確定從曲線起點樁號沿曲線距離為dist的點,并在point中返回這個點。
(2) 按照先前設置的步長,從縱面線形起點樁號至終點樁號,沿長度方向逐步繪制輔助直線,并利用“intersectWith”函數提取輔助直線和縱面線形交點。該交點的Y坐標值即為走向線的Z坐標值,該函數定義為:
intersectWith(AcDbEntity*pEnt,AcDb::Intersect intType,AcGePlane&projPlane,AcGePoint3dArray &points,int thisGsMarker=0,int otherGsMarker=0)
其中,pEnt為與“this”實體相交的輸入實體,intType輸入要求的交叉點類型,points輸出附加的交點,thisGsMarker輸入交叉操作中涉及的“this”實體的子實體的GS標記,otherGsMarker輸入交叉操作中涉及的pEnt指向的實體的子實體的GS標記。
(3) 將從平面線形和縱面線形提取的坐標值合并,得到走向線的三維空間坐標點并繪制走向線。步長設置得越小,得到的走向線精度越高[13],如圖7所示。
3.2.2 放坡封閉橫截面繪制
建立輔助三維實體最關鍵的步驟是根據已確定的走向線繪制放坡封閉橫截面。挖方項目和填方項目繪制放坡封閉橫截面的方法各不相同,繪制方法如下。
(1) 挖方項目放坡封閉橫截面。挖方項目放坡是從設計開挖高程坡腳點,根據坡比、坡高和馬道寬度逐級往上放坡。在XY平面直角坐標系中,以坡腳點為原點,根據每級邊坡的坡比、坡高、馬道寬度等設計參數,逐級確定放坡封閉橫截面邊界點坐標(圖8)。

圖7 從平面線形和縱面線形提取坐標點繪制走向線Fig.7 Extracting points from horizontal and vertical alignments and draw strike lines

圖8 挖方項目放坡封閉橫截面邊界點Fig.8 Closed cross section boundary points of cutting project grading
圖8中,pt[0]既是坡腳點,也是走向線起點。從原點pt[0]開始,可以按照設計參數確定的約束關系,依次求得邊界點坐標值。由于ObjectARX參數化繪圖環境為Wcs坐標系,而求得的坐標值是在XY平面直角坐標系(Ucs坐標系)中的值,因此必須調用“acdbUcs2Wcs”函數,將求得的坐標值轉換為Wcs坐標系中的值。最后,將轉換后的坐標值代入繪圖函數,繪制放坡封閉橫截面,如圖9所示。

圖9 挖方項目放坡封閉橫截面Fig.9 Closed cross section of cutting project grading
(2) 填方項目放坡封閉橫截面。填方項目放坡一般從設計高程回填邊緣,根據坡比、坡高和馬道寬度逐級往下放坡。以走向線起點為原點,按照設計參數確定的約束關系,依次求得邊界點坐標值(圖10)。然后,按照挖方項目的方法,對坐標值進行轉換后繪圖,如圖11所示。

圖10 填方項目放坡封閉橫截面邊界點Fig.10 Closed cross section boundary points of filling project grading

圖11 填方項目放坡封閉橫截面Fig.11 Closed cross section of filling project grading
3.2.3 輔助三維實體的掃掠生成
在AutoCAD平臺中,可以利用ObjectARX技術調用“extrudeAlongPath”函數實現掃掠指令,通過沿著指定的路徑延伸輪廓形狀,繪制出三維實體[14]。在繪制完成放坡封閉橫截面后,調用該命令,以挖填體的走向線為掃掠路徑,通過沿掃掠路徑拉伸面域生成輔助三維實體(圖12)。

圖12 輔助三維實體建立Fig.12 Creating auxiliary 3D Solids
三維實體之間的差集、并集和交集可以通過布爾運算函數來實現。對于挖方項目,將原始工程地質三維實體作為求差主體,和輔助三維實體求差集得到設計三維實體。對于填方項目,將輔助三維實體作為求差主體,和原始工程地質三維實體求差集得到設計三維實體(圖13)。調用AcDb3dSolid類的“booleanOper”函數可以實現三維實體的布爾運算,該函數定義為
booleanOper(AcDb::BoolOperType operation,AcDb3dSolid*solid)
其中,operation輸入布爾運算的類型,可能的類型有AcDb::kBoolUnite,AcDb::kBoolIntersect和AcDb::kBoolSubtract;solid輸入指向其他實體的指針,用于執行布爾運算。
生成設計三維實體后,可以采用相關函數對實體進行渲染,得到實體真實效果。Render API是專門實現渲染功能的應用程序包,包括acRender.arx和avlib.lib文件。acRender.arx負責與AutoCAD通信,avlib.lib則包含了與acRender.arx通信的各種編程接口。Render API函數庫提供了相應的渲染函數,每個函數能實現特定的渲染功能。

圖13 設計三維實體建立Fig.13 Creating a designed 3D solid
3.4.1 挖填設計工程量查詢
在建立土石方工程設計三維實體后,需統計挖填設計工程量,為方案比選、工程造價計算等工作提供依據。
首先,利用“booleanOper”函數求得開挖三維實體或回填三維實體。對于挖方項目,將原始工程地質的各地層三維實體和輔助三維實體分別求交集得到開挖三維實體。對于填方項目,將輔助三維實體作為求差主體,和原始工程地質三維實體求差集得到回填三維實體(圖14)。

圖14 開挖三維實體和回填三維實體Fig.14 Excavation 3D solid and backfill 3D solid
其次,利用“getMassProp”函數來實現對三維實體的體積查詢,該函數定義為:
getMassProp(double&volume,AcGePoint 3d & centroid,double momInertia[3],double prodInertia[3],double prinMoments[3],AcGeVector3d prinAxes[3],double radiiGyration[3],AcDbExtents& extents)
其中,volume返回實體的體積,centroid返回實體的質心,momInertia返回固體慣性的X,Y和Z矩,prodInertia返回固體慣性的X,Y和Z乘積,prinMoments返回實體的X,Y和Z主矩,prinAxes返回實體的X,Y和Z主軸,radiiGyration返回實體回轉的X,Y和Z半徑,extents返回實體的邊界框。通過調用該函數,查詢“volume”參數,可得到開挖三維實體和回填三維實體的體積,即挖填設計工程量。
3.4.2 施工控制點坐標提取
施工控制點坐標是土石方工程三維設計的重要數據之一,為挖填施工放樣提供數據支撐(圖15)。目前,一般采用的方法是間隔一段距離繪制挖填橫剖面圖,通過計算挖填線和地形線的交點,獲得施工控制點坐標[15]。該方法工作量大、耗時長。本文在三維設計中,直接利用ObjectARX的三維實體邊界信息提取技術快速實現施工控制點坐標的提取。

圖15 邊坡開挖施工控制點坐標示意Fig.15 Schematic diagram of coordinates of control points for slope excavation construction
(1) 提取施工控制點坐標原理。在AutoCAD中,三維實體模型是由點、線、面等子實體構成。模型的幾何信息包括形體的形狀、位置、大小、尺寸等,模型的拓撲信息包括形體的頂點、邊、表面等相互之間的連接關系,二者構成一個有機的整體,共同形成對三維實體模型的完整的描述[16]。ObjectARX是通過邊界表示法(AcBr)來精確表達三維實體模型的幾何信息和拓撲信息。因此,可以通過建立三維實體模型的AcBr類庫對象來訪問三維實體模型的各個構成元素,如點、邊、面的基本信息和頂點坐標數據。
(2) 提取施工控制點坐標步驟。首先,選擇設計三維實體某一個設計挖填表面,調用“getSubentPathsAtGsMarker”函數獲取子實體路徑。其次,基于此子實體路徑,建立一個新的邊界表示對象(AcBr),使子實體與自身的對象取得聯系。然后,利用此邊界表示對象,依次層層建立面(AcBrFace)、邊界環(AcBrLoop)、邊(AcBrEdge)對象。最后,提取邊對象的頂點坐標,即得到施工控制點坐標數據(圖16)。

圖16 獲取設計挖填表面施工控制點坐標Fig.16 Obtaining the coordinates of construction control points on the designed excavation and filling surface
在AutoCAD平臺中,可以利用建立的設計三維實體模型在圖紙空間中快速生成俯視圖和剖視圖,接著調用“Solprof”命令,提取各視圖的輪廓線,直接生成二維圖形,然后進行標注得到二維工程施工詳圖[17]。
國家電投興安風電項目石料場距離升壓站12.6 km,該項目石料需求約6萬m3。石料場出露灰白色厚層細粒砂巖,局部夾薄層泥質粉砂巖。層狀構造,巖層產狀,傾向153°,傾角28°~35°。該石料場開采的施工圖設計采取了三維設計模式。
首先,根據石料場地形測繪數據和地質鉆孔資料建立石料場原始工程地質三維實體(圖17)。

圖17 石料場原始工程地質三維實體Fig.17 Original engineering geological 3D entity of quarry
其次,依據邊坡設計相關規范,計算并確定邊坡開挖坡比、坡高、馬道寬度等參數,然后根據設計參數在不同高程繪制走向線和放坡封閉橫截面,并建立邊坡開挖設計三維實體。通過方案比選,根據開挖底部平臺設計高程685 m,最終確定石料場開采量約為12.6萬m3,其中剝離料為3.5萬m3,有用料為9.1萬m3,剝采比為1∶3.6,滿足風機基礎和擋土墻澆筑需求(圖18)。

圖18 石料場邊坡開挖設計三維實體Fig.18 3D solid of quarry slope excavation design
興安風電場內道路K18+264~K18+527處邊坡受暴雨作用,形成牽引式滑坡。滑坡發生后,對該滑坡進行了勘測并提出采用抗滑樁的治理方案。在滑坡前緣布置一排8根抗滑樁,樁間距6 m,抗滑樁采用直徑2 m的圓形截面,樁深12 m(圖19)。

圖19 抗滑樁設計三維實體Fig.19 3D solid of anti slide pile design
本文在AutoCAD平臺上,利用ObjectARX二次開發技術,開展了土石方工程三維設計研究。得出的主要結論如下。
(1) 基于AutoCAD平臺的ObjectARX二次開發技術功能強大,利用此技術編制的應用程序滿足土石方工程三維設計要求。
(2) 在利用ObjectARX技術進行三維設計應用程序編制的過程中,每個步驟的實現僅利用了少數核心函數,所編制的應用程序操作簡單、實用可靠。
(3) 在土石方工程三維設計領域,以三維實體布爾運算為基礎的設計方法實現了三維設計的“所見即所得”,比以曲面(Civil 3D,CATIA)為基礎的設計方法更直觀、流程更簡潔、效率更高。
(4) 將機械三維設計常用的邊界信息提取技術應用到土石方工程三維設計,解決了快速獲取設計三維實體施工控制點坐標的難題。
本文建立的設計三維實體能反映出各施工階段的地質情況。基于此成果,下一步將開展邊坡支護設計和爆破施工設計方面的研究。