胡宏彪 (江蘇建筑職業(yè)技術(shù)學(xué)院建筑管理學(xué)院,江蘇 徐州 221116)
三維建模軟件是BIM技術(shù)的核心工具,Autodesk公司的Revit軟件因其功能強大,適用專業(yè)廣泛,在我國正逐漸成為主要的三維建模工具[1],從事BIM工作的人員基本都要接觸使用這款軟件。使用Revit進(jìn)行三維建模的第一步是創(chuàng)建標(biāo)高線,可是,使用手工方式創(chuàng)建標(biāo)高線時,由于該軟件的人機交互設(shè)計不夠友好,既沒有標(biāo)準(zhǔn)的操作流程,也沒有清晰的指引界面,初學(xué)者往往要根據(jù)教材反復(fù)練習(xí),才能記住操作步驟;而且,由于是國外公司開發(fā)的產(chǎn)品,行業(yè)標(biāo)準(zhǔn)和標(biāo)注習(xí)慣都與國內(nèi)有所不同,還要通過人工對標(biāo)高線的標(biāo)識進(jìn)行大量修改,才能適合國內(nèi)制圖要求,使得使用人員一開始就感到Revit的學(xué)習(xí)成本高、繪圖效率低。所以,對Revit中標(biāo)高線自動生成的開發(fā)技術(shù)進(jìn)行研究,建立標(biāo)高線自動創(chuàng)建工具,可以降低BIM技術(shù)中建模工作的難度,使得BIM技術(shù)更容易在實際工作中被接受。
創(chuàng)建標(biāo)高線時,用戶需要輸入的基本信息是標(biāo)高高度數(shù)值和標(biāo)高名稱,因為BIM技術(shù)的建模特點是要求項目的各項信息都集中于一個三維模型中,在房屋建筑的三大專業(yè)——建筑、結(jié)構(gòu)、設(shè)備中,建筑與結(jié)構(gòu)專業(yè)是有各自獨立的標(biāo)高系統(tǒng)的,而設(shè)備專業(yè)是依賴于這兩個專業(yè)的標(biāo)高系統(tǒng),所以,建筑專業(yè)和結(jié)構(gòu)專業(yè)的標(biāo)高系統(tǒng)都要集中在一個項目文件中,這個項目文件就可以一次性提供給三大專業(yè),但為了以后使用方便,需要把建筑與結(jié)構(gòu)專業(yè)的標(biāo)高用不同的標(biāo)記區(qū)分開。Revit中允許在標(biāo)高名稱上加上前綴和后綴,本設(shè)計主要利用前綴和后綴對建筑標(biāo)高和結(jié)構(gòu)標(biāo)高進(jìn)行區(qū)分,如:建筑標(biāo)高線的前綴為“建筑”,后綴用“F”表示樓層;結(jié)構(gòu)標(biāo)高線的前綴為“結(jié)構(gòu)”,后綴用“層”,這樣就可以從標(biāo)識上對兩個系統(tǒng)的標(biāo)高進(jìn)行明顯區(qū)分了,不過為了滿足用戶靈活使用的要求,創(chuàng)建標(biāo)高線時,名稱的前綴和后綴由用戶自行輸入確定,這樣創(chuàng)建時需要的基本信息就是標(biāo)高數(shù)值、標(biāo)高名稱、名稱前綴、名稱后綴。
標(biāo)高線自動生成還要實現(xiàn)的一個重要功能,是針對房屋中的標(biāo)準(zhǔn)層進(jìn)行批量創(chuàng)建樓層標(biāo)高線,這是實際工作中最突出的需求點。所以,在基本信息的基礎(chǔ)上,再加入樓層數(shù)量和樓層高度兩個信息,如用戶輸入這兩個信息,就以基本信息中的標(biāo)高數(shù)值為起始標(biāo)高,以樓層高度為遞增值,創(chuàng)建指定樓層數(shù)量的標(biāo)高線,最終,用戶輸入界面設(shè)計如圖1所示。
圖1 交互界面設(shè)計圖
該用戶界面的設(shè)計簡潔明了,指向清晰,當(dāng)只在基本信息欄內(nèi)填入數(shù)據(jù)時,就默認(rèn)為只創(chuàng)建一條標(biāo)高線,在填入基本信息的基礎(chǔ)上,再填入批量創(chuàng)建欄里的信息,就默認(rèn)為要進(jìn)行批量創(chuàng)建標(biāo)高線。
Autodesk Revit系列的所有產(chǎn)品都提供 API(Application Programming Interface應(yīng)用程序編程接口),用戶可以通過API將應(yīng)用程序集成到Revit中[2]?;赗evitAPI,用戶可以開發(fā)插件來擴展和增強Revit的功能和應(yīng)用,用戶需要在自己的插件中實現(xiàn)特殊的接口,這些接口包括IExternalCommand、IExternalApplication和IExternalDBApplication。IExternalCommand是用戶通過外部命令擴展Revit時必須實現(xiàn)的接口;IExternalApplication是用戶通過外部應(yīng)用擴展Revit是必須實現(xiàn)的接口;IExternalDBApplication是用戶進(jìn)行數(shù)據(jù)庫級別事件處理時要實現(xiàn)的接口。在Revit中調(diào)用插件需要對插件進(jìn)行注冊,Revit通過后綴名為.addin的文件實現(xiàn)注冊,Revit會在啟動時自動搜索指定目錄中的.addin文件并進(jìn)行加載。
Revit的基本開發(fā)流程為:首先創(chuàng)建一個類庫(Class Libriary)項目,在這個類庫項目上添加兩個引用:RevitAPI.dll和RevitAPIUI.dll,在程序中添加命名空間 Autodesk.Revit.UI、Autodesk.Revit.DB,在程序中添加事件屬性,建立一個IExternalCommand的派生類,在Execute()函數(shù)中通過編寫代碼進(jìn)行重載實現(xiàn)需要的功能[3],開發(fā)流程見圖2所示。
根據(jù)前面的開發(fā)思路,程序編制思路如下:
圖2 Revit基本開發(fā)流程圖
程序中調(diào)用RevitAPI的主要語句如下:
創(chuàng)建標(biāo)高線的語句:Level level=Level.Create(document,elevation);
給標(biāo)高線命名的語句:level.Name="New level"。
在Revit插件工具開發(fā)中,交互界面的設(shè)計也是非常重要的技術(shù)內(nèi)容,因為作為人和計算機進(jìn)行信息交換的通道,友好美觀的交互界面可以給用戶提供舒適的操作體驗[4]。在本研究中,選擇使用WPF技術(shù)開發(fā)插件的交互界面。WPF為Windows Presentation Foundation的首字母縮寫,中文譯為“Windows呈現(xiàn)基礎(chǔ)”,它是微軟新一代圖形系統(tǒng),運行在.NET Framework 3.0及以上版本中。使用WPF創(chuàng)建交互界面,就是通過在創(chuàng)建窗口后填充入相應(yīng)控件來實現(xiàn)設(shè)計意圖,首先要選擇布局控件,根據(jù)圖1所示的界面設(shè)計,選擇Grid控件進(jìn)行布局,在該布局中子控件按行和列進(jìn)行排列,稱為網(wǎng)格化布局,界面中文字信息使用Labal控件,輸入框使用TextBox控件,確定按鈕使用Button控件。
可擴展應(yīng)用程序標(biāo)記語言(XAML)是一種基于XML的標(biāo)記語言,以聲明形式實現(xiàn)應(yīng)用程序的外觀,在WPF中通常用它創(chuàng)建窗口、對話框、頁和用戶控件,并填充控件、形狀和圖形。
使用XAML建立網(wǎng)格的命令語句為:
使用XAML建立文字信息的命令語句示例如下:
使用XAML建立按鈕的命令語句示例如下:
通過對以上開發(fā)技術(shù)的研究,制作出了一個標(biāo)高線自動生成的Revit工具插件,并以一個常見的剪力墻結(jié)構(gòu)的住宅樓為例進(jìn)行項目實際操作驗證,該住宅樓的樓層標(biāo)高及層高如下表所示,±0.000標(biāo)高相當(dāng)于絕對高程76.90m。
先運行Revit軟件,新建一個構(gòu)造項目,選擇“附加模塊”,再點擊“外部工具”,即可找到該插件。一層樓面標(biāo)高線即為已存在的±0.000標(biāo)高線,不要創(chuàng)建了,創(chuàng)建地下二層、地下一層、二層的標(biāo)高線時,因?qū)痈卟灰?,需要逐個創(chuàng)建,以地下二層創(chuàng)建為例,如圖3所示,輸入相對標(biāo)高數(shù)值-7.92m,輸入標(biāo)高名稱“地下二”,輸入名稱前綴“結(jié)構(gòu):”,輸入名稱后綴“層”,點擊確定,生成標(biāo)高線如圖4所示。
地上3~23層為標(biāo)準(zhǔn)層,層高都為2.90m,可進(jìn)行批量創(chuàng)建,如圖5所示,在標(biāo)高數(shù)值中輸入第三層樓面相對標(biāo)高7.90m,輸入標(biāo)高名稱“三”,輸入名稱前綴“結(jié)構(gòu):”,輸入名稱后綴“層”,在批量創(chuàng)建欄中:輸入樓層數(shù)量“21”,輸入樓層高度“2.90”,點擊確定,生成標(biāo)高線如圖6所示。
本文通過對Revit中標(biāo)高線自動生成的開發(fā)技術(shù)進(jìn)行了研究,并用一個工程實例進(jìn)行了驗證,得到如下結(jié)論:
圖3 創(chuàng)建地下二層標(biāo)高線時輸入信息
圖4 地下二層標(biāo)高線生成
某住宅樓樓層標(biāo)高及層高表
圖5 批量創(chuàng)建標(biāo)高線輸入信息
圖6 批量生成標(biāo)高線
①對BIM軟件進(jìn)行二次開發(fā)可以降低工作難度,提高工作效率,專業(yè)插件的大量開發(fā)與使用是促進(jìn)BIM技術(shù)在我國推廣應(yīng)用的有效途徑;
②進(jìn)行插件開發(fā),要注意分析研究專業(yè)中的工作需求和使用人員的行為習(xí)慣,功能設(shè)計上要貼合專業(yè)內(nèi)容,操作設(shè)計上要適應(yīng)用戶思維習(xí)慣;
③要重視插件的交互界面設(shè)計,交互界面里內(nèi)容要盡量簡化,界面里的操作引導(dǎo)要非常明確。