汪 勇,付 豪,曹珂瑞,尹鵬程
(重慶市設計院有限公司,重慶市 400015)
兩江新區(qū)到長壽區(qū)快速通道位于重慶市兩江新區(qū)東側和長壽區(qū)西部,南起于三環(huán)高速,順接快速路六縱線,北沿銅鑼山東側,經石船、統景,跨越御臨河,穿越明月山至長壽晏家后,北止于菩提山北側渝巫路,接順現狀菩提北路。
項目全長23.61 km,標準路幅寬度29 m,包括特長隧道1 座(晏家隧道約4.46 km),中隧道1 座(龍門橋隧道),跨御臨河橋梁1 座,主線橋17 座,互通立交4 座(雙橋立交、統景立交、河泉立交、齊心大道立交),建設投資約79.73 億元。該項目總體布置如圖1 所示。
圖1 兩江新區(qū)到長壽區(qū)快速通道項目區(qū)位圖
項目是連接重慶市兩江新區(qū)與長壽區(qū)的重要通道,作為重慶市的重點工程,項目投資金額高(79.73億)、設計工期緊、工程技術復雜、安全風險高。
項目體量大,衍生出一系列難題,如地形面積大,處理難;路線眾多,調整難;結構形式復雜,構建難。常規(guī)BIM 設計思路已不能很好的應對本項目。故項目組對BIM 設計工具進行定向二次開發(fā)以解決本項目中遇到的實際問題。
對于場地設計,本項目原始勘察資料包含較多異常的測量點與等高線。為快速清除勘察資料中的異常數據,項目組通過自研算法并對Civil3D 進行二次開發(fā),實現自動識別并刪除出差點,實現超大范圍場地模型的創(chuàng)建。
路線設計為道路設計的核心。路線中儲存的信息是本項目最為基礎的設計要素之一,也是多專業(yè)協同的核心數據。本項目受規(guī)劃方案及用地紅線影響,路線數量眾多,路線設計調整頻繁。為應對此難題,項目組自研Civil3D 輔助工具,實現對EICAD 路線資料的自動識別,并將其轉化為Civil3D 路線對象。本方法的應用,不僅解決了項目設計工期短,路線設計變更頻繁等問題,還將傳統二維設計形式與三維設計模式的銜接,為BIM 正向設計的落地,打下堅實基礎。
受地形起伏變化影響,本項目結構數量眾多,結構形式復雜。使用傳統設計思路推進BIM 設計時,出現諸如上部結構翼緣扭曲,隧道襯砌漏面等情況。項目組根據Revit 特性,以及實際需要,通過二次開發(fā),研發(fā)特定Revit 輔助工具,較為理想的解決了上述問題。除此之外,該工具的運用不僅大幅提升了結構模型的創(chuàng)建效率與準確性,還極大縮短了設計周期,提升了設計成果的質量。
項目組通過對Civil3D 和Revit 等傳統BIM 設計軟件進行二次開發(fā),大幅提升了BIM 模型的創(chuàng)建效率與準確性,為順利完成江長項目,推動BIM 技術在大型市政工程中的應用,打下了堅實基礎。
受測量誤差影響,本項目原始地勘資料中包含大量異常數據,需要對地勘數據進行處理才能建立正確的數字地形(如圖2)。
圖2 地形圖中的錯誤等高線
2.1.1 傳統Civil3D 場地設計流程及存在的不足
傳統的Civil3D 場地設計流程,通過識別關鍵性地形要素,如地形點、等高線等創(chuàng)建三維地形曲面(見圖3)。如曲面出現明顯錯誤,用戶根據等高線變化趨勢,手動刪除異常數據進行修正。
圖3 地形等高線與離散點
以上建模流程對本項目存在以下不足:
(1)人力成本高
江長項目場地范圍長度約23.61 km。原始場地設計資料中包含1 748 326 個測量點,其中包括眾多異常點。在數十平方千米的場地范圍內通過人工識別所有異常點,會耗費相當大的人力成本。
(2)時間成本高
對于Civil3D 的“編輯曲面”功能,由于人工無法一次找到所有出差點,需要多次進行修改,每次對曲面的地形點進行修改后,Civil3D 均會重新計算等高線并生成地形,這一計算過程會耗費大量時間成本。
(3)效果難以預測
對于人工識別的方式刪除出差點,難以避免遺漏一些不明顯的出錯測量點,也很容易誤刪除正確的地形點。Civil3D 對三維模型的展示能力較差,一般需要將Civil3D 設計成果導入到Infraworks 中設計人員才能看到設計成果。設計人員對刪除出差點的效果難以預測,往往需要多次修改并導入,才能得到滿足要求的數字地形。
2.1.2 通過自研插件快速創(chuàng)建數字地形
解決2.1.1 中問題的關鍵在于一次性找到所有的錯誤地形點,避免Civil3D 的多次生成。為解決這個問題,項目組在程序中引入遺傳算法的思想。
遺傳起源于對生物系統所進行的計算機模擬研究。它是模仿自然界生物進化機制發(fā)展起來的隨機全局搜索和優(yōu)化方法,借鑒了達爾文的進化論和孟德爾的遺傳學說。
可以這樣想象,將地形當作一個多維曲面,將每個地形點當作這個多維曲面中的山峰,這個多維曲面里面有數不清的“山峰”,對于本問題,遺傳算法的任務就是盡量爬到最陡峭的“山峰”,而不是陷落在一些較為平坦的“山峰”,具體步驟如圖4。
圖4 處理出差點技術路線圖
(1)將地形點的二維坐標進行浮點數編碼。為避免遺傳算法在過大的范圍內搜索,提高算法效率和精度,將曲面按設定的大小劃分多個區(qū)域,每個區(qū)域單獨編碼。
(2)在每個編碼范圍內隨機選取一些點,作為初始種群。
(3)根據點的編碼,確定點在曲面上位置,將點在此處的斜率作為個體的適應度。斜率的值越大,適應度越高。與傳統遺傳算法不同的是,在每輪迭代過程中,如果個體的適應度大于預設值,則記錄該個體,并在循環(huán)結束后將其作為出差點并刪除。
(4)采用輪盤賭選擇(Roulette Wheel Selection),確定用來遺傳的個體。根據個體的適應度,計算選擇概率。
(5)將選擇的個體作為父代,通過交叉形成子代,開始循環(huán)直至找到滿意的解,對于本問題,可以設置斜率的值作為停止條件。
本項目原始勘察資料中包含1 748 326 個地形點,經處理后,共清理155 864 個出錯測量點,項目組順利得到滿足設計要求的地形數據(見圖5)。該輔助工具的研發(fā)與應用,為項目順利推進提供了有力保障。
圖5 兩江新區(qū)到長壽區(qū)快速通道項目數字地形
截至本文撰稿時,本項目為重慶市最長市政路,設計速度80 km/h,雙向6 車道。項目沿線周邊水系發(fā)達,建筑、軌道、鐵路眾多,交通組織復雜。設計要求根據沿線地塊功能、性質,結合地形地貌,合理進行路線平、縱設計,為地塊整治和開發(fā)利用創(chuàng)造條件,提高土地價值。故本項目路線數量眾多,線路設計調整較為頻繁。
2.2.1 傳統Civil3D 路線建模流程及存在的不足
Civil3D 可通過“路線創(chuàng)建工具”,通過交點法和積木法進行路線設計,也可通過轉換功能將選取的圖元轉換為路線對象。
但是Civil3D 軟件本地化程度較低,使用Civil3D進行路線設計時存在以下不足:一是軟件層面缺乏對國內最新規(guī)范的支持;二是自帶的路線圖元類型、路線樣式和路線標簽樣式與國內設計人員使用習慣差異較大。三是相比傳統的二維設計軟件,缺乏一些常用的設計工具,特別是使用Civil3D 進行出圖時,需要進行深度定制。
2.2.2 通過自研插件快速創(chuàng)建三維路線對象
路線設計中的包含信息是最為基礎的設計要素,也是多專業(yè)協同的核心數據[1]。為解決2.2.1 中所提到的不足,保持傳統設計人員設計習慣基本不變,推動BIM 正向設計在行業(yè)內落地,項目組采用EICAD 進行路線平曲線設計,開發(fā)Civil3D 插件解析EICAD 平曲線設計成果,并自動在Civil3D 中創(chuàng)建路線三維對象,實現了二維設計數據到三維數據的無縫傳遞。技術路線如圖6。
圖6 創(chuàng)建Civil3D 線形技術路線圖
EICAD 是一款基于AutoCAD 的交互式道路與立交設計軟件,在市政工程路線設計中應用較為廣泛[2]。為實現設計數據的流轉,本文基于Civil3D 的路線功能進行二次開發(fā),通過解析EICAD 數據生成可供Civil3D 讀取的數據,利用Civil3D 的創(chuàng)建路線API 一鍵創(chuàng)建路線模型,解決了二維路線平曲線設計數據到三維路線平曲線設計數據的無縫精確轉換問題,實現了在Civil3D 中快速建立路線對象的功能。開發(fā)環(huán)境選擇C#.Net4.5.2、Python 與C3D 2018 SDK。
使用Civil3D API 創(chuàng)建路線對象時,需要通過平曲線計算計算路線圖元,具體計算方法可參考文獻[4],使用的API 見表1。
表1 Civil3D 創(chuàng)建路線對象AP I
基于Python3.8 和科學計算庫Numpy,Sympy 編寫上述計算程序,通過線程通訊傳遞參數與計算結果,在主程序中創(chuàng)建直線與圓曲線圖元。
創(chuàng)建直線與圓曲線圖元后,根據圖元關系,即可創(chuàng)建拋物線圖元,之后設定路線名稱、樣式、樁號、圖層、標簽集樣式等,可實現通過程序自主在Civil3D 中創(chuàng)建路線對象。
本項目通過對Civil3D 進行二次開發(fā),實現了EICAD 設計數據到Civil3D 設計數據的無縫精確流轉,大幅提升BIM 設計的精度和效率。經綜合評估,此項技術在本次項目共節(jié)省工期5 d,為保證工程順利完工打下了堅實基礎。
傳統的BIM 橋梁設計流程:通過二維圖紙,創(chuàng)建上部結構輪廓族,再將輪廓族沿橋梁中心線進行放樣融合生成橋梁上部結構,隧道同理。
在江長項目中,傳統設計流程存在以下問題:一是結構數量多,設計時間成本大幅增加;二是結構類型復雜,存在大量異形結構,傳統BIM 設計方式無法滿足業(yè)主要求。因此項目組通過對Revit 進行二次開發(fā),以提高設計效率、節(jié)省時間成本、解決異形結構構建等問題。
本項目結構形式復雜,數量眾多。項目包含大型橋梁18 座,互通立交3 座,穿山隧道3 條,其中晏家隧道全長4.45 km。面對如此大體量、短工期的情況,運用傳統BIM 設計模式已無法很好的完成此次設計任務。因此項目組考慮基于Revit 研發(fā)專用市政輔助工具,以提高設計效率,提升模型精度。該工具還成功實現結構模型自動生成CAD 圖紙等功能。
開發(fā)環(huán)境為C#.NET Framework4.5.2、Revit 2018 SDK。
Revit 為Autodesk 公司為建筑、結構BIM 設計研發(fā)的綜合設計工具,在土建BIM 設計領域被廣泛應用。Revit 有很強的拓展性,為開發(fā)者提供了大量API(接口),第三方開發(fā)者能夠根據自己的需求調用這些API,實現將自己開發(fā)的功能集成到Revit 上,使之成為軟件中的一個模塊。
本章將闡述,通過對Revit 進行二次開發(fā),實現將項目組需求與Revit 相結合,實現對原有BIM 結構設計思路的優(yōu)化,實現參數化快速建模、提高BIM設計效率,提升BIM 模型的質量,同時擴展Revit 軟件功能,使其更加符合市政工程BIM 設計的使用需求,促進BIM 正向設計的發(fā)展。
3.3.1 變截面上部結構
本項目橋梁數量多且結構復雜,以主線14 號橋為例,主線14 號橋上跨匝道B 線、晏家聯絡道、現狀河道及還建道路,綜合考慮橋梁跨越以及景觀效果,同時考慮到橋梁的經濟性布置,橋梁分為左右兩幅橋設置,左幅橋梁第三、四、五聯,右幅橋梁第一、二、三、七聯上部結構采用預制預應力混凝土T 梁,左幅橋梁第一、二聯,右幅橋梁第四、五、六聯上部結構采用現澆預應力混凝土連續(xù)箱梁的結構形式,單箱多室等截面直腹式箱梁。該橋梁結構對模型精度要求較高,傳統BIM 設計精度有限,且模型不穩(wěn)定,故不能滿足本項目要求。為提升BIM 模型的精度,項目組采用二次開發(fā)的方式來創(chuàng)建橋梁BIM 模型。
對于變截面上部結構,傳統建模方式通常是創(chuàng)建一個參數化輪廓族,并利用Dynamo 驅動參數化輪廓族進行放樣,生成完整上部結構。該方法的問題在于生成的模型構造不穩(wěn)定,由于參數化的原因,箱梁翼緣處極易出現變形的情況,如圖7 所示。
圖7 變截面結構異常
為解決此問題,項目組對Revit 進行二次開發(fā),調用其內部高權限API 創(chuàng)建模型。思路如下:
(1)中心線解析
將道路中心線導入Revit 的方式通常有兩種[5]:
方法一是通過Civil3D 數據報告功能,將道路中心點報告數據進行相對坐標處理,把處理好的點報告數據導入Excel 表格,利用點數據生成空間曲線;
方法二是直接將Civil3D 中的道路中心線轉化為帶有高程的空間曲線,通過API 中的Autodesk.Revit.UI.Selection 手動拾取道路中心線。
本節(jié)采用第一種方式進行展示。利用NPOI 程序框架解析目標Excel 并獲取相應數據,再利用System.OI.FileStream 和NPOI 框架對Excel 表格進行處理,獲取道路中心點的空間坐標信息,丟棄無效數據。利用ReferencePointArray()方法將每一組三維坐標轉化為自適應點,然后通過NewCurveByPoints()方法將各自適應點連接成空間三圍曲線。其中道路中心點數據如圖8 所示。
圖8 道路中心點數據
(2)閉合曲線組成放樣輪廓
生成橋梁上部結構需要選擇橋梁橫斷面輪廓,在中心線的基礎上進行空間放樣融合的操作,如圖9所示。輪廓通常選擇在Revit 中使用公制常規(guī)模型來繪制。生成上部結構的技術路線如下:
圖9 上部結構二次開技術路線圖
a.根據3.2.1 中(1)的方法獲得橋梁中心線,利用API 中Plane.CreateByNormalAndOrigin 創(chuàng)建并獲取空間曲線上關鍵控制點的法向平面;
b.使用公制常規(guī)模型繪制上部結構輪廓族,外輪廓和箱室輪廓分兩次創(chuàng)建;并將輪廓族旋轉放置于法向平面上,如圖10 所示;
圖10 輪廓示意圖
c.找到閉合輪廓并對其進行分組。通過GetInstanceGeometry()方法將已經繪制好的輪廓族轉化為GeometryElement,遍歷其中每一項為直線Line 的元素,將其轉化為模型線ModelCurve 對象,最后通過ReferenceArray 將閉合輪廓成組;
d.通過LookupParameter().Set()將參數化族與設計參數相結合,并附上相應參數值;
e.利用ReferenceArrayArray()生成放樣融合可用的閉合輪廓,再通過NewLoftForm(bool,ReferenceArrayArray)創(chuàng)建上部結構,如圖11 所示。
圖11 上部結構模型示意圖
3.3.2 橋臺橋墩的生成和放置
根據橋臺與橋墩結構類型重復性大的特點,項目組考慮用參數化控制樁的長度、橋臺寬度等,通過對族參數的設置和傳值,實現下部結構的參數化生成,提高模型生成效率。
下部結構的放置主要分為放置點位置和旋轉角度兩個部分,精確放置點位可由Civil3D 導出數據后,Revit 直接讀取,旋轉角度部分,對于橋臺和橋墩的二次開發(fā)應用過程如下:
a.旋轉角度可等價于空間曲線上某點的切向量方向和下部結構初始方向的水平夾角,因此考慮借助向量叉積的運算來得出所需的旋轉角度。
對于向量a 和向量b:
a 和b 的叉積可寫作:
其集合意義為在三維幾何中,向量a 和向量b的叉積結果是一個向量,該向量垂直于向量a 和向量b所構成的平面。
因此為計算下部結構旋轉角度,首先可先利用Hermite Spline.Tangents []和Curve.Get Points().get_Item ().Position 得到曲線上點的切線和點坐標,通過Plane.CreateByNormalAndOrigin 生成曲線上各點的法向平面;接下來用Plane.CreateByOriginAnd-Basis 創(chuàng)建一個新平面垂直于水平面,所需的參數有三個:平面原點——與法向平面原點相同;BasisX——法向平面的法向量與(0,0,1)的叉積所得向量;BasisY——(0,0,1)向量。
由此可得到一個新的豎向平面,該平面的法向量方向與下部結構原始方向的夾角即為所需旋轉角度。
b.將樁號對應的橋臺和橋墩族載入到Revit 項目文件,并把族名稱及樁號導入Excel 表格,使用NPOI 框架對表格進行讀取操作。
在文檔中創(chuàng)建FamilyInstance 將下部結構放置在指定位置,然后在各點位處創(chuàng)建一條方向為(0,0,1)旋轉參照直線,最后對已經放置的族使用ElementTransformUtils.RotateElement 按水平角度進行旋轉,效果如圖12 所示。
圖12 橋臺和橋墩模型示意圖
3.4.1 隧道主體
本項目共有三個隧道,分別是龍門橋隧道、經開區(qū)隧道和晏家隧道。其中晏家隧道為特長隧道,長約4.46 km,襯砌類型多達二十余種,結構復雜,模型設計有一定難度。
隧道主體設計易遇到的問題與橋梁設計相似,主要表現為隧道主體變形、隧道漏面、剪切異常等,如圖13 所示。
圖13 隧道主體異常情況
圖14 隧道二次開發(fā)技術路線圖
因此,項目組繼續(xù)對Revit 進行二次開發(fā),調用其API 創(chuàng)建隧道模型。隧道模型設計過程與橋梁類似,首先通過C3D 解析道路中心線,然后通過閉合曲線組成隧道襯砌輪廓,最后在中心線上對輪廓進行放樣融合操作,此處不再贅述。其技術路線圖如下。
3.4.2 隧道橫通道
為保證模型的真實性和精準度,項目組利用二次開發(fā)進行了隧道橫通道的設計工作。
(1)橫通道主體
以左線樁號為基準,截取中心線上橫通道所在的點位,利用Line.CreateBound()方法創(chuàng)建一條直線,直線與該點在曲線上的法向量相互垂直。再通過NewLoftForm()方法將橫通道輪廓在該直線上進行放樣操作,得到橫通道主體。
(2)橫通道剪切
重新創(chuàng)建一個隧道主體模型,并將NewLoftForm(bool,ReferenceArrayArray)方法中的bool 條件設為false,即可得到一個空心隧道實體。再將空心隧道主體與橫通道進行剪切,便生成出一個與隧道主體貼合的橫通道模型。最后利用同樣的方式實現隧道主體與橫通道的剪切,就可以得到一個既保證了模型真實性、又達到設計精度的橫通道模型(見圖15)。
圖15 隧道主體與橫通道模型結構
高精度BIM 模型的創(chuàng)建,為后期模型在工程中的應用提供了必要條件。
3.5.1 工程量統計
利用LookupParameter 節(jié)點,查找構件的體積參數,并將參數按需展示出來,按此思路進行二次開發(fā),即可形成專門的工程量查詢工具,效果如圖16、17 所示。
圖16 箱梁鋼筋示意圖
圖17 箱梁鋼筋示意圖
3.5.2 為構件添加模型屬性及編碼
本項目結構數量多,為便于BIM 設計成果在可視化平臺中進一步應用,項目組需為構件添加模型屬性和統一編碼,但原生的Revit 并未具備上述功能。此處考慮對軟件進行定向開發(fā),利用Family-Manager.AddParameter()方法將編碼寫入構件的自定義屬性,實現對構件的編碼功能。
添加模型屬性時將屬性名稱和屬性值儲存在Excel 表格中,利用Epplus 框架解析并讀取屬性表。將AddParameter 方法中的參數組屬性設為PG_ADSK_MODEL_PROPERTIES(模型屬性),用以創(chuàng)建屬性分組,如圖18 所示。
圖18 為構件添加模型屬性
為構件添加編碼時,利用Epplus 讀取編碼表。由于編碼數量巨大,因此還需創(chuàng)建編碼過濾器來篩選出所需的編碼類型,如圖19。
圖19 編碼過濾器
選擇對應編碼后利用AddParameter()方法對構件進行循環(huán)編碼并生成模型屬性,如圖20 所示。
圖20 構件模型屬性
對于場地設計,通過自建數學模型,自主開發(fā)插件識別并刪除出差點,提升了大型場地模型的創(chuàng)建精度與效率。
對于路線設計,本項目路線調整頻繁,為滿足設計要求,項目組實現對EICAD 路線數據的解析,將解析后的成果導入Civil3D,驅動其快速生成三維路線對象。該工具的應用,不僅實現了二維路線數據到三維路線對象的無縫轉換,數據的閉環(huán)轉移,還保留了傳統道路設計師的設計習慣,為BIM 道路正向設計提供有力支撐。
對于結構設計,本項目結構形式復雜,數量眾多,BIM 設計和應用都有不小難度。本文抓住問題,深入研究,針對模型異常情況配套開發(fā)了Revit 插件來輔助設計。該插件的應用不僅大幅提高了建模效率,縮短了設計周期,還有效提升了模型的精度。該插件的運用為二次開發(fā)在市政結構專業(yè)的大膽嘗試,為BIM 結構正向設計探索了新的方向。
本文對Civil3D 與Revit 進行二次開發(fā),較好的解決了在江長項目BIM 設計中遇到的各類問題,相比傳統設計方式,共節(jié)省工期22 d,為保障項目順利完成,推動BIM 技術在山地城市大型市政工程中的應用打下堅實基礎。