徐 超,虞 鴻,任 剛,黑 燦
(浙江省水利水電勘測設計院,浙江 杭州 310002)
隨著BIM技術的快速發(fā)展,建設行業(yè)中設計單位率先引入BIM升級設計方法,以提高設計質量和設計效率;同時建設方和施工方也積極深化BIM應用。目前BIM應用已逐漸成為工程建設中較為重要的一環(huán),基于BIM模型的算量、展示、運維等發(fā)揮積極作用,與此同時實際工程業(yè)務對建模速度和模型質量也有越來越高的要求。
隨著BIM技術在隧道建設中的應用越來越廣泛[1–3],相應的BIM應用和標準研究也逐漸多樣化和系統(tǒng)化。研究重點為有效提高建模效率的參數化建模技術[4–6],但主要集中于交通隧道建設領域。而水工隧洞作為水利工程中一類重要的輸水建筑物,與交通隧道有很大的不同:建設長度遠超交通隧道,斷面結構相對簡單、零部件較少。因此針對水工隧洞的快速精細化建模技術有待深入研究。
在線性工程的BIM設計中,Civil 3D以其便利的建模流程成為主要的設計工具[7-8],然而Civil 3D仍然存在一定的局限[9]。尤其在水工隧洞的建模領域,其仍存在2個較難解決的問題:①Civil 3D的模型以沿軸線分段線性建模為主,所建模型沿軸線不夠光滑(見圖 1);②Civil 3D無法解決主支洞交叉口的復雜建模。
本文通過在實際工程中的摸索,力求完全通過Revit實現水工隧洞的建模,解決Civil 3D的局限性,同時探索使用二次開發(fā)技術實現水工隧洞參數化的建模過程。
圖1 Civil 3D和Revit 所建曲線段水工隧洞模型對比圖
隧洞的軸線通常在Civil 3D或者AutoCAD中創(chuàng)建完成后,將中心線以鏈接形式導入Revit中,如果已設置好項目基點,在定位中選擇“自動——原點到原點”,否則可以選擇“自動——中心到中心”(見圖 2)。
圖2 鏈接CAD時可選參數圖
得到導入后的隧洞軸線在平面上的映射圖。至此,在自定義建模過程中選擇路徑時可通過拾取路徑或沿導入的軸線繪制路徑(見圖3)。
圖3 自定義建模過程中選擇路徑圖
本文主要采用圓拱直墻型設計斷面,為左右對稱結構,并假設頂拱處拱頂和拱端厚度一致。其他左右側墻厚不一致,或者拱頂和拱端厚度不一致的情況可采取類似的生成方法,僅需添加額外參數即可。圖4為Revit中所建的輪廓族圖,主要參數:①距底高,為內側底板中心點距離插入點的高差,主要用于后續(xù)三維融合建模過程中2個斷面有高度差的情形;②底板寬,為內側底板的寬度;③側墻高,為左右側墻內側的高度;④側墻厚,為左右側墻的厚度,本文中為對稱情形,只需1個參數,如果左右側墻厚度不一致,則再添加1個參數,分別左右賦值約束即可;⑤頂拱半徑,為頂拱的內半徑;6頂拱厚。
圖4 圓拱直墻型隧洞斷面Revit輪廓族示意圖 單位:cm
圖4中“頂拱半徑(外)”是一個聯(lián)動參數,由“頂拱半徑”和“頂拱厚”2個參數組成。由此創(chuàng)建的輪廓族可在創(chuàng)建模型選擇輪廓時直接調用。
對于頂拱的圓心點以及頂拱和側墻交點的位置,可以通過公式(1)和(2)計算得出。但是在Revit中,已經內置此類算法,直接通過指定半徑和2個交點的約束,即可得出圓心的位置。
式(1)~(2)中:(x1,y1)為頂拱和左側墻的交點坐標;(x2,y2)為頂拱和右側墻的交點坐標;R為頂拱半徑(cm);(xc,yc)為圓心位置??梢灾?,y1和y2的值是相等的。
在Revit中,通常使用“放樣”或“放樣融合”功能進行三維建模,對于截面不變的模型使用“放樣”功能,對于截面均勻變化則使用“放樣融合”功能。
如果使用真實的路徑,即在空間上首尾點有高度差的路徑,放樣時路徑方向為斷面的法向。對于在連接點兩邊斜率不一致的路徑,建成后的模型見圖5,存在大小一定的縫隙。
圖5 在斜率變化處有縫隙的放樣融合建模圖
針對此類情況,使用空間軸線在水平面上的投影為路徑,使用“放樣融合”功能進行建模,起始和終止的斷面采用不同的高程,以此保證斷面法向的一致性(見圖6)。此時,對于插入點在斷面不同位置的情形,可以使用距底高參數設置斷面的高度,從而實現起始和終止斷面的高度差。
根據圖 6中所示的建模方案,使用放樣融合對圖 5中空間傾斜的水工隧洞段重新建模(見圖7),則可以得到與水平段緊密結合無縫隙的傾斜段模型。
圖6 空間傾斜路徑下放樣融合建模方案圖
圖7 無縫隙的斜率變化處三維建模圖
使用放樣融合建立三維水工隧洞模型的方法,使整體流程能夠通過二次開發(fā)自動運行,無需人工逐步操作。
Revit的二次開發(fā)通常使用Dynamo或者C#語言[10],據王維軒[11]研究,“Plugin+Revit”模式,即使用C#的開發(fā)模式,更適用于含有系統(tǒng)性、普遍性功能的插件。
本文使用Revit API中的IExternal Applications[12]類組織插件結構,基于WPF開發(fā)UI界面,使用INI文件存儲項目控制信息,采用便攜的SQLite數據庫存儲結構化數據。程序內部建模流程見圖8。
圖8 參數化自動建模插件運行流程圖
根據實際使用時的交互需要,開發(fā)各種數據導入和參數輸入界面,其中隧洞斷面參數的輸入界面見圖9。圖9中最后一個參數有2種選擇:第一種是選中“半徑”,輸入半徑R,計算方法同第3節(jié)中所述一致;第二種則是不選“半徑”,輸入洞高H4,此種情況下,則需要利用3點生成圓的算法,見公式(3)~(11),轉換為相應的半徑生成斷面。
式(3)~(11)中:(x1,y1)和(x2,y2)為頂拱和左右側墻交點處的坐標;(x3,y3)為頂拱的拱頂處的坐標;(xc,yc)為圓心坐標;R為最后得到的半徑(cm);a,b,c,d,e,f為中間變量。
圖9 隧洞斷面參數輸入界面圖
主支洞交叉口平面布置示意見圖10。在Civil 3D中,無法生成圖10所示的主支洞交叉口。在Revit中,通常做法是使用AutoCAD設計模型,導入Revit中。
圖10 主支洞交叉口平面布置示意圖
經過探索可知,對于對稱結構,如圖10中所示垂直相交的情形,可以分解為4類區(qū)域(見圖11),每個區(qū)域分別采用不同的方案進行參數化建模設計(見圖12):區(qū)域I采用參數化斷面進行放樣得到常規(guī)模型族,參數化方案參照前述隧洞建模方案;區(qū)域II和區(qū)域IV含過渡圓弧段,采用自適應族建模,此處可以手動建模,也可以使用自定義斷面過渡參數,采用Dynamo或者C#開發(fā)程序完成參數化建模;區(qū)域III屬于交匯段,可使用常規(guī)模型進行布爾運算得到。將此4個區(qū)域獨立建模后可合成1個完整的主支洞交叉口模型(見圖13)。
圖11 主支洞交叉口區(qū)域分解示意圖
圖12 主支洞交叉口分解建模方案圖
圖13 主支洞交叉口三維模型圖
本節(jié)中示例為對稱結構,因此在區(qū)域分解上以一半分解,然后鏡像模型合成即可。對于非垂直相交(非對稱)的主支洞交叉口,以同樣的原理進行區(qū)域分解,然后針對各個區(qū)域使用自適應族進行建模,最后將所有模型合成為整體模型。
本文通過基于Revit對水工隧洞三維建模過程的研究探索,總結建模過程需要注意的關鍵點,同時探索基于C#二次開發(fā)的自動參數化建模方式。并且可以得知:
(1)對于水工隧洞,受限于Civil 3D的局限性,無法直接通過Civil 3D完整生成光滑模型,但使用Revit,在不借助其他建模工具的情況下,可以完整地建立水工隧洞模型。
(2)使用手動建模在Revit中構建水工隧洞模型,即使借助參數化族,整體上重復工作量比較大,得益于其二次開發(fā)接口,可以將重復的操作內嵌至插件中,完成參數化自動建模。