李亞克 于海豐 王國鑫2 高二軍 潘洪潔 祁昕
(1. 河北科技大學 建筑工程學院,石家莊 050018; 2. 北京橄欖山軟件有限公司,北京 100095)
BIM(Building Information Modeling)是以建筑工程項目的各相關信息數據作為模型的基礎,進行建筑模型的建立,通過數字信息仿真模擬建筑物所具有的真實信息。它具有可視化、協調性、模擬性、優化性和可出圖性等特點,BIM可以實現建筑全生命周期的信息共享,對于項目的可視化管理以及項目各參與方的信息共享傳遞具有很大優勢[1-2],受到行業者的青睞;但是,對于給水排水工程的設計,很多技術還停留在二維手段上,缺乏先進的BIM技術作為支撐,這其中因涉及到的因素包括外在的利益和內在的實際應用;其中,對于內在因素來說,由于軟件的熟悉程度不夠,加上國內的一些規范的限制,嚴重的影響了BIM技術在國內的發展。
建筑給水排水工程設計是建筑工程設計中重要的組成部分,通常,建筑給水排水工程管道種類多,數量大,且布置復雜;涉及到的材料種類豐富,不同的管材的摩阻系數不同,計算較為復雜。現階段,建筑給水排水工程設計通常存在工作效率低下,可視化程度差;協調困難;設計中常與其他專業發生沖突等問題。而在BIM信息模型中,所有的給水排水管道和設備都是三維的,而且尺寸與實際空間吻合,表現得生動具體;能夠即時看到其它專業的內容,交流順暢,解決管道空間碰撞問題;自動管理圖紙,統計材料,并能以表格的形式輸出,極大地提高了效率。能對給水排水管道中的水流進行模擬,進行復雜的水力計算,則采用BIM技術創建給水排水管道和設備是必需的前提[3]。并且,還能通過BIM相關軟件的二次開發技術,間接支持了各專業軟件之間數據的互通,極大地提高了協同性。
本文參考了《室外排水設計規范》(GB 50014-2006)[4],研究了基于BIM技術在給水排水工程設計中的應用時,通過Revit二次開發技術,實現了在進行給排水管道坡度調整時,批量調整管道管徑與坡度值的對應關系。同時,利用工程實際進行了驗證。
根據《室外排水設計規范》(GB50014-2006)第4.2.10條規定,排水管道的最小管徑與相應最小設計坡度的規定取值是:污水管最小管徑d=300mm時,相應最小設計坡度 塑料管0.002、其他管0.003。雨水管最小管徑d=300mm時,相應最小設計坡度塑料管0.002、其他管0.003。隨著城鎮建設發展,街道樓房增多,排水量增大,應適當增大最小管徑,并調整最小設計坡度。常用管徑的最小設計坡度,可按設計充滿度下不淤流速控制,當管道坡度不能滿足不淤流速要求時,應有防淤、清淤措施。
室內排水管坡度的設定和室外排水管坡度不同,室內的設計相對來說面臨的狀況更加復雜,所以一般都不在分區域、分方位進行單獨計算而是采取一個特定的數值,直接確定排水管坡度。這樣的排水管坡度一般在驗收規范等相關的文件中都有明確的規定,在進行室內裝修的時候,業主和設計施工人員一定要了解相關的驗收規范,確定相關排水管坡度的標準值、最小坡度值以及支點之間的規范間距,才能更好地完成室內排水的流暢設計。排水管坡度和所用排水管道的材質有關系,一般來說鑄鐵材質的管道,由于其摩擦系數比較大,所以在設計排水管坡度時,其坡度的設計要大于塑料排水管道。
通常情況下,給排水管道的坡度值公式為:
(1)
式中:
i——給排水管道的坡度;
h——管首的管底標高;
h0——管尾管底標高;
l——管總長;
在實際設計中室內排水管坡度都是不采用計算的方法的,因為計算過程設計到材質和摩擦系數,過程相對復雜,通常采用定值,如表1和表2所示。

表1 塑料管的管徑與坡度對應關系表

表2 鑄鐵管的管徑與坡度對應關系表
本文根據坡度方向、起點標高設置和坡度設置三個參數來確定給排水放坡系統功能,其中,設計工作流程圖如圖1所示。

圖1 給排水放坡系統設計流程圖
本文介紹的二次開發是基于Revit2016版本,主要開發工具為Visual Studio2012、通過使用Revit API(Application Programming Interface)、Revit Lookup以及Revit Add In Manager,用C#語言完成給排水系統放坡的插件開發。
如圖2所示,Revit API是建立在Revit產品的基礎之上,它是一個類庫,里面包含了二次開發使用的一些命名空間,以及命名空間下的類和類中包含的函數和屬性,需要在Revit運行時才能工作,通過API,開發人員可以通過這些接口訪問Revit,可以添加用戶基于Revit API開發的插件來擴展和增強Revit的功能和應用[2]。
使用Revit API具體可以做到:訪問模型的圖形數據和參數數據;創建、修改、刪除模型元素;創建插件來完成對UI的增強;創建插件來完成對一些重復工作的自動化;集成第三方應用來完成諸如連接到外部數據庫、轉換數據到反洗應用等;執行一切種類的BIM分析;自動創建項目文檔[5]。

圖2 Revit2016 API
Revit Lookup是Autodesk開發的插件,它可以幫助開發人員在開發過程中通過Lookup查找所需要的信息,大大的提高了開發人員的編碼效率。
Revit Add In Manager也是Autodesk開發的插件,用于加載開發人員外部編寫的動態庫,對于Revit二次開發調試過程,極大地提高了代碼調試的效率,其優點就是不用重新啟動Revit就可以修改代碼并再次進行加載和運行。
本文講述的二次開發最終創建的文件為外部.dll文件,創建的平臺為Visual Studio2012(簡稱VS),基于的模板為類庫。開發的語言為C#語言,C#語言作為一門簡單、現代、優雅、面向對象、類型安全、平臺無關的一門新型組件編程語言,憑借著其源自C/C++的語法風格,融合了Visual Basic的高效和C/C++的強大,再加上其創新的語言特性,剛一出世,就深受世界各地程序員的好評和喜愛,成為一顆耀眼的明星[6]。結合了Revit2016提供的外部接口,實現在Revit2016中的給排水系統放坡功能。
采用Visual Studio2012,對Revit2016進行二次開發,具體步驟:新建項目,啟動VS2012,新建一個Visual C#類庫項目,修改文件重命名。VS2012自動生成C#類文件,同時修改類文件重命名。添加引用,在Visual Studio2012菜單欄中點擊項目→添加引用,在彈出的“添加引用”對話框中,選“瀏覽”標簽,選擇Revit2016安裝文件根目錄下的Revit API.dll和Revit APIUI.dll兩個動態鏈接庫,完成添加。需注意,在屬性中將Revit中的兩個.dll引用的“復制”到本地改為“false”,這樣避免復制文件到本地目錄。代碼編寫,在.cs文件下引用命名空間代碼區添加Autodesk. Revit. DB、Autodesk. Revit. UI等引用,創建命令類,創建一個IExternalCommand派生類,實現接口,并在Execute()方法中編寫實現功能的代碼。在VS的解決資源方案下生成程序,在輸出窗口中找到.dll文件輸出的位置。執行插件,啟動Revit2016,在功能區的附加模塊中,在Add-In-Manager中的Load下輸入.dll文件的位置,運行執行插件。調試插件,在編碼、運行過程中可能會遇到各種問題,因此需要進行斷點調試檢查當前變量和對象的狀態來定位問題[7-9]。
軟件的主要功能是在Revit2016中加入批量調整給排水坡度功能,能滿足以下功能:
(1)支持對連續排水管道,有立管連接的排水管道進行放坡;
(2)支持向上或向下放坡;
(3)支持設置起坡點偏移量放坡;
(4)支持國標規范為不同管徑配置相應坡度,同時,可自定義、添加/刪除。
軟件以外部插件的形式嵌入到Revit2016中,安裝本軟件后,在Revit2016的工具欄中會生成一個按鈕,單擊按鈕,啟動軟件,軟件的主要工作界面如圖4所示。由工作界面可以看出,界面分三部分:坡度方向,起點設置和坡度設置,其中,在坡度設置中,又包含了標準坡度設置子界面。在坡度方向中,可以選擇管道需要調整坡度的方向;在起點設置中,可以選擇隨管道標高自動調整坡度,也可以直接設置偏移量,以固定高程點調整坡度,同時可以選擇項目樣板中已經設置好的標高進行調整;在坡度設置中,可以按固定值調整,同時,可以支持標準調整鑄鐵管和塑料管的標準坡度值。

給排水坡度系統界面

標準坡度設置界面
本技術根據Revit2016 API文檔中的函數和類,同時編寫了實現核心功能的輔助函數程序,在實現一些功能的過程中,主要的函數如表3所示。

表3 程序中運用的主要函數
本技術采用的核心功能是Export()函數,需要涉及到參數有起點設置數值和坡度設置數值,其中坡度設置中的參數值分為塑料管和鑄鐵管的存儲數據;而在坡度設置參數中,我們通獲取塑料管和鑄鐵管的存儲數據值,然后修改管道中的起始高程的斜率,實現坡度與Revit中設置對應一致,完成功能所需。
本功能的核心技術代碼是getAllConnectPipe(),即查找和管道連接的所有連接管件如下:
public Connector FindRefConnector(Connector connector_0)
{
Connector connector;
if (connector_0 != null && connector_0.IsConnected)
{
IEnumerator enumerator = connector_0.AllRefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Connector current = (Connector)enumerator.Current;
try
{
if ((connector_0.Owner.Id == current.Owner.Id ?
false : connector_0.Origin.DistanceTo(current.Origin) < 1 / 304.8)
&& current.IsConnectedTo(connector_0))
{
connector = current;
return connector;
}
}
catch (Exception exception)
{
}
}
return null;
}
finally
{
IDisposable disposable = enumerator as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
return connector;
}
return null;
}
以北京市某裝配式項目中機電專業模型的一部分管道噴淋系統作為工程實例進行測試。設計人員在進行機電模型設計的過程中,通常會遇到在Revit中調整管道坡度值時,涉及到管道的直徑和偏移量等參數的修改和設置,且可能單根或者多跟管道的修改,勞動量巨大;同時,在設計的過程中,需要查找規范確定設計坡度值,給設計人員帶來極大困擾,嚴重地影響了工作效率以及機電專業與其他專業的數據的傳遞和協同工作。

圖4 系統調整坡度圖
為此,通過給排水放坡系統插件的使用,批量調整管道的坡度值,可以很好地解決這一問題;同時,根據插件的標準坡度設置功能,可以自動根據標準規范調整不同管材的標準坡度值,如圖4中的插件修改后的系統圖所示。經過測試,對比手工進行以上的所有操作設置,插件能極大地提高工作效率,同時,解決了在信息傳遞中模型設計不準確等主要問題,使模型的準確率得到了較大的提升,完美的提高工作效率。有了精準的模型,即可以為建筑和結構人員設計帶來極大便利,也為BIM技術在模型全壽命周期的普及使用提供了優勢。
BIM技術應用可以提高設計質量和效率,已成為行業人員的共識。但現階段,Revit要取代AutoCAD進行全套設計還有很多障礙,如何利用BIM技術極大化的提高設計效率和精細化程度的研究仍然處于發展階段,BIM技術在機電專業設計中準確性和效率性等方面所出現的問題,嚴重的阻礙了BIM技術在國內的推廣和發展,通過二次開發技術是提高工作效率的有效可行方法之一。
本文針對于Revit在機電專業設計中調整管道坡度方面的應用不足,介紹了二次開發軟件插件,通過修改和創建模型數據的圖形和參數信息,完成了Revit在調整坡度時的工作效率低下以及表達不準確的問題,避免了重復性工作。實踐表明,插件具有廣泛的實用性,可以大大提高工作效率,基本上實現了設計信息傳遞的不足。但是,現階段,與二維設計相比,如何定制出一套符合國內設計習慣的BIM設計標準來突破BIM技術發展的瓶頸,仍然值得廣大設計與研發人員共同研究與探討。