劉祾頠,彭先寶,張應(yīng)波
(中鐵第四勘察設(shè)計院集團有限公司,湖北 武漢 430063)
2002年美國AutoDesk公司發(fā)布了BIM(Building Information Modeling)白皮書,將BIM作為其主要的戰(zhàn)略方向,率先啟動了BIM工程化應(yīng)用進程[1-2]。此后BIM在全球范圍內(nèi)得到了業(yè)界的廣泛認可,并迅速在行業(yè)內(nèi)開始大規(guī)模應(yīng)用[3-6]。BIM可以實現(xiàn)項目全生命周期的信息集成,將項目各個階段有效銜接起來,對提升效率、節(jié)省資源和降低成本作用明顯[7]。
軌道BIM設(shè)計是鐵路BIM設(shè)計的重要組成部分,當前軌道BIM建模主要依靠設(shè)計人員利用BIM軟件(如Revit、Open Rail Designer等)手工完成,過程中需頻繁進行拾取、移動、旋轉(zhuǎn)、拉伸、放樣、融合等操作[8],機械重復(fù)性工作多,影響設(shè)計效率。Dynamo是一個基于Revit的可視化編程平臺,滿足個性化需求,實現(xiàn)批量建模和自動化建模,從而提升BIM設(shè)計效率。Dynamo只需少量編程就可以快速實現(xiàn)用戶的個性化需求,上市后便得到業(yè)界的普遍關(guān)注[9-12]。針對軌道BIM設(shè)計特點,探索基于Dynamo的軌道建模的原理與方法。
Dynamo是一款基于Revit的參數(shù)化設(shè)計輔助工具,除了幾何建模外,Dynamo還可以高效處理建筑信息模型中的信息,與Revit配合使用,可以大大提高BIM建模效率。Dynamo采用“所見即所得”的編程模式,傳統(tǒng)編程的代碼塊在Dynamo中由可視化節(jié)點代替。節(jié)點是Dynamo程序的基本組成單元,它可以進行數(shù)據(jù)處理,完成某項功能。用戶只需要像搭積木一樣按照自己的需求將節(jié)點拖拽到編程窗口,并用流程線將節(jié)點連接起來,就可以實現(xiàn)特定功能。
Dynamo節(jié)點由輸入接口和輸出接口兩部分組成(見圖1),通過輸入接口指定要處理的數(shù)據(jù),通過輸出接口獲取處理結(jié)果。Dynamo內(nèi)置許多常用的節(jié)點形成節(jié)點庫,如構(gòu)建點、構(gòu)建曲線、構(gòu)建面、拉伸操作、放樣操作、文件讀寫等。除此之外,Dynamo還允許用戶通過Python編寫自定義節(jié)點并加入到現(xiàn)有節(jié)點庫,讓用戶實現(xiàn)一些特殊需求。
圖1 Dynamo節(jié)點
鐵路有砟軌道模型由鋼軌、軌枕及扣件、道床等3個部分構(gòu)成。鋼軌主要有50、60、75 kg/m等型號,每種型號的鋼軌其斷面形狀和技術(shù)指標均有所差別。軌枕主要有Ⅰ類木枕、Ⅱ類木枕、Ⅰ型混凝土枕、Ⅱ型混凝土枕和Ⅲ型混凝土枕等類型,每種類型的軌枕尺寸均不同。道床的形狀則與線路等級、速度、路基等因素相關(guān),其幾何特征主要由頂面寬度、厚度、邊坡坡度等參數(shù)決定。
利用Dynamo進行有砟軌道BIM設(shè)計的流程如下:
(1)基礎(chǔ)數(shù)據(jù)準備。從線路設(shè)計軟件導(dǎo)出線路中線坐標,利用Revit建立鋼軌斷面輪廓族、軌枕族、扣件族。
(2)構(gòu)建線路中線。在Dynamo中讀取線路中線坐標并建立線路中線。
(3)構(gòu)建鋼軌模型。利用Dynamo對鋼軌斷面進行放樣構(gòu)建鋼軌模型。
(4)放置軌枕及扣件。利用Dynamo將軌枕族放置到線路指定位置。
(5)構(gòu)建道床模型。根據(jù)道床參數(shù),分段建立道床模型并放置到線路指定位置。
(6)創(chuàng)建屬性并賦值。根據(jù)需要為模型定義特征屬性并輸入屬性信息。
(7)模型裝配與集成。
由于Revit本身不具備緩和曲線表達能力,在Revit中構(gòu)建線路曲線時,主要采用以直代曲來實現(xiàn),即將曲線劃分為若干較短的直線,將這些直線首尾相連構(gòu)成曲線。首先需要借助二維CAD,將線路中線按固定點距將線路坐標導(dǎo)出到Excel。借助Dynamo中的Data.ImportExcel節(jié)點,可以快速地將Excel中的數(shù)據(jù)導(dǎo)入到Dynamo中。
當模型坐標的數(shù)值較大時,Revit模型會發(fā)生嚴重的變形,Revit給出的方案是設(shè)定項目基點,通過使用相對坐標使坐標值變小。一般項目基點會設(shè)置在項目中心位置,建模時使用的坐標都是基于基點的相對坐標。因此,構(gòu)建線路曲線時需要對讀入的坐標值進行處理(減去項目基點),讓坐標變成較小的相對坐標。用讀取的坐標創(chuàng)建點,并將點放到樣條曲線中,這樣就構(gòu)建完成了線路曲線,此后的建模都需要利用該曲線進行相關(guān)計算。
建模中無論是輪廓放樣,還是放置族實例,都涉及曲線某點處方向的計算。以鋼軌建模為例,鋼軌建模采用的是利用鋼軌斷面進行分段放樣的方法,即將鋼軌斷面輪廓沿線放置,然后將前后輪廓連接起來形成三維實體。斷面輪廓的放置要求與線路中線垂直,否則放樣出來的模型會出現(xiàn)變形,這需要計算放置點處線路的平面方位角和豎向傾角。Dynamo中的Curve.Coordinate System At Segment Length節(jié)點可以用于計算線路上某點處的局部坐標系統(tǒng),該坐標系統(tǒng)的X軸指向線路法向,Y軸指向線路切向,Z軸符合右手定則。斷面放置后與線路中線垂直,也就是要與局部坐標系統(tǒng)的Y軸垂直。假設(shè)斷面輪廓族建立在XZ平面上,可按以下步驟對斷面進行旋轉(zhuǎn)。
(1)獲取局部坐標系X軸向量XVector,將XVector的Z值設(shè)置為0,使X軸向量變?yōu)樗矫娴耐队跋蛄俊?/p>
(2)利用Math.Atan2節(jié)點計算世界坐標系的X軸與局部坐標系X軸水平投影的角度XAngle。
(3)利用Geometry.Rotate節(jié)點將斷面繞世界坐標系的Z軸旋轉(zhuǎn)XAngle,此時斷面與線路水平投影垂直。
(4)獲取局部坐標系Y軸向量YVector,將YVector的Z值設(shè)置為0,使Y軸向量變?yōu)樗矫娴耐队跋蛄俊?/p>
(5)利用Math.Atan2節(jié)點計算世界坐標系的Y軸與局部坐標系Y軸水平投影的角度YAngle。
(6)利用Geometry.Rotate節(jié)點繞局部坐標系X軸水平投影旋轉(zhuǎn)YAngle,此時斷面與線路中線垂直,至此旋轉(zhuǎn)完成。
鋼軌建模時首先需要將事先建立的鋼軌斷面族加載到Revit項目中,然后利用Curve.PointAtSegment?Length節(jié)點計算斷面放置位置,然后利用Dynamo的FamilyInstance.ByPoint節(jié)點讀入斷面,并根據(jù)3.2節(jié)所述方法調(diào)整斷面方向,最后將斷面移動到線路指定點處。完成斷面放置后即可利用Solid.BySweep節(jié)點來創(chuàng)建鋼軌實體,創(chuàng)建的實體此時還只是處于內(nèi)存中,需要借助Spring.FamilyInstance.ByGeometry將創(chuàng)建的鋼軌實體放入到Revit文件中(見圖2)。
圖2 將鋼軌模型放入Revit
軌枕建模與鋼軌建模類似,只需將事先建立的軌枕實體族放置到線路處指定點并調(diào)整方向角度即可,由于放置的軌枕數(shù)量較多,建模所需要的時間會比軌道建模略長。鋼軌及軌枕建模效果見圖3。
圖3 鋼軌及軌枕建模效果
由于道床尺寸是根據(jù)線路特征確定,采用參數(shù)化建模方法來創(chuàng)建道床模型。對于道床來說,主要的參數(shù)有頂寬、堆高、邊坡坡度、厚度等。為了能精確的控制道床位置,還需要軌道高度、軌道墊板厚度、軌枕軌下厚度、軌枕埋入深度等參數(shù),道床頂面高程Zs由下式確定:
式中:Zr為軌頂標高,可從線路中線獲??;Hr為鋼軌高度;Hc為墊板厚度;Hsr為軌枕軌下厚度;Hsd為軌枕埋入道砟的深度。
根據(jù)頂寬、堆高、邊坡坡度、厚度等參數(shù),利用Dynamo創(chuàng)建道床輪廓,并進行拉伸以創(chuàng)建道床實體族,并利用軌枕建模的思路將建立的道床實體族放置到指定位置。道床實體族構(gòu)建效果見圖4。
圖4 道床實體族構(gòu)建效果
由于BIM模型的幾何特征較為精細,使得BIM建模工具對計算機硬件資源的消耗較大,過多的硬件消耗會極大地影響運行效率。盡量減少模型文件的大小,建模時通常將鋼軌、軌枕及扣件、道床模型分別輸出到不同的rvt文件,必要時還需要對線路進行分段處理。待所有構(gòu)配件完成后,再進行模型統(tǒng)一裝配。Revit中提供了鏈接功能,可以將多個rvt文件鏈接到一起,從而將不同的模型組裝起來,實現(xiàn)模型的集成(見圖5)。
圖5 Revit集成效果
Revit對于大體量模型的承載能力較弱,而項目中的軌道有時會達到數(shù)十甚至上百公里,集成后Revit會出現(xiàn)嚴重卡頓。另外,項目集成通常還涉及鐵路工程的其他專業(yè),有時還需要加入地理信息模型,此時對集成軟件的要求更高,AutoDesk給出的大體量模型集成方案是采用Navisworks軟件(見圖6)。
圖6 Navisworks集成效果
集成的另一種方案是采用GIS軟件,相對而言,GIS軟件對大體量數(shù)據(jù)的承載能力要比BIM軟件強很多,因此對于全專業(yè)的BIM集成通常會采用GIS軟件來完成,除專業(yè)的BIM設(shè)計模型外,還加入了傾斜攝影模型,集成后場景運行流暢,效果良好(見圖7)。
圖7 GIS集成效果
BIM建模過程中有許多機械重復(fù)性的工作,手工完成效率較低,二次開發(fā)代價大,Dynamo可視化編程為完成此類工作提供了一條良好途徑。不需要大量煩瑣的程序開發(fā),就可以讓計算機來完成一系列建模任務(wù)?;贒ynamo可視化編程技術(shù)進行BIM設(shè)計,可以大大地提高建模速度,同時可以通過程序精準控制模型的位置和方向,建模精度高。
但Dynamo在解決復(fù)雜問題方面的能力有限,一方面,內(nèi)置節(jié)點不夠豐富,對于一些問題需要自己編寫自定義節(jié)點,此過程較為耗時,另一方面,當Dynamo程序過于復(fù)雜后,程序的運行效率顯著下降,特別是涉及復(fù)雜的幾何布爾運算時,此問題更加突出。因此,對于復(fù)雜的建模工作,目前可行的辦法還是有針對性地進行二次開發(fā)。