范 宇 力 輝 楊杰仁 楊 睿
(1.北京城建設計發(fā)展集團股份有限公司成都分院,四川 成都 610031; 2.晨越建設項目管理集團股份有限公司,四川 成都 610031)
建筑行業(yè)的變革離不開數(shù)字信息化技術,從最原始的手工繪圖到CAD的應用[1],建筑行業(yè)完成了一次質的飛越。隨著行業(yè)的發(fā)展,工程多樣化和復雜化的特點日漸明顯[2],傳統(tǒng)的二維設計中經常出現(xiàn)信息錯誤和相互矛盾[3],影響工程施工。在此背景下,BIM技術應運而生,建筑行業(yè)領域正迎來第二次技術革新,由傳統(tǒng)的二維設計轉向三維空間立體設計[4]。基于此,Autodesk公司的Revit軟件產品以其智能化和便捷化特點在建筑領域得到廣泛應用[5]。但由于國內外行業(yè)習慣的不同,Revit中某些功能具有局限性,影響工作效率,而其中標注功能尤為突出。
標注可以把圖紙模型中的各個構件的尺寸、材質等信息直觀有效的表現(xiàn)出來。由于Revit為國外軟件,Revit自帶的引線標注方式和國內行業(yè)的標注習慣有所差異,使用Revit自帶的注釋功能對梁、柱進行標注的效果如圖1所示。
Revit系統(tǒng)自帶的注釋功能有兩個顯而易見的缺點:
1)文字下方無下劃線,不符合國內標注規(guī)范。
2)標注引線起點位置固定(默認為構件中心),挪動標注位置時該點不會移動,造成諸多不便。
因此為了使Revit更好地適應國內行業(yè)設計和工作流程,使其操作和標準效果符合行業(yè)繪圖習慣及規(guī)范,需對Revit進行二次開發(fā)。
Revit API,指的是Revit Application Programming Interface,常稱為Revit應用程序開發(fā)[6]。Revit系列的建筑、結構、設備三個產品都有對應的API,這些API被整合成一個總的API包,稱為Revit API[7]。
Revit API包括一些基本主題:插件集成(Add-in Integration),在Revit中必須對插件進行注冊后才能進行調用[8]。Revit應用類和文檔類(Application and Document),主要包括Application,UIApplication,Document和UIDocument這幾類,一個Revit應用對象對應一個獨立的Revit會話,用戶可以通過這個對象訪問Revit文檔、選項以及其他應用范圍的數(shù)據(jù)和設置。元素集(Elements-Essentials),主要包括各類元素的類別、機制和特征等;過濾器(Filtering),就是從文件中過濾出所需要的元素;選擇集(Selection),就是使用文檔中選中的元素的集合;參數(shù)(Parameters),大多數(shù)的元素信息都是被當做參數(shù)進行存儲的;使用Revit API可以對Revit族進行創(chuàng)建和修改,以及對一些族實例進行應用載入。
Revit2014是基于.NET 4.0的運行環(huán)境,所以需要使用Visual Studio 2010或者更高的版本,用.NET 4.0環(huán)境來編譯。
Revit開發(fā)工具還有很多,例如RevitSDK,這是一個Revit API的幫助文檔,里面包含了許多帶源代碼的例子,可供用戶學習使用。RevitLookup是Autodesk開發(fā)的插件,不用寫代碼就可以直觀的看到API的對象,它包含在SDK的壓縮包中,可以拿到源代碼之后自己進行編譯;AddinManager也是Autodesk的官方插件,也包含在SDK文件中,它可以在不重啟Revit的情況下修改插件代碼并再次加載運行[9]。
一個完整的標注可拆分為標注引線、標注文字、文字下劃線三部分組成,因此需要解決引線和文字的創(chuàng)建、讀取標注構件信息、信息賦值等問題。
引線、文字創(chuàng)建有多種方法,常用三種方法如表1所示。
以上三種方法都存在部分缺點,借鑒上述方法中的核心思想,本文提出了一種新的標注創(chuàng)建方法:通過Revit UI新建標簽族,為文字下方添加橫線后再次通過Revit API載入進行編輯。該方法的優(yōu)點為:
1)與行業(yè)標注習慣相符,下劃線長度可根據(jù)標注文字字符串長度自動調節(jié);
2)下劃線與標注文字為同一組,移動方便。
通用標注習慣中標注文字內容為當前族類型名稱,如底縱梁-1 500×2 600。則思路轉變?yōu)樽x取當前選中族類型的名稱。
表1 常用引線、文字創(chuàng)建方法
具體過程為先從FamilyInstance獲取FamilySymbol,然后從FamilySymbol.Family拿到對應的族,最后調用Name屬性。但是對于系統(tǒng)族是獲取不到Family的,可根據(jù)CeilingType.FamilyName獲得其名稱。
為將獲取的族類型名稱賦予到標簽族文字中,需找到標簽族中標注文字的ParameterName。RevitLookup是Autodesk平臺開發(fā)的一款不用寫代碼就可以直觀地看到API對象的插件。使用RevitLookup可很輕松的查找到標注文字的ParameterName,將讀取到的族類型名稱賦到標簽族文字中便實現(xiàn)了標注功能。代碼如下:
string parameterName = "注釋上標";
Parameter topdimname = fi.LookupParameter(parameterName);
string text = symbolname;
topdimname.Set(text)。
使用RevitLookup讀取標簽族中下劃線名稱,根據(jù)標注文字字符串長度對下劃線長度重新賦值。
采用對標簽族二次開發(fā)后的插件標注效果如圖2所示。
標注效果符合國內行業(yè)習慣,且引線長度根據(jù)文字長度自動調節(jié),文字內容也可再次進行修改。
本文通過對比分析幾種常用創(chuàng)建引線及文字的方法優(yōu)缺點,借鑒其思想,提出采用Revit UI新建標簽族,再通過Revit API載入進行編輯的新思路,以UI與API相結合的方式創(chuàng)建引線標注插件。該標注插件能夠滿足設計工作中對于標注的需要,大大提高工作效率。開發(fā)過程及思路可為行業(yè)其他領域的二次開發(fā)提供借鑒。