汪晴晴,孔志偉,王 琦,李 超
(山東建筑大學 信息與電氣工程學院, 濟南 250101)
由于Revit 軟件建模功能尚不完善,參照二維CAD 圖紙使用Revit 建模尚處于手工階段,存在大量的重復性工作,因此直接進行正向設計難度大[1]。對于構件種類和數量較多且管徑規格變化復雜的噴淋系統,提高BIM 建模效率是亟須解決的問題。當前,針對Revit 建模效率低下問題,已開發且應用于工程實踐的插件有很多,如橄欖山[2]、鴻業[3]、品茗 BIM[4]等,其主要原理是讀取鏈接至Revit 的二維CAD 圖紙,通過相應的算法自動生成三維BIM 模型,實現快速建模,提高建模效率。
本文將CAD 圖紙鏈接至Revit,通過圖層區分各類圖元,進而基于Teigha.NET,for.dwg 類庫[5]讀取相關圖元矢量信息,識別管徑及管道之間的連接件;通過設置交互界面,由用戶輸入的方式獲得二維圖紙中缺失的三維信息,對從圖紙中提取的管徑與管道的連接關系進行識別;最后通過構件生成實體模型API,自動生成噴淋系統BIM 模型。
本次建模是基于Revit2016 版本,采用Visual Studio2017、Revit API 和 Revit SDK 作為開發工具,C#作為開發語言,在.NET4 框架下進行的二次開發。程序開發主要分為管徑識別、連接件識別、模型生成三部分。遵循API 的應用流程,在Execute()方法中寫入生成噴淋系統模型的算法,讀取CAD 圖紙中的管線、噴頭位置信息,結合管徑識別算法和連接件識別算法,利用生成構件實體模型的API,完成三維模型的建立。開發流程如圖1 所示。

圖1 基于Revit 自動生成噴淋系統的開發流程
三維噴淋系統模型主要包括水平噴淋管、噴淋頭、垂直噴淋管和管件。識別二維噴淋系統CAD圖紙并生成三維噴淋系統模型的基本步驟為:(1)圖元過濾,從圖紙中過濾并存儲自動生成噴淋系統BIM 模型所需的二維圖元信息;(2)管徑識別,從圖紙中分別提取管線和管徑后,為每段管線找到其對應的管徑信息(二維圖紙中管道的管徑信息通過文字進行標注);(3)連接件識別,管道間連接件的類型和生成方法均不同,需先識別連接件的類型,再生成連接件。
圖元是組成CAD 的最基本元素。在工程圖紙中,圖元包括點、直線、曲線、圓、圓弧等。構件由圖元的組合表示,且各類圖元的圖層信息不同。因此,可通過圖層區分組成各類構件的圖元,分離出識別噴淋系統所需的圖元,避免其他無關圖元的干擾。
將CAD 圖紙鏈接至Revit,基于Teigha.NET,for.dwg 類庫讀取DWG 文件,通過Revit API 提供的交互選擇,在CAD 圖中提取出管道線、噴頭和管徑標注,分別將其存儲至集合List<MyLines>Lines,List<CeilingMember>blockSprinklers 和 List<MyText>LabelText,獲得識別噴淋系統所需要的圖元,讀取噴淋管道、噴頭的圖元矢量信息。讀取的鏈接CAD 圖元坐標需要通過Transform 矩陣將其轉換為Revit 的全局坐標。由于Revit 數據的長度單位是英尺,所有與長度有關的物理單位均按英尺計算獲得,而我國建設工程領域習慣以毫米為單位,因此必須進行相應的單位轉換,可通過UnitUtils 類中的函數進行毫米與英尺的轉換。
消防噴淋系統CAD 圖紙中噴淋管道的管徑是以“DN+數字”形式的文字進行標注。每段管線均對應一個管徑標注。管徑一般標注在每段管線的附近,管徑標注與管線間存在一個距離,該距離因圖紙不同而不同,因此需要靈活設置一個距離閾值。可通過人工交互的方式,指定管徑標注與管線的最大距離,并設定該值為距離閾值W。計算管徑標注中心點P 垂直于管線的距離,P 可以通過文字標注包圍框B 計算得到。有學者采用此法解決結構構件柱和梁與其標注的匹配問題[6-7]。將計算得到的距離與給定值作比較,判斷管徑標注的中心點垂直于某段管線的距離是否在閾值W 之內,繼而判斷該管徑標注是否與該段管線匹配。但是,噴淋管線相交的區域中管徑標注分布較集中,如圖 2 中區域 A、B、C、D 所示,上述方法進行處理易出現管徑識別錯誤。以圖2 區域C 中的區域C1 為例,包圍框B2 的中心點為P2,P2 到左側管線1、上側管線2 的距離均比較近,因此計算機無法判斷包圍框B2 的管徑標注的歸屬。為準確識別管徑,必須在上述方法的基礎上再添加更多的規則。
當管線附近有多個管徑標注且標注方向不一致時,設計同向匹配算法進行管徑識別,即先判斷管徑標注與管線的方向是否一致,在方向一致的前提下,再判斷管徑標注中心點與管線的垂直距離。具體算法為:(1)計算管徑標注包圍框,計算管徑包圍框的最長邊;(2)以管徑標注中心點P 為中心,以最長邊作垂線,在閾值W 范圍內搜索與管徑標注匹配的管線。如圖2 所示,分別以包圍框B1、B2、B3 的最長邊作垂線,在閾值W 范圍內搜索到的相應管線分別為2、1、4 及3。采用此方法可實現管徑標注與管線的精確匹配,減少管徑的誤識別。

圖2 噴淋管徑識別(同向匹配算法)
當管線附近有多個管徑標注且方向一致的管徑文字信息時,在同向匹配算法基礎上設計雙向匹配算法。如圖3 所示,以DN150 的包圍框為中心,以包圍框最長邊作垂線,在閾值W 范圍內搜索到管線1 和管線2,以管線2 為中心線,閾值W范圍內搜索到管徑標注只有DN150,則管線2 的管徑為150。綜上,采用同向匹配算法和雙向匹配算法能處理管徑標注比較密集且不規范的圖紙管徑識別。

圖3 噴淋管徑識別(雙向匹配算法)
管道連接件有直通、彎通、三通、四通等四種類型,因此,必須判斷管道間需選用的連接件類型。設置一個閾值D,用于判斷一個管道附近的管道數量。遍歷所有管道,以一個管道G1 的一個端點為起點,閾值D 范圍內進行搜索。若找到一個管道G2,則管道G1 與管道G2 之間通過直通或者彎通連接件進行連接,當兩根管道之間平行時,采用直通連接件進行連接,如圖4(a)所示,否則通過彎通連接件進行連接,如圖4(b)所示;若找到兩個管道,分別為G3 和G4,則管道G1 與管道G3、管道G4 之間通過三通連接件進行連接,如圖4(c)所示;若找到三個管道,分別為 G5、G6、G7,則管道G1 與管道G5、G6、G7 之間通過四通連接件進行連接,如圖4(d)所示。

圖4 管道連接方式
讀取二維CAD 圖紙數據自動生成三維BIM模型,除CAD 圖紙提供的二維信息外,還需要補充一些二維圖紙上沒有的三維數據,如管道偏移量、噴頭偏移量、樓層三維高度,以及三維模型族和模型類型。管道偏移量、噴頭偏移量及樓層三維高度可在人工交互界面輸入或選擇,運用對象高效過濾技術[8]過濾出Revit 所有內置的管道和噴頭類型,添入組合框ComboBox,在界面上根據需求選擇相應類型即可。過濾操作的基本步驟及示例如表1 所示,表中示例代碼實現了對指定_doc 文檔中類名為OST_PipeCurves 對象的過濾功能。

表1 過濾操作的基本步驟及示例
噴淋系統主要由管道、連接件和噴頭組成。這三類構件數量多,手動建模煩瑣易出錯,因此運用本插件實現這三類構件的自動生成。將CAD 噴淋系統圖紙鏈接至Revit,讀取CAD 二維噴淋圖紙中管線、噴頭、連接件圖層的圖元信息,根據創建管道、連接件、噴頭所需的API 參數實現噴淋系統模型的自動生成。例如,創建管道的API 為Create(document,systemTypId,pipeTypeId,levelId,startPoint,endPoint),其中:有些參數可以從二維CAD 圖紙中直接獲取,如創建管道所需的端點startPoint 和endPoint 的二維坐標信息;有些參數如管道類型pipeTypeId 和管道系統類型system-TypeId 等,無法從二維CAD 圖紙中獲取,須通過人工交互界面將所需參數傳入計算機,由程序處理,完成模型的自動生成。
(1)管道生成
由 Create(document,systemTypId,pipeTypeId,levelId,startPoint,endPoint) 生成管道 API 的方法可知,利用API 生成管道需要系統類型、管道類型、標高、管道起始點坐標、管道終點坐標等參數信息。CAD 圖紙中的所有噴淋管線均位于同一圖層,通過交互界面點選圖紙中的一條管線,程序即可按照圖層將所有管線的位置數據存儲至集合List<MyLines>Lines。管道線端點的二維坐標可直接從CAD 圖紙提取,Z 坐標可通過交互界面上用戶輸入的管道偏移量及樓層三維高度之和獲得。管徑信息可通過2.2 節介紹的管徑識別算法獲得。生成管道的具體步驟為:首先通過端點坐標確定管線位置信息;其次識別管徑確定管線幾何信息;最后從Revit 項目中獲取管道類型和系統類型等參數,便可快速實現管道生成。
(2)噴頭生成
由噴頭生成的API 方法NewFamilyInstance(XYZ,FamilySymbol,Level,StructuralType) 可知,利用API 生成噴頭,需要噴頭中心點三維坐標、噴頭族類型、噴頭類型、標高等參數。在CAD 圖紙中,噴頭一般以塊的形式表示。噴頭塊的中心點平面坐標直接從CAD 文件中讀取。Z 坐標由噴淋頭偏移量和噴淋管道出水端點的三維坐標決定。噴頭偏移量通過交互界面輸入。若現實模型噴頭類型為上噴,則在噴淋管道出水端點三維坐標基礎上將Z 坐標上移噴頭的偏移量;若為下噴,則下移噴頭的偏移量。最后,結合在Revit 項目中獲取的噴頭族類型和噴頭類型等參數,快速生成噴頭。
(3)立管生成
根據已識別的噴頭和噴淋管道出水端三維坐標,創建噴淋頭和管道間的垂直管道模型,管徑最小為DN25。其中,噴淋管道出水端是通過判斷管道端點與噴頭的X、Y 坐標是否相同進行識別,如果相同即為噴淋管道出水端。立管的系統類型和管道類型由用戶通過交互界面指定。
(4)連接件生成
管道生成后對管道進行連接。獲取管道端點,根據2.3 節通過管道數量判斷管道連接件類型。對于直通和彎通連接件,需要找到距離最近的兩個連接點,判斷兩點的距離d 是否小于最小連接距離MinConnectDistance,若滿足條件,則可根據生成直通 API 的方法 NewUnionFitting(connector1,connector2) 和生成彎通 API 的方法 NewElbow Fitting(connector1,connector2)創建相應類型的連接件。對于三通連接件,三根管道有六個連接點,首先找到距離最近的三個連接點,判斷三點的距離 dis12、dis13、dis23 是否小于最小連接距離MinConnectDistance,若滿足條件,則可根據生成三通 API 的方法 NewTeeFitting(connector1,connector2,connector3)創建三通連接件。對于四通連接件,四根管道有八個連接點,首先找到距離最近的四個連接點,判斷四點的距離dis12、dis13、dis14、dis23、dis24、dis34 是否小于最小連接距離MinConnectDistance;其次,判斷四個連接點的位置是否符合要求,即要求連接器內第一個和第二個參數共線,第三個和第四個參數共線,如圖4(d)所示;最后,若滿足上述條件,則可根據生成四通 API 的方法 NewCrossFitting(connector1,connector2,connector3,connector4)創建四通連接件。
為驗證算法的正確性以及應用于實際工程的高效性,利用Visual Studio2017 在.NET 架構上對該算法進行編譯,并在Revit 軟件中測試分析。某建筑噴淋系統共有300 根管道,利用給定的圖紙通過本程序建立噴淋系統模型。在Revit 中,選擇“機電模板”,利用“鏈接CAD”功能將CAD 噴淋系統圖紙鏈接至Revit。安裝本程序后運行Revit,程序以選項卡(噴淋BIM)的形式出現在Revit 選項卡欄。當鼠標置于“噴淋翻模”按鈕時,界面會彈出“根據鏈接CAD 自動生成噴淋系統BIM 模型”的提示信息,如圖5 所示。

圖5 “噴淋翻模”自定義選項卡
點擊本程序“噴淋翻模”按鈕,彈出窗口如圖6 所示。利用“選擇管線圖層”“選擇標注圖層”“選擇噴頭圖層”等功能模塊,分別選擇圖紙中的管線、標注、噴頭,提取管線圖層、噴頭圖層、標注圖層所有的圖元信息。選中的圖層會自動隱藏,有利于檢查分層不清晰的圖紙中是否有漏選信息。完成圖層選擇后,提取并存儲圖紙中的二維信息。操作界面中的“標注識別范圍”用于管徑識別,參數值因圖紙不同而不同,故需觀察圖紙輸入管徑標注與管線距離的最大值,輸入標注識別范圍。生成噴淋系統模型所需的三維信息由用戶通過界面指定,如樓層標高,管道族類型、管道類型、管道偏移量,噴頭族類型、噴頭類型、噴頭偏移量及樓層標高等。針對模型實際情況,選擇下拉框中的三維模型數據或者直接輸入數值。執行完上述操作即可生成噴淋系統BIM 模型,如圖7 所示。

圖6 “噴淋翻模”操作界面

圖7 噴淋系統三維模型
在二維噴淋平面圖的基礎上創建噴淋模型,不同樓層間系統的創建,首先需要在Revit 各樓層平面內鏈接各樓層消防噴淋CAD 圖紙,再通過插件讀取圖紙二維信息,結合交互界面輸入的信息,利用RevitAPI 生成三維BIM 模型,即為二層噴淋系統模型,如圖8 所示。

圖8 二層噴淋系統三維BIM 模型
通過上述方法建立模型,未經調整即與實際工程圖紙對比,管道、管件及噴頭模型均能滿足實際工程需求;與手動建模相比,插件能大大提高工作效率。經大量圖紙驗證,使用此插件自動生成BIM 模型的準確率高達99 %。由此可見,本算法具有較高的準確性,可應用于實際工程并能提高建模效率。
為避免手動建模所帶來的重復煩瑣性工作,本文研究了二維CAD 圖紙轉換噴淋系統BIM 模型的方法。詳細介紹了“同向+雙向”的管徑識別算法、管道連接件識別算法,利用RevitAPI 函數編寫程序,實現噴淋系統BIM 模型的自動生成。經驗證,轉換準確率達99 %。該轉換方法節省了大量時間和成本,可為BIM 在噴淋系統設計中的應用提供參考及借鑒。