陳蕾蕾 ,劉占午 ,徐 鵬 ,何 琴
(1.江蘇省水利勘測設(shè)計研究院有限公司,江蘇 揚(yáng)州 225127;2.江蘇省水利建設(shè)工程有限公司,江蘇 揚(yáng)州 225007;3.江蘇省水利科學(xué)研究院,江蘇 南京 210017)
21 世紀(jì),以信息化技術(shù)為支撐,通過云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)、移動終端、人工智能、水利模型、傳感器等新興技術(shù)的應(yīng)用[1],水利事業(yè)進(jìn)入蓬勃發(fā)展的新時期,傳統(tǒng)水利正逐步轉(zhuǎn)化成現(xiàn)代化水利[2]。隨著國家對水利信息化工作重視度的不斷提高,BIM(Building Information Modeling),即建筑信息模型技術(shù)逐漸應(yīng)用于水利工程項目中[3]。水利工程建筑物 BIM 模型建立一個真實描述工程設(shè)計的數(shù)字信息模型,是實現(xiàn)可視化仿真技術(shù)的基礎(chǔ)[4]。水利工程與普通建筑工程特點不同,其建模順序、方法、要求也會有所不同,因此需要進(jìn)行定制化建模[5]。Autodesk 公司開發(fā)的 Revit 軟件可進(jìn)行參數(shù)化三維建模、協(xié)同設(shè)計,為設(shè)計人員提供真實的三維視角[6],且 Revit 軟件開放二次開發(fā)接口 API,允許用戶通過接口解析 Revit 數(shù)據(jù)并根據(jù)需求進(jìn)行定制化開發(fā)[7]。
Revit 平臺上手動創(chuàng)建扶壁式擋土墻主要分為2 個步驟:1)通過輪廓放樣[8]創(chuàng)建 1 個擋土墻;2)通過輪廓放樣創(chuàng)建 1 個扶壁,將扶壁放置在擋土墻導(dǎo)線上并根據(jù)需求進(jìn)行陣列和偏轉(zhuǎn)。對于單直線或者單圓弧導(dǎo)線型擋土墻扶壁放置操作并不復(fù)雜,但是對于導(dǎo)線為組合線型,如折線型或者直線與圓弧的組合型,扶壁放置尤為困難,需要手動計算扶壁放置的間距和旋轉(zhuǎn)角度。若是采用基于 Revit 平臺的扶壁式擋土墻三維建模二次開發(fā)程序[9]可通過代碼計算扶壁間距和旋轉(zhuǎn)角度,提高了建模效率,如圖1 和 2 所示,但是二次開發(fā)程序中固定了導(dǎo)線的類型(直線或者圓?。┖蛽跬翂Ψ较颍ㄖ荒転檎颍⑽纯紤]多線型導(dǎo)線和反向擋土墻模型的扶壁放置,因此本研究基于 Revit 平臺和 C# 技術(shù)研發(fā)扶壁放置程序,可通過選擇導(dǎo)線和墻體兩側(cè)邊緣線快速放置扶壁,滿足異型導(dǎo)線和正反向懸臂式擋土墻的扶壁放置。
圖1 扶壁式擋土墻插件輪廓設(shè)置
扶壁放置程序二次開發(fā)是通過 Revit 開放的接口 API 和 C# 技術(shù)將手動操作步驟以程序代替的過程,利用后臺代碼執(zhí)行人工和計算操作從而簡化整個操作流程,提高用戶建模效率,簡化建模過程。
扶壁放置程序通過模擬手動放置扶壁的過程以程序代替人力的方式簡化用戶操作,與以往開發(fā)的二次程序略有不同,扶壁放置程序需要與用戶進(jìn)行多次交互選擇,比如需要用戶選擇“扶壁放置路徑”,并選擇“擋墻兩側(cè)邊緣線”,且因為扶壁與原來的擋墻并不是一個整體,需要代碼在底層將扶壁與擋墻進(jìn)行連接,因此扶壁放置程序涉及 Revit 的兩大類 UIDocument 和 Document[10]。UIDocument類對主要提供獲取元素(Selection)、顯示元素(Show Elements)和視圖管理(Active Document)3 種功能,Document 類可以打開或創(chuàng)建 Revit 的族或項目文件并在已打開的當(dāng)前文件中進(jìn)行拉伸(Extrusion)、放樣(Sweep)、連接(Join)等操作。
圖2 扶壁式擋土墻插件導(dǎo)線設(shè)置
手動放置扶壁的 UI 界面操作主要包含放樣創(chuàng)建單個扶壁模型,陣列、旋轉(zhuǎn)偏移角度及墻體和扶壁模型連接[11],對于導(dǎo)線比較復(fù)雜的擋土墻陣列和偏轉(zhuǎn)角度涉及計算,尤其是偏轉(zhuǎn)角度需要每個扶壁獨立進(jìn)行,無法批量操作。扶壁放置程序的二次開發(fā)借鑒了手動操作步驟,其設(shè)計流程如圖3 所示,用戶根據(jù)界面提示拾取擋土墻的導(dǎo)線和兩側(cè)邊緣線,拾取操作完成后界面會跳出扶壁參數(shù)設(shè)置[12]界面如圖4 所示,該界面中包含扶壁的輪廓參數(shù)設(shè)置、扶壁放置個數(shù)、間距顯示及拾取的導(dǎo)線信息。程序根據(jù)界面中輸入的扶壁個數(shù)、扶壁厚度導(dǎo)線的長度計算扶壁之間的間距并得到扶壁的偏移點,通過兩側(cè)邊緣線計算擋土墻的方向及扶壁的偏轉(zhuǎn)角度,最后批量生成符合程序判定要求的扶壁并將他們與擋土墻連接使其成為一個整體。
圖3 二次開發(fā)設(shè)計流程圖
圖4 扶壁參數(shù)設(shè)置界面
扶壁放置程序有兩大難點:1)通過導(dǎo)線和兩側(cè)邊緣線判斷當(dāng)前擋土墻是正向還是反向;2)對選擇的導(dǎo)線進(jìn)行陣列,導(dǎo)線的數(shù)量和類型由用戶手動操作選擇,并根據(jù)選擇的導(dǎo)線類型和擋墻的方向計算扶壁放置后的偏轉(zhuǎn)角度。
判斷擋土墻的方向主要依賴擋土墻兩側(cè)邊緣線和與其相交的導(dǎo)線,直線型與圓弧型導(dǎo)線判斷方向的方法并不一致,直線型導(dǎo)線判斷方向的主要步驟是:1)計算直線和兩側(cè)邊緣線某一條線的交點;2)根據(jù)交點確定是否反置邊緣線,確保直線和邊緣線是正向向量的關(guān)系;3)計算直線與邊緣線的法線向量;4)根據(jù)法線向量的Z值得到擋土墻的方向,如果Z> 0 則是正向,Z< 0 則是反向。
圓弧型導(dǎo)線判斷方向的主要步驟是:1)計算圓弧和兩側(cè)邊緣線某一條線的交點;2)以交點為起點,圓弧的圓心為終點,生成新的一段直線;3)判斷直線與有交點的邊緣線的關(guān)系,如果是重合或者完全相同則是正向,否則就是反向,其判斷流程圖如圖5 所示。
圖5 判斷流程圖
選中的導(dǎo)線集合通常是無序狀態(tài),計算扶壁的陣列點之前需要先將導(dǎo)線排序,即確保選中的導(dǎo)線集合是首尾相連的狀態(tài),默認(rèn)排序規(guī)則是從左向右;扶壁的陣列算法是一個大循環(huán),以扶壁間距為度量單位對導(dǎo)線集合進(jìn)行切割,為確保偏轉(zhuǎn)是扶壁能與墻體有效連接,不存在縫隙,陣列算法中最后1 個放置點需要偏移“扶壁厚度”單位;扶壁的旋轉(zhuǎn)算法是 2 層循環(huán),外層循環(huán)的主體是導(dǎo)線集合,內(nèi)層循環(huán)的主體是陣列算法中得到的陣列點集,圓弧型導(dǎo)線計算旋轉(zhuǎn)角度時還需考慮擋土墻的方向,具體的扶壁陣列、旋轉(zhuǎn)算法描述如圖6 所示。
圖6 扶壁陣列、旋轉(zhuǎn)算法解析
Revit 平臺中扶壁創(chuàng)建方式主要包含手動、扶壁式擋土墻二次開發(fā)和扶壁放置 3 種插件創(chuàng)建方式,它們的操作步驟各有不同,但其硬件環(huán)境均要求單核或者多核 intel/英特爾 i5 以上 CPU 且內(nèi)存 2 GB 以上 PC 機(jī),軟件環(huán)境均要求 Windows 7.0(64 位)以上操作系統(tǒng)且安裝 Revit 2014 以上版本軟件,3 種創(chuàng)建方式的效率和適用范圍對比如表1 所示。
表1 扶壁放置插件使用說明及效率和適用范圍對比表
扶壁放置插件可明顯提高扶壁模型創(chuàng)建的效率并且具有廣泛的適用范圍,插件的效果展示如圖7所示,利用扶壁放置程序為 19 個懸臂式擋土墻放置扶壁一共只需大約 12 min,無論導(dǎo)線的類型是直線、圓弧或者復(fù)雜類型,無論擋土墻的方向是正向還是反向,扶壁放置程序均可以根據(jù)用戶需求配置扶壁。
圖7 扶壁放置程序效果展示圖
引淮入石泵站工程房山翻水站工程曾采用扶壁放置插件完成部分擋土墻設(shè)計,設(shè)計結(jié)果滿足施工圖設(shè)計要求,該插件的通用性比較強(qiáng),適用于不同類型的擋土墻,如懸臂式或空箱式擋土墻,正向或反向擋土墻,異型或常規(guī)導(dǎo)線擋土墻,只需選擇導(dǎo)線和兩側(cè)邊緣線并輸入界面參數(shù)即可快速有效地完成扶壁放置,且扶壁放置程序模擬手動放置扶壁過程并將底層算法封裝,用戶使用觀感簡易方便,不會覺得操作復(fù)雜難懂,可明顯提高用戶使用的積極性。但是使用扶壁放置程序有一個前提,Revit 當(dāng)前活動文檔中必須已經(jīng)創(chuàng)建或者導(dǎo)入 1 個擋土墻,因此用戶需要對 Revit 軟件有相應(yīng)的知識儲備和操作經(jīng)驗。扶壁放置程序類似于工具包,為擋土墻主體服務(wù),擋土墻主體缺少某個構(gòu)件時,工具包可方便迅速地彌補(bǔ)模型的不足,以此為借鑒經(jīng)驗可根據(jù)需求研發(fā)地連墻、擋浪板、樁基等插件工具包。