陳培旺
(廣東博意建筑設(shè)計院有限公司,廣東 佛山 528300)
目前Revit 涵蓋方案、建筑、結(jié)構(gòu)、設(shè)備四大專業(yè),同時能參與方案、設(shè)計施工、后期運營維護三大過程,是一款應(yīng)用于BIM(Building Information Modeling,建筑信息模型)技術(shù)的常用軟件[1]。Revit 在設(shè)計階段能進行參數(shù)化設(shè)計、多專業(yè)協(xié)同設(shè)計,多樣化出圖,這是傳統(tǒng)CAD 設(shè)計所不具備的強大功能[2-3]。然而,Revit 在建模設(shè)計上有不少缺點,如模型搭建命令單一繁瑣,相同的建模操作不能一鍵復(fù)制,缺乏便捷性;建模有時無法有效搭建族塊;搭建模型的族塊類型有限;模型信息統(tǒng)計查詢繁瑣等,這些不足在影響設(shè)計效率的同時,也間接阻礙了BIM 技術(shù)的發(fā)展和應(yīng)用[4-5]。面對日趨復(fù)雜的工程項目和Revit 自身建模功能不完善的背景下,基于Revit API 二次開發(fā),不斷優(yōu)化改進其操作和功能,是當(dāng)今提高BIM 技術(shù)應(yīng)用的一個重要方向[6-7]。
基于Revit 2015 二次開發(fā)流程如圖1。
圖1 基于Revit 2015 二次開發(fā)流程圖
針對暖通專業(yè)統(tǒng)計和數(shù)據(jù)輸出功能,在Revit 軟件自身統(tǒng)計混亂,統(tǒng)計步驟繁瑣、統(tǒng)計數(shù)據(jù)無法一鍵導(dǎo)出Excel 格式的情況下,基于Revit API 二次開發(fā)單獨統(tǒng)計暖通專業(yè)工程材料量、暖通專業(yè)設(shè)備參數(shù)明細及造價的插件。設(shè)計的插件構(gòu)想圖如圖2 所示。
IExternalCommand 是Revit API 用戶通過外部命令來拓展功能的接口,本插件用此外部拓展接口進行二次開發(fā)。根據(jù)圖2 構(gòu)思插件的界面,二次開發(fā)的內(nèi)容主要包括插件窗體的設(shè)計、初始化窗體、顯示族參數(shù)和獲取族參數(shù)。
圖2 插件設(shè)計的界面
插件界面包括主窗體設(shè)計及子窗體界面,主窗體設(shè)計內(nèi)容包括:添加WPF 窗體、添加現(xiàn)有項目、添加引用及添加窗體控件。通過TreeView 控件展現(xiàn)所需要統(tǒng)計的內(nèi)容,即工程量、參數(shù)、成本三個方面。在界面的右下角的“統(tǒng)計”和“導(dǎo)出”來實現(xiàn)對暖通專業(yè)工程量、參數(shù)、成本統(tǒng)計,及針對的統(tǒng)計數(shù)據(jù)進行導(dǎo)出。子窗體設(shè)計內(nèi)容,主要是在窗體上放置能顯示Revit 模型族參數(shù)的DataGrid 控件,通過編寫應(yīng)用程序標記語言XAML 賦值給窗體控件。
以參數(shù)明細統(tǒng)計功能為例,參數(shù)明細統(tǒng)計有子項“空調(diào)設(shè)備”“水泵”“空調(diào)水管直徑長度”及“風(fēng)管面積”。用CountSubCategory 類來封裝下面的數(shù)據(jù):
a.字符串“空調(diào)設(shè)備”“水泵”“空調(diào)水管直徑長度”“風(fēng)管面積”。
b.“空調(diào)設(shè)備”“水泵”“空調(diào)水管直徑長度”“風(fēng)管面積”分別對應(yīng)的族參數(shù)。
c.“空調(diào)設(shè)備”“水泵”“空調(diào)水管直徑長度”“風(fēng)管面積”分別對應(yīng)的子窗體。
TreeView 控件上包含的就是本插件主窗口所顯示的三大方面的統(tǒng)計功能,用CountCategory 封裝該“數(shù)量統(tǒng)計”“參數(shù)明細統(tǒng)計”“成本統(tǒng)計”這3 個字符串。將這3 個字符串對應(yīng)的統(tǒng)計參數(shù)保存到CountSubCategory 類中。將CountCategory 類所儲存的數(shù)據(jù)再封裝到Vm.Count 類的屬性中,這樣經(jīng)過創(chuàng)建Vm.Count 類的對象,進而將此對象傳遞給窗體,從而窗體得到數(shù)據(jù),達到初始化窗體的目的。
將保存有暖通族數(shù)據(jù)的CountSubCategory 類賦值到子窗體控件,子窗體帶有DataContext 屬性的Grid 控件,從而Grid 便可得到數(shù)據(jù),這樣窗體就能顯示族參數(shù)。
Revit 文件中所有的族均為圖元,帶有ID 編號。使用Revit 本身的過濾器篩選暖通族的ID,通過封裝ID 的參數(shù),為每個參數(shù)賦予屬性,這樣插件便能獲取數(shù)據(jù)。
經(jīng)過這4 個方面的制作內(nèi)容,完成暖通插件如圖3所示。
圖3 完成的暖通統(tǒng)計插件
現(xiàn)通過一個地鐵模型檢驗插件。圖4 為某地鐵站的Revit 模型;圖5 為只顯示地鐵站內(nèi)MEP 的模型;圖6 為風(fēng)管及管徑工程量統(tǒng)計結(jié)果;圖7 是空調(diào)水管參數(shù)明細統(tǒng)計結(jié)果;圖8 為暖通空調(diào)設(shè)備成本統(tǒng)計結(jié)果。
圖4 Revit 模型
圖5
圖6 對風(fēng)管及管徑進行工程量統(tǒng)計
圖7 對空調(diào)水管進行參數(shù)明細統(tǒng)計
圖8 對空調(diào)機械設(shè)備成本統(tǒng)計
本文從改進Revit 統(tǒng)計功能為方向,基于Revit API進行二次開發(fā),制作了能便捷統(tǒng)計BIM 模型中暖通空調(diào)專業(yè)參數(shù)的統(tǒng)計插件。改進效果如下:
(1)本插件避免原先軟件層層篩選族的方式來統(tǒng)計,能做到一鍵將暖通專業(yè)的工程量、使用的設(shè)備參數(shù)規(guī)格及設(shè)備的成本一鍵統(tǒng)計到位。
(2)能解決Revit 軟件本身統(tǒng)計混亂。本插件能區(qū)分暖通專業(yè)和給排水專業(yè)的管道,做到精準統(tǒng)計。
(3)統(tǒng)計的數(shù)據(jù)能導(dǎo)出Excel 格式,解決了Revit 只能導(dǎo)出TXT 文本格式的問題,為統(tǒng)計人員提供更加便捷計算的文本格式。
Revit 軟件整合了建筑、結(jié)構(gòu)、MEP 三個專業(yè),包含不同專業(yè)的建模操作,出現(xiàn)使用功能便捷性的缺失難以避免,針對與不同專業(yè)功能便捷型缺失的問題進行二次開發(fā),是目前BIM 發(fā)展研究其中的一個方向。本文通過基于Revit API 進行二次開發(fā)制作針對暖通專業(yè)的統(tǒng)計插件,希望能對暖通專業(yè)或者其他專業(yè)同行給予啟發(fā),開發(fā)更多基于本專業(yè)情況而優(yōu)化Revit 軟件本身的功能或者開發(fā)其沒有的功能,讓BIM 技術(shù)更好地服務(wù)自己的專業(yè)。