陳 強 鄧焯彬 何 波 張家立
(1.廣州南方建筑設計研究院,廣州510640;2.廣州優(yōu)比建筑咨詢有限公司,廣州510630)
關于機電設備應急管理系統(tǒng)技術實現(xiàn)方法選擇和總體設計已在《基于BIM的機電設備應急管理系統(tǒng)總體設計》中敘述,其中包括技術路線的分析和系統(tǒng)總體設計,本文重點研究軟件的實現(xiàn)方法。
在《基于BIM的機電設備應急管理系統(tǒng)總體設計》一文中,通過對比分析選擇了 Autodesk Navis-Works作為 BIM圖形平臺,后臺數(shù)據(jù)庫采用 Microsoft SQL Sever,利用 Microsoft.NETFramework 進行開發(fā),系統(tǒng)架構圖如圖1。
系統(tǒng)架構設計基于三層架構原則,三維BIM模型顯示前端借助NavisWorks的3D可視化仿真功能,再通過其自身提供的API(Application Programming Interface,應用程序編程接口)與邏輯層的邏輯接口相連接,對其進行各類的圖形顯示控制和圖形數(shù)據(jù)讀取。在此基礎上,與后臺關系數(shù)據(jù)庫進行有規(guī)則的數(shù)據(jù)交互,結(jié)合不同環(huán)境的需求,定制出各種邏輯業(yè)務控制、數(shù)據(jù)安全校驗、數(shù)據(jù)存取、可視化數(shù)據(jù)交互效果等等,從而實現(xiàn)高效快捷的BIM數(shù)據(jù)操作。
Autodesk NavisWorks提供了三種API方式:
·Plug-ins API
·Automation API
·Controls API
Plug-ins API是相當便捷的一種插件架構,方便開發(fā)插件模塊與NavisWorks相連接,此接口連接NavisWorks模塊邊界,由NavisWorks管理模塊的性能,模塊連接后,生命周期受NavisWorks影響,在Navis-Works運行情況下,程序可以進行自身資源釋放,也可交由NavisWorks管理,在NavisWorks成功加載完成后,插件接口開始調(diào)用各類模塊,從而實現(xiàn)功能擴展,關鍵在于第三方程序調(diào)用,例如后臺數(shù)據(jù)庫,這里我們已作出多種解決方案,可作中間件,前后互連。
Automation API提供了一系列的自動化處理方法,程序在此接口上連接,可以獲取NavisWorks在文檔處理上的一些具體方法,我們借助此接口進行文檔加載和移除,此處不但有許多文檔加載的方法,還有一些指引,幫助程序調(diào)試和檢測模型,模型有許多種類,接口只能支持一部分,我們在這里進行了一系列的約束,幫助程序順利加載我們所創(chuàng)建的模型,使模型準確顯示在接口上。
1) 機電設備應急管理系統(tǒng)基本功能(如圖2)
圖2 機電設備應急管理系統(tǒng)基本功能
由于篇幅所限,以下就幾個關鍵功能模塊的實現(xiàn)方法進行說明。
2)BIM模型實時漫游瀏覽
BIM模型可以實現(xiàn)比較高的仿真度,利于物業(yè)管理和維修保養(yǎng)人員身臨其境、直觀方便地觀察相應設施。但由于同時要顯示三維模型和相關信息,通常的單屏幕顯示(圖3)用戶體驗不理想,為此我們開發(fā)了可以支持雙屏幕輸出方式(圖4),擴展了工作界面寬度,更寬更廣的顯示效果、不但能容納更多內(nèi)容,而且還能提升操作體驗。
3) 機電設備信息管理
運維管理的BIM模型理想狀態(tài)是竣工的BIM模型,但也可以繼承設計或施工的模型,然后通過模型整理達到運維的要求。不論是何種方式,最終在本系統(tǒng)都需要顯示BIM模型的屬性,利用以下幾個主要的NavisWorks API訪問模型:
·Autodesk.NavisWorks.Api.Application
·Autodesk.NavisWorks.Api.Document
·Autodesk.NavisWorks.Api.Model
·Autodesk.NavisWorks.Api.ModelItem
·Autodesk.NavisWorks.Api.ModelItem
圖3 單屏幕顯示圖2b:雙屏幕顯示
Controls API,NavisWorks圖形驅(qū)動接口,負責三維圖像繪制和顯示,保留了用戶與程序交互的操作模式。借助此接口,可以在程序自身的窗體上,進行NavisWorks文檔的三維顯示,功能需要重新組合,方便開發(fā)三維仿真程序,接口自由度由Navis-Works內(nèi)部管理,程序調(diào)用需要通知NavisWorks核心,而顯示范圍可以在程序上進行規(guī)定。
借助Controls API接口,引用其三維顯示能力,組裝在程序上,與程序內(nèi)部邏輯接口相連接,可以實現(xiàn)機電設備應急管理系統(tǒng)的各種功能。由于是借助于NavisWorks的BIM圖形引擎,隨著其引擎的不斷改進,將會帶來更出色的圖形引擎技術,我們將接口與此先進的圖形引擎接口相連接,從而也就同步改進圖形技術,保證系統(tǒng)在BIM圖形顯示、實時漫游瀏覽的先進性,也極大降低了開發(fā)成本。
SQL Server數(shù)據(jù)庫引擎是用于存儲、處理和保護數(shù)據(jù)的核心服務。利用數(shù)據(jù)庫引擎可控制訪問權限并快速處理事務,從而滿足需要處理大量數(shù)據(jù)的應用需要,具有使用方便、可伸縮性好、與相關軟件集成程度高等優(yōu)點,與WINDOWS操作系統(tǒng)緊密結(jié)合。
NET是微軟的新一代技術平臺,為敏捷商務構建互聯(lián)互通的應用系統(tǒng),這些系統(tǒng)是基于標準的、聯(lián)通的、適應變化的、穩(wěn)定的和高性能的。從技術的角度,一個NET應用是一個運行于.NET Framework之上的應用程序。(更精確的說,一個.NET應用是一個使用.NET Framework類庫來編寫,并運行于公共語言運行時Common Language Runtime之上的應用程序。)
圖4 對象屬性對應的API
具體實現(xiàn)如下:
//當前文檔
Document doc=Application.ActiveDocument;
//第一個模型
Model Model=doc.Models[0];
//模型的根節(jié)點
ModelItem root=Model.RootItem;
//訪問節(jié)點的屬性
boolis_hidden=root.IsHidden;
//選擇集
ModelItemCollectionoModelColl=doc.CurrentSelection.SelectedItems;
訪問BIM模型的對象屬性,可利用如下的API:
·Autodesk.Navisworks.Api.PropertyCategory
·Autodesk.Navisworks.Api.DataProperty
其關系如下圖3:
由于NavisWorks是支持多語言程序,所以屬性名(表1)有如下特點:
·預定義名:
·不隨版本或語言變化
·方便使用
·內(nèi)部名
·不隨版本或語言變化
·顯示名
·最終用戶看見的
·隨版本或語言變化
由于NavisWorks“顯示名”會隨版本和語言變化,所以在程序?qū)崿F(xiàn)上要避免直接使用“顯示名”而使用“預定義名”或“內(nèi)部名”。
對于機電設備應急管理系統(tǒng),每個對象構件的ID是與后臺數(shù)據(jù)庫關聯(lián)的唯一標識,所以上述獲取對象ID的方法尤為關鍵,對于使用Autodesk Revit建立的模型,可以通過以下方法訪問對象屬性:
//通過“預定義名”訪問對應的Category
PropertyCategoryoPC=
oSelectedItem.PropertyCategories.FindCategory-ByName(PropertyCategoryNames.RevitElementId);
//通過“預定義名”訪問對應的DataProperty及其值:
DataProperty prop=
oPC.Properties.FindPropertyByName(DataPropertyNames.ItemName);
string value=prop.Value.ToDisplayString();
4) 二維碼掃描
二維碼,又稱二維條碼,它是用特定的幾何圖形按一定規(guī)律在平面(二維方向)上分布的黑白相間的圖形,可實現(xiàn)的應用十分廣泛,如:網(wǎng)站鏈接、數(shù)據(jù)下載、商品交易、定位/導航、電子憑證。如今智能手機掃一掃功能的應用使得二維碼更加普遍。
在日常的機電設備維護過程里,需要在BIM系統(tǒng)里查找出相應設備的資料,通常要在三維模型里通過空間定位,再在此區(qū)域內(nèi)按照分類進行選取,過程不夠快捷。若然在機電設備上貼上編號,再按此編號進行查詢,可更快捷地得到相應的信息。
我們開發(fā)一套能在智能手機獲取二維碼信息的工具。利用這工具,維護人員將無需手工記錄編號,只要讓手機掃描完畢后,通過更智能的辦法,例如無線網(wǎng)絡,USB接口等方式,把已經(jīng)獲取到的二維碼信息發(fā)送到BIM系統(tǒng)里,系統(tǒng)把設備的相應資料調(diào)出來。
表1
基于智能手機系統(tǒng)已有成熟的開發(fā)平臺,開發(fā)出一套從二維碼掃描,到信息記錄,最終把信息發(fā)送給該系統(tǒng)。維護人員利用安裝了二維條碼掃描的智能手機,把攝像頭對準貼在設備上的二維碼進行拍照,然后分析照片中的二維碼信息,最終把結(jié)果顯示出來,此時可以選擇繼續(xù)為其他設備掃描。當掃描結(jié)果符合設備編號規(guī)范,工具便會把信息記錄下來。用戶可以在歷史記錄里查找,這里有相片和日期可以分辨出設備之間的不同。當用戶查找到需要獲取BIM信息的記錄后,可以選擇發(fā)送到該系統(tǒng),此功能在WIFI模式下使用TCP/IP協(xié)議把數(shù)據(jù)傳送到安裝有該系統(tǒng)的電腦上,即可完成數(shù)據(jù)傳遞。當然我們也會考慮到現(xiàn)場工作環(huán)境的復雜,當沒有網(wǎng)絡可用時,還可以同過USB連接方式來上傳二維碼信息。以下是智能手機掃描二維碼的實現(xiàn)方法:
//啟動拍攝
CodeScancs=new CodeScan();
//初始化攝像頭
Camera ca=cs.Camera.Init();
//啟動攝像頭
ca.Action();
//分析二維碼
Decode de=new Decode();
//獲取結(jié)果
String result=de.GetResultBy(ca.CurrentPicture);
//保存記錄
DBContextdb=new DBContext();
db.AddRecord(result,DataTime.Now,ca.CurrentPicture);
//初始化服務器
Server se=new Server(IPScan.GetIpBy(4567));
//讀取記錄
Record re=db.GetRecordById(1);
//發(fā)送
Boolean isSended=se.Receive(re);
se.End();
5) 故障及上游設備查詢
一條完整的管道系統(tǒng)被看作為有向鏈表,設備則是鏈表的節(jié)點,為一個設備添加直屬上下級,就是在鏈表中添加節(jié)點,而關系則是鏈表方向,利用鏈表算法,就可以快速查找節(jié)點的子孫節(jié)點或者祖先節(jié)點。如一個設備需要更換,則可通過鏈表算法查找出受影響的其他設備。上下游關系原則如下(圖5):
·一個設備不能添加自身為任何關系;
·兩個設備之間只能存在一種關系;
·A設備是B設備的子孫,則A設備不能是B的祖先,反之亦是;
·一個設備可以有多個上級或者下級設備。
圖5 設備上下游邏輯關系原則
該系統(tǒng)基于圖4的邏輯關系原則,利用BIM模型和BIM數(shù)據(jù)庫技術建立機電設備之間的邏輯關系,利用鏈表算法,遞歸出該設備所有子孫設備,從而得到受影響設備列表(圖6)。
圖6 機電設備上下游關系
6) 相關圖紙文檔管理
傳統(tǒng)的運維管理主要依賴與資質(zhì)的資料,即使有電子文檔也大多數(shù)沒有集成管理,導致資料查詢費時費力,甚至由于時間太久資料缺失,一旦發(fā)生故障需要查閱相關資料時卻無法及時獲取?;贐IM的機電設備應急管理系統(tǒng),利用BIM技術的信息集成優(yōu)勢,結(jié)合關系型數(shù)據(jù)庫技術,可以較好地解決這個問題。
該系統(tǒng)每個設備都可以攜帶著屬于自身的電子文檔,在實際操作中將統(tǒng)一稱為附件。這些附件可以是說明書、相關證件、相關記錄等等,以附件形式上傳到數(shù)據(jù)庫中進行保存,以便管理和隨時查看(圖7)。
圖7 模型與相關圖紙關聯(lián)顯示
基于BIM的機電設備應急管理目前還沒有成熟的成品,我們在目前的軟硬件條件下,嘗試選擇了Autodesk NavisWorks作為BIM平臺,后臺數(shù)據(jù)庫采用Microsoft SQLSever,利用Microsoft.NETFramework 進行開發(fā),在武漢國際博覽中心展館(建筑面積45萬m2,該項目為華中科技大學BIM工程中心和廣州優(yōu)比建筑咨詢有限公司聯(lián)合服務項目)中應用。完成后的BIM模型文件容量為7GB,總構件對象44萬個,其中機電對象23萬個,在NavisWorks里模型的面數(shù)量為1.3億個,在以下軟硬件配置下實現(xiàn)了良好的運行性能:
·操作系統(tǒng):Windows 7 64bit
·CPU:四核、主頻2.8GHz
·內(nèi)存:8GB
·硬盤:12GB可用空間
·顯卡:1 GB獨立顯卡
·雙屏顯示:1920X1080顯示器
基于BIM的機電設備應急管理系統(tǒng)從軟件實現(xiàn)的角度,在目前軟硬件條件下,其中比較關鍵的是大型復雜項目三維BIM模型的圖形顯示技術和機電設備管線上下游邏輯關系建立和檢索兩項技術,由于要處理的BIM模型信息量巨大,而目前軟硬件的性能有限,我們選擇了目前技術比較成熟的Autodesk NavisWorks作為BIM圖形平臺,在大型BIM模型顯示、實時漫游瀏覽的性能方面達到了較好的性能。在處理機電設備管線上下游邏輯關系的關鍵技術上,自定義了機電設備管線零件的邏輯關系數(shù)據(jù)格式,并獨立于BIM模型映射到Microsoft SQL Sever數(shù)據(jù)庫中,實現(xiàn)高效的上下游檢索,通過映射關系實現(xiàn)BIM模型與數(shù)據(jù)庫關聯(lián),較好地解決了BIM模型數(shù)據(jù)與機電設備應急管理數(shù)據(jù)的融合,嘗試基于BIM的機電設備應急管理系統(tǒng)實現(xiàn)的其中一種途徑。
[1]廣州優(yōu)比建筑咨詢有限公司.《優(yōu)比BIM建設項目設備管線應急維護管理系統(tǒng)》,軟件著作權申請資料,2011
[2]葛清等.《BIM第一維度——項目不同階段的BIM應用》,中國建筑工業(yè)出版社,2013
[3] Autodesk Navisworks 2013.NET APIReference Guide
[4]秦洪現(xiàn),崔惠嵐,孫劍等.《Autodesk系統(tǒng)產(chǎn)品開發(fā)培訓教程》,化工工業(yè)出版社,2008
[5]陳威兵,張剛林,黃飛江.《基于手機的二維條碼識讀系統(tǒng)研究與開發(fā)》,現(xiàn)代電子技術期刊論文2012
[6] Reto Meier.《Professional Android 2 Application Development》,2010
[7] Jesse Storimer.《Working with TCP Sockets》,圖靈程序設計叢書,2013
[8] Wallace B.McClure,Nathan Blevins.《Professional Android Programming with Mono for Android and.NET/C#》,移動與嵌入式開發(fā)技術,2013