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