錢 海 馬小軍 來 侃
(南京工業(yè)大學 電氣工程與控制科學學院,南京 210000)
BIM 技術在建筑設計、結構計算、建筑能耗分析、設備管理、虛擬施工等專業(yè)已取得一定的研究成果[1],然而目前針對BIM 技術中電氣設計的應用研究相對較少。在BIM 應用過程中,所產(chǎn)生的BIM模型有很多類型。目前針對特定的BIM 軟件平臺已經(jīng)出現(xiàn)了一些第三方BIM 模型構件庫管理軟件工具[2],但是①Revit 中只有少量電氣設備族,難以滿足電氣工程設計的需求;②電氣設計人員在建模時,需要從本地族庫載入想要的電氣設備族,工作效率低下;③Revit 明細表功能能實現(xiàn)具體實例及其屬性的統(tǒng)計,但需要花費不少時間來設置參數(shù)。
本文基于開放IFC 標準,結合BIM 協(xié)同設計過程參考模型,首先基于Revit 平臺研究電氣設備參數(shù)化模型,分析不同電氣設備族的共性與特性,并研究了BIM 電氣設備族的創(chuàng)建方法與使用現(xiàn)狀。接著分析Revit API 兩種外部功能擴展方式,研究了Revit 對象的訪問、過濾、編輯與創(chuàng)建等方法。然后研究Family API 關于族類型獲取、族創(chuàng)建和族編輯的方法。最后構建基于Revit 二次開發(fā)的電氣設備族平臺,實現(xiàn)①項目已加載及本地電氣設備族的快速統(tǒng)計查詢,且電氣設備族可直接拖動到項目中使用,大大提高建模效率;②對于協(xié)同設計平臺下存儲在云端的項目模型,通過本文開發(fā)的族屬性導入模塊可將所有實例及其屬性導入到本地SQL Sever數(shù)據(jù)庫,并統(tǒng)計出系統(tǒng)族實例和構件族實例的個數(shù)。本文研究內容的技術路線圖如圖1 所示。

圖1 技術路線圖
建立BIM 電氣設備族庫,需要對項目全生命周期電氣設計信息進行整理,按照主要參數(shù)、關鍵屬性,結合實際電氣業(yè)務需要對電氣設備BIM 模型的資源進行分類,完成對BIM 模型資源的通用化、系列化、模塊化整合,保證在BIM 模型族庫中存儲的模型及構件在實際設計過程中具有良好的通用性[3],同時具備良好的可維護和可擴展性,適應建筑電氣設計領域不斷發(fā)展的需要。
電氣設備參數(shù)化設計模型構件整理的內容主要有兩方面,一是電氣設備族的系列化整理;二是電氣設備族的模塊化整理。
(1)電氣設備族的系列化整理
系列化整理,通過對同一類電氣設備族規(guī)律性的分析研究,進行合理的基礎建模,可根據(jù)模型主要參數(shù)的驅動,自動生成該類構件各類型尺寸的模型,并將其類型名稱、編碼、主要尺寸參數(shù)、關鍵屬性等從模型中剝離形成系列化構件模型。
電氣設備族的基本參數(shù)是其基本性能或基本技術特性的標志,是選擇或確定族功能范圍、規(guī)格、尺寸的基本依據(jù)[4]。電氣設備族基本參數(shù)系列化是系列化的首要環(huán)節(jié),是進行系列化設計的基礎。對于一類電氣設備族,選擇一個或幾個基本參數(shù),并確定其上下限。
建立電氣設備族的參數(shù)系列表。先基于模型構件的基本參數(shù),形成該類構件的參數(shù)系列,之后增加其他所需的屬性(如類型名稱、編碼、關鍵屬性等)。
完成電氣設備族的參數(shù)化建模過程,基于基本參數(shù),并充分考慮到尺寸系列變化可能對模型產(chǎn)生的影響,通過公式的方式描述其他幾何參數(shù),逐步完成模型構件的建模[5]。之后對參數(shù)系列表中的各項逐一生成模型,檢查模型造型是否正確。
系列化整理流程如圖1 所示。

圖2 電氣設備模型構件的系列化整理
(2)電氣設備族的模塊化整理
模塊化整理,按照標準化原則,基于實際電氣業(yè)務需要,對已有的電氣設備模型進行拆分、整理,將電氣設備模型的部分構件組合在一起,最終形成一系列通用性較強的電氣設備模型單元。
以格柵吊燈為例,在Revit 基礎上說明照明設備族的創(chuàng)建思路、其他參數(shù)設置及創(chuàng)建過程。格柵吊燈族為嵌套族。
(1)創(chuàng)建幾何形體:用公制照明設備族樣板創(chuàng)建燈罩(含吊桿、吊桿法蘭),并作為主體族。用公制常規(guī)模型族樣板創(chuàng)建內置格柵,并作為嵌套族裝在燈罩中,并且運用“陣列”功能,將內置格柵沿長度方向陣列,同時將吊燈“長度”和“格柵片數(shù)”兩個參數(shù)值通過公式相關聯(lián)。
(2)吊燈類型設置:根據(jù)要求,創(chuàng)建三種不同的吊燈透光類型:上部透光、下部透光和上下部均透光。根據(jù)遮罩的不同材質進行設置。
(3)添加照明設備參數(shù):照明設備參數(shù)的設置用來滿足設備工程師對燈具參數(shù)的要求,重點配置電氣連接件和選擇相對應的光域網(wǎng)文件[6]。
Revit 中格柵吊燈族創(chuàng)建過程主要有:第1 步,創(chuàng)建格柵嵌套族;第2 步,創(chuàng)建格柵吊燈族;第3 步,添加照明設備參數(shù);第4 步,保存并應用于項目文件。具體創(chuàng)建過程如圖2 所示。

圖3 格柵吊燈創(chuàng)建過程
初步整理出電氣設計中基本需要的族有:消防端子箱-明裝;配電箱-暗裝;三管格柵熒光燈;疏散指示燈;三聯(lián)開關;二三孔插座;感煙探測器;感溫探測器;火警電話插孔;消防廣播;消防報警電話;消防啟泵按鈕;半球形攝像機;電視插孔;電話和網(wǎng)絡插孔等[4]。
Revit API 通過兩種方式擴展Revit 功能,External Command 和External Application。External Command 實現(xiàn)外部命令的功能,使用外部工具加載,External Application 實現(xiàn)外部應用的功能,都需要引用Revit API.dll 和RevitAPIUI.dll 文件。Revit API.dll包含了在數(shù)據(jù)庫層控制Revit 的應用、文檔、對象和參數(shù)的方法,而Revit APIUI.dll 包含了在操作和Revit 用戶界面層的所有自定義API 接口。
External Command 和External Application 的實現(xiàn)方法是不同的。External Command 通過重載Execute()方法實現(xiàn),而External Application 是通過On-Startup()和OnShutdown()方法的配合使用,才能實現(xiàn)功能擴展[7]。
本文使用IExternal Application 完成電氣設備族統(tǒng)計人機界面面板的功能。族屬性導入模塊不添加面板,直接用外部工具加載實現(xiàn)。使用IExternal Command 完成電氣設備族統(tǒng)計及族屬性導入的功能。
使用External Command 和External Application兩種方式進行編譯與測試時,Revit.exe 啟動后,.addin 文件中的命令會被加載。本文構建的電氣設備族平臺的.addin 文件如下:

Revit API 中有兩種方式根據(jù)標識來識別區(qū)分和訪問不同對象。第一種方式,只使用類名來判斷,能容納其它對象或特定用途的類,如:Wall、Floor、Cont.Footing、Ceiling 等系統(tǒng)族的實例。第二種方式,如果通過類名無法分別出來,需聯(lián)合對象的類別(Category)來判斷。但是,門、窗、柱等對象沒有專用的類來表示,都是FamilyInstance 的實例。
本文采用Category 來判斷其類別,用枚舉型的BuiltInCategory 來創(chuàng)建ElementCategoryFilter 對象。
Revit 平臺中所有的對象遍歷都必須要使用FilteredElementCollector 類,它提供了對文檔中的對象過濾的所有功能,在過濾操作時至少需要添加一個過濾條件,也可被賦予多個過濾條件。添加過濾條件后,滿足條件的對象集合立即就可以從這個類訪問。Revit 可以通過三種用法實現(xiàn)FilteredElementCollector 過濾,過濾的方法、條件、范圍、特點及實例如表1 所示。

表1 FilteredElementCollector 的三種方法
LoadFamily()加載整個族和族所有的類型或者標簽到項目中。文檔類別提供類似的方法LoadFamilySymbol(),加載特定的族標簽。LoadFamilySymbol()只從族文件中加載特定的族標簽到項目中。
Revit API 中Family Creation 函數(shù)可以創(chuàng)建和編輯族和族類型,但是Revit API 不能編輯系統(tǒng)族。如果外部系統(tǒng)有已存可用的數(shù)據(jù)要傳入到Revit 族庫中,可以使用此函數(shù)有效地實現(xiàn)。
(1)獲取族類別
FamilyBase.FamilyCategory 屬性表示族的類別,如Columns、Furniture、Structural Framing、Windows。通過如下代碼確定一個開放的Revit 族文件的族類別:
string categoryName=familyDoc.OwnerFamily.FamilyCategory.Name;
(2)獲取族參數(shù)
可以通過族文檔的OwnerFamily 屬性得到族參數(shù),代碼如下:

(3)創(chuàng)建族文檔
由IsFamilyDocument()屬性確定文檔是否是族文檔。如果文檔是族文檔,修改Revit 族文檔、獲取族類型和參數(shù)可通過族文檔類別獲取。在一個項目文檔中編輯一個已有族,可以使用文檔類別的EditFamily()函數(shù),編輯完成之后,使用LoadFamily()重新加載族到所有者文檔。本文使用Application.NewFamilyDocument()創(chuàng)建一個新族文檔,代碼如下:

(4)嵌套族標簽
使用Family Symbol 從族文檔中過濾族標簽,獲取加載到族中的所有族標簽。
使用IExternal Application 完成添加電氣項目視圖、電氣設備族統(tǒng)計兩個模塊人機界面面板的功能。族屬性導入模塊不添加面板,直接用外部工具加載實現(xiàn)。
本模塊使用IExternal Command 的繼承類DragAndDropCommand 實現(xiàn),使用Revit API 過濾器獲取項目已加載的電氣設備族和本地族庫中電氣設備族的類別,并做相關顯示處理。筆者選用電氣項目文件“某建筑地下二層變電室.rvt”作為案例,對平臺的可行性和可靠性進行驗證。
項目已加載的電氣設備族統(tǒng)計模塊顯示項目中所有用到的電氣設備族,如圖4 左邊部分。本地電氣設備族統(tǒng)計模塊顯示本地族庫中所有的電氣設備族,如圖4 右邊部分。

圖4 電氣設備族統(tǒng)計
項目已加載的電氣設備族拖動模塊可以從已統(tǒng)計出的項目電氣設備族列表視圖中,拖動相關族直接放置于當前項目中,方便電氣設計中設備族的加載與使用,提高工作效率。
本模塊用外部命令方式實現(xiàn)。將.addin 文件放置于C:ProgramDataAutodeskRevitAddins2014。
首先,歸納Revit 2014 系統(tǒng)族有:門、窗、柱、屋頂、樓板、天花板、Cont.Footing、風管、風管附件、管件、管路附件。接著,過濾出族實例,提取屬性,插入數(shù)據(jù)表。然后,找出模型中的系統(tǒng)族和構件族的實例,分別提取系統(tǒng)族實例的屬性和構件族實例的屬性。最后,分別插入到系統(tǒng)族表和構件族表。
打開SQL Server 2008 數(shù)據(jù)庫鏈接,保證外部數(shù)據(jù)可以插入到數(shù)據(jù)庫中已建立的表SystemFamily 和ComponentFamily[8]。執(zhí)行外部命令“FamilyProperties”,族屬性導入入口位置如圖5(a)所示。
插件完成當前項目的族屬性數(shù)據(jù)插入后,自動統(tǒng)計出已插入到數(shù)據(jù)庫中的系統(tǒng)族實例個數(shù)為141,構件族實例的個數(shù)為813,如圖5(b)所示。

圖5 族屬性導入入口與結果
查詢數(shù)據(jù)庫系統(tǒng)族表和構件族表。分別對表SystemFamily 和表Component-Family 進行查詢。使用查詢語句如下:

圖6 構件族表查詢結果
(1)select instanceName,categoryName,categoryName from SystemFamily;
(2)select instanceName,categoryName,categoryName from ComponentFamily。
查詢結果如圖6 所示,表SystemFamily 中有141行屬性數(shù)據(jù),表ComponentFamily 中有813 行屬性數(shù)據(jù)。通過對比之前的族實例插入個數(shù)統(tǒng)計結果可知,族屬性導入模塊在對當前項目的族屬性數(shù)據(jù)進行導入是可靠的。
實驗結果表明,基于IFC 標準的電氣設備族平臺進行項目相關項統(tǒng)計、電氣設備族的統(tǒng)計與拖動是可行的,可以提高工作效率。經(jīng)過與SQL Sever數(shù)據(jù)庫查詢結果的對比,表明族屬性數(shù)據(jù)導入功能是可靠的。由于Revit API 數(shù)量和功能隨著版本的更新越來越豐富和完善,短時間內無法將其功能充分發(fā)揮,因此可以進一步加強Revit API 的應用研究。
[1]李寧.基于BIM 與IFC 的混凝土壩施工仿真信息模型構建方法研究[D].天津:天津大學,2012.
[2]Tanyer Ali Murat,Aouad Ghassan.Moving Beyond the Fourth Dimension with an IFC-based Single Project Database[J].Automation in Construction,2005,14(1):15-32.
[3]朱立紅,楊鶴標.海量結構化數(shù)據(jù)查詢系統(tǒng)的研究與實現(xiàn)[J].計算機應用與軟件,2014,31(2):29-32.
[4]Lipman,Robert R.Details of the mapping between the CIS/2 and IFC product datamodels for structural steel[J].Electronic Journal of Information Technology in Construction.2009(14):1-13.
[5]滿慶鵬,孫成雙.基于IFC 標準的建筑施工信息模型[J].土木工程學報,2011,44(S1):239-243.
[6]來侃,馬小軍,朱亮.電氣設備族在BIM 照明設計中的應用[J].電氣應用,2015,34(2):30-34.
[7]林良帆.BIM 數(shù)據(jù)存儲與集成管理研究[D].上海:上海交通大學,2013.
[8]陸寧,馬智亮.利用面向對象數(shù)據(jù)庫與關系數(shù)據(jù)庫管理IFC 數(shù)據(jù)的比較[J].清華大學學報,2012,52(6):836-842.