劉祾頠,彭先寶,張應波
(中鐵第四勘察設計院集團有限公司,湖北 武漢 430063)
2002年美國AutoDesk公司發布了BIM(Building Information Modeling)白皮書,將BIM作為其主要的戰略方向,率先啟動了BIM工程化應用進程[1-2]。此后BIM在全球范圍內得到了業界的廣泛認可,并迅速在行業內開始大規模應用[3-6]。BIM可以實現項目全生命周期的信息集成,將項目各個階段有效銜接起來,對提升效率、節省資源和降低成本作用明顯[7]。
軌道BIM設計是鐵路BIM設計的重要組成部分,當前軌道BIM建模主要依靠設計人員利用BIM軟件(如Revit、Open Rail Designer等)手工完成,過程中需頻繁進行拾取、移動、旋轉、拉伸、放樣、融合等操作[8],機械重復性工作多,影響設計效率。Dynamo是一個基于Revit的可視化編程平臺,滿足個性化需求,實現批量建模和自動化建模,從而提升BIM設計效率。Dynamo只需少量編程就可以快速實現用戶的個性化需求,上市后便得到業界的普遍關注[9-12]。針對軌道BIM設計特點,探索基于Dynamo的軌道建模的原理與方法。
Dynamo是一款基于Revit的參數化設計輔助工具,除了幾何建模外,Dynamo還可以高效處理建筑信息模型中的信息,與Revit配合使用,可以大大提高BIM建模效率。Dynamo采用“所見即所得”的編程模式,傳統編程的代碼塊在Dynamo中由可視化節點代替。節點是Dynamo程序的基本組成單元,它可以進行數據處理,完成某項功能。用戶只需要像搭積木一樣按照自己的需求將節點拖拽到編程窗口,并用流程線將節點連接起來,就可以實現特定功能。
Dynamo節點由輸入接口和輸出接口兩部分組成(見圖1),通過輸入接口指定要處理的數據,通過輸出接口獲取處理結果。Dynamo內置許多常用的節點形成節點庫,如構建點、構建曲線、構建面、拉伸操作、放樣操作、文件讀寫等。除此之外,Dynamo還允許用戶通過Python編寫自定義節點并加入到現有節點庫,讓用戶實現一些特殊需求。

圖1 Dynamo節點
鐵路有砟軌道模型由鋼軌、軌枕及扣件、道床等3個部分構成。鋼軌主要有50、60、75 kg/m等型號,每種型號的鋼軌其斷面形狀和技術指標均有所差別。軌枕主要有Ⅰ類木枕、Ⅱ類木枕、Ⅰ型混凝土枕、Ⅱ型混凝土枕和Ⅲ型混凝土枕等類型,每種類型的軌枕尺寸均不同。道床的形狀則與線路等級、速度、路基等因素相關,其幾何特征主要由頂面寬度、厚度、邊坡坡度等參數決定。
利用Dynamo進行有砟軌道BIM設計的流程如下:
(1)基礎數據準備。從線路設計軟件導出線路中線坐標,利用Revit建立鋼軌斷面輪廓族、軌枕族、扣件族。
(2)構建線路中線。在Dynamo中讀取線路中線坐標并建立線路中線。
(3)構建鋼軌模型。利用Dynamo對鋼軌斷面進行放樣構建鋼軌模型。
(4)放置軌枕及扣件。利用Dynamo將軌枕族放置到線路指定位置。
(5)構建道床模型。根據道床參數,分段建立道床模型并放置到線路指定位置。
(6)創建屬性并賦值。根據需要為模型定義特征屬性并輸入屬性信息。
(7)模型裝配與集成。
由于Revit本身不具備緩和曲線表達能力,在Revit中構建線路曲線時,主要采用以直代曲來實現,即將曲線劃分為若干較短的直線,將這些直線首尾相連構成曲線。首先需要借助二維CAD,將線路中線按固定點距將線路坐標導出到Excel。借助Dynamo中的Data.ImportExcel節點,可以快速地將Excel中的數據導入到Dynamo中。
當模型坐標的數值較大時,Revit模型會發生嚴重的變形,Revit給出的方案是設定項目基點,通過使用相對坐標使坐標值變小。一般項目基點會設置在項目中心位置,建模時使用的坐標都是基于基點的相對坐標。因此,構建線路曲線時需要對讀入的坐標值進行處理(減去項目基點),讓坐標變成較小的相對坐標。用讀取的坐標創建點,并將點放到樣條曲線中,這樣就構建完成了線路曲線,此后的建模都需要利用該曲線進行相關計算。
建模中無論是輪廓放樣,還是放置族實例,都涉及曲線某點處方向的計算。以鋼軌建模為例,鋼軌建模采用的是利用鋼軌斷面進行分段放樣的方法,即將鋼軌斷面輪廓沿線放置,然后將前后輪廓連接起來形成三維實體。斷面輪廓的放置要求與線路中線垂直,否則放樣出來的模型會出現變形,這需要計算放置點處線路的平面方位角和豎向傾角。Dynamo中的Curve.Coordinate System At Segment Length節點可以用于計算線路上某點處的局部坐標系統,該坐標系統的X軸指向線路法向,Y軸指向線路切向,Z軸符合右手定則。斷面放置后與線路中線垂直,也就是要與局部坐標系統的Y軸垂直。假設斷面輪廓族建立在XZ平面上,可按以下步驟對斷面進行旋轉。
(1)獲取局部坐標系X軸向量XVector,將XVector的Z值設置為0,使X軸向量變為水平面的投影向量。
(2)利用Math.Atan2節點計算世界坐標系的X軸與局部坐標系X軸水平投影的角度XAngle。
(3)利用Geometry.Rotate節點將斷面繞世界坐標系的Z軸旋轉XAngle,此時斷面與線路水平投影垂直。
(4)獲取局部坐標系Y軸向量YVector,將YVector的Z值設置為0,使Y軸向量變為水平面的投影向量。
(5)利用Math.Atan2節點計算世界坐標系的Y軸與局部坐標系Y軸水平投影的角度YAngle。
(6)利用Geometry.Rotate節點繞局部坐標系X軸水平投影旋轉YAngle,此時斷面與線路中線垂直,至此旋轉完成。
鋼軌建模時首先需要將事先建立的鋼軌斷面族加載到Revit項目中,然后利用Curve.PointAtSegment?Length節點計算斷面放置位置,然后利用Dynamo的FamilyInstance.ByPoint節點讀入斷面,并根據3.2節所述方法調整斷面方向,最后將斷面移動到線路指定點處。完成斷面放置后即可利用Solid.BySweep節點來創建鋼軌實體,創建的實體此時還只是處于內存中,需要借助Spring.FamilyInstance.ByGeometry將創建的鋼軌實體放入到Revit文件中(見圖2)。

圖2 將鋼軌模型放入Revit
軌枕建模與鋼軌建模類似,只需將事先建立的軌枕實體族放置到線路處指定點并調整方向角度即可,由于放置的軌枕數量較多,建模所需要的時間會比軌道建模略長。鋼軌及軌枕建模效果見圖3。

圖3 鋼軌及軌枕建模效果
由于道床尺寸是根據線路特征確定,采用參數化建模方法來創建道床模型。對于道床來說,主要的參數有頂寬、堆高、邊坡坡度、厚度等。為了能精確的控制道床位置,還需要軌道高度、軌道墊板厚度、軌枕軌下厚度、軌枕埋入深度等參數,道床頂面高程Zs由下式確定:

式中:Zr為軌頂標高,可從線路中線獲取;Hr為鋼軌高度;Hc為墊板厚度;Hsr為軌枕軌下厚度;Hsd為軌枕埋入道砟的深度。
根據頂寬、堆高、邊坡坡度、厚度等參數,利用Dynamo創建道床輪廓,并進行拉伸以創建道床實體族,并利用軌枕建模的思路將建立的道床實體族放置到指定位置。道床實體族構建效果見圖4。

圖4 道床實體族構建效果
由于BIM模型的幾何特征較為精細,使得BIM建模工具對計算機硬件資源的消耗較大,過多的硬件消耗會極大地影響運行效率。盡量減少模型文件的大小,建模時通常將鋼軌、軌枕及扣件、道床模型分別輸出到不同的rvt文件,必要時還需要對線路進行分段處理。待所有構配件完成后,再進行模型統一裝配。Revit中提供了鏈接功能,可以將多個rvt文件鏈接到一起,從而將不同的模型組裝起來,實現模型的集成(見圖5)。

圖5 Revit集成效果
Revit對于大體量模型的承載能力較弱,而項目中的軌道有時會達到數十甚至上百公里,集成后Revit會出現嚴重卡頓。另外,項目集成通常還涉及鐵路工程的其他專業,有時還需要加入地理信息模型,此時對集成軟件的要求更高,AutoDesk給出的大體量模型集成方案是采用Navisworks軟件(見圖6)。

圖6 Navisworks集成效果
集成的另一種方案是采用GIS軟件,相對而言,GIS軟件對大體量數據的承載能力要比BIM軟件強很多,因此對于全專業的BIM集成通常會采用GIS軟件來完成,除專業的BIM設計模型外,還加入了傾斜攝影模型,集成后場景運行流暢,效果良好(見圖7)。

圖7 GIS集成效果
BIM建模過程中有許多機械重復性的工作,手工完成效率較低,二次開發代價大,Dynamo可視化編程為完成此類工作提供了一條良好途徑。不需要大量煩瑣的程序開發,就可以讓計算機來完成一系列建模任務。基于Dynamo可視化編程技術進行BIM設計,可以大大地提高建模速度,同時可以通過程序精準控制模型的位置和方向,建模精度高。
但Dynamo在解決復雜問題方面的能力有限,一方面,內置節點不夠豐富,對于一些問題需要自己編寫自定義節點,此過程較為耗時,另一方面,當Dynamo程序過于復雜后,程序的運行效率顯著下降,特別是涉及復雜的幾何布爾運算時,此問題更加突出。因此,對于復雜的建模工作,目前可行的辦法還是有針對性地進行二次開發。
