徐 迪
(上海建筑設(shè)計(jì)研究院有限公司,上海 200041)
建筑活動(dòng)是一個(gè)長期、復(fù)雜甚至循環(huán)往復(fù)的過程,任何在這過程中的遺漏或錯(cuò)誤都有可能使整個(gè)過程變得更加復(fù)雜或使結(jié)果存在不安全因素,從而造成很多不必要的浪費(fèi)。相關(guān)資料顯示,建筑活動(dòng)消耗了人類所使用的自然資源總量和能源總量的40%,同時(shí)產(chǎn)生了占人類活動(dòng)產(chǎn)生垃圾總量的40%。根據(jù)美國05至07年建筑行業(yè)的統(tǒng)計(jì),38%的碳排放量來自建筑物,30%的項(xiàng)目不能按期按預(yù)算完成,92%施工企業(yè)認(rèn)為建筑師給的圖紙不清楚,37%材料在施工中被浪費(fèi)。據(jù)統(tǒng)計(jì),我國現(xiàn)有建筑中單位建筑面積能耗是發(fā)達(dá)國家的2至3倍,對(duì)社會(huì)造成了沉重的能源負(fù)擔(dān)和嚴(yán)重的環(huán)境污染;同時(shí)建設(shè)中還存在土地資源利用率低、水污染嚴(yán)重、建筑耗材高等問題。這些已經(jīng)成為制約我國可持續(xù)發(fā)展的突出問題。根據(jù)《“十二五”建筑節(jié)能專項(xiàng)規(guī)劃(征求意見稿)》,到“十二五”期末,建筑節(jié)能將形成1.16億噸標(biāo)準(zhǔn)煤節(jié)能能力。因此,如何實(shí)現(xiàn)建筑結(jié)構(gòu)設(shè)計(jì)符合國家可持續(xù)發(fā)展戰(zhàn)略已經(jīng)成為時(shí)下的重要課題。
所有發(fā)達(dá)和較發(fā)達(dá)國家都把GDP的一個(gè)很大比例投資在固定資產(chǎn)的規(guī)劃、設(shè)計(jì)、施工、運(yùn)營、維護(hù)、更新、拆除等工作上,在這個(gè)過程中,很大比例的工程建設(shè)項(xiàng)目遭遇到工期拖延、造價(jià)突破預(yù)算的問題。要求全球工程建設(shè)行業(yè)提高工作效率的壓力越來越大。根據(jù)美國有關(guān)部門的研究表明,建筑業(yè)的浪費(fèi)高達(dá)57%,而制造業(yè)為26%[1]。如果把這種測算方法放到中國,我國固定資產(chǎn)規(guī)模約為10萬億人民幣,其中60%依靠基礎(chǔ)建設(shè)完成,按照美國建筑科學(xué)研究院的資料來計(jì)算,那么通過技術(shù)和管理水平提升可以節(jié)約的建設(shè)投資將是驚人的。因此,建筑信息模型成為時(shí)下國內(nèi)工程領(lǐng)域的熱門話題。
市面上BIM軟件數(shù)量眾多,其中要數(shù)Autodesk公司的Revit系列軟件功能可拓展性最好,應(yīng)用程序接口也較為成熟。Revit強(qiáng)大的建模工具和全面準(zhǔn)確的建筑數(shù)據(jù)為建筑信息化打下了很好的基礎(chǔ)。
Revit系列軟件包括Revit Structure、Revit Architecture和Revit MEP。Revit軟件是用于進(jìn)行建筑信息模型的結(jié)構(gòu)設(shè)計(jì)平臺(tái),它是一個(gè)設(shè)計(jì)和記錄系統(tǒng),支持建筑項(xiàng)目所需的設(shè)計(jì)、圖紙和明細(xì)表。建筑信息模型可提供用戶需要使用的有關(guān)項(xiàng)目設(shè)計(jì)、范圍、數(shù)量和階段等信息。在Revit模型中,所有的圖紙、二維視圖和三維視圖以及明細(xì)表都是同一個(gè)基本建筑模型數(shù)據(jù)庫的信息表現(xiàn)形式。在圖紙視圖和明細(xì)表視圖中操作時(shí),Revit軟件將收集有關(guān)建筑項(xiàng)目的信息,并在項(xiàng)目的其他所有表現(xiàn)形式中協(xié)調(diào)該信息。Revit參數(shù)化修改引擎可自動(dòng)協(xié)調(diào)在任何位置進(jìn)行的修改,即整體結(jié)構(gòu)模型將隨模型某一處的修改而協(xié)調(diào)改變,就是所謂的參數(shù)化模型。Revit系列軟件還提供了可以擴(kuò)展產(chǎn)品功能的應(yīng)用程序編程接口—Revit API,通過這個(gè)接口用戶可以通過編程實(shí)現(xiàn)定制功能,而且用戶可以使用API定義在Revit中運(yùn)行的宏,宏功能可通過Revit VSTA附加模塊提供給Revit。由于其強(qiáng)大的二次開發(fā)功能以及與BIM理念的良好結(jié)合,使得Revit二次開發(fā)成為當(dāng)前各大軟件廠商的工作重點(diǎn)。
在國外基于Revit平臺(tái)的二次開發(fā)產(chǎn)品已經(jīng)多達(dá)百種,而國內(nèi)對(duì)Revit二次開發(fā)還處于起步階段,不過已經(jīng)有越來越多的學(xué)者和公司開始做這方面的研究開發(fā)工作。中國建筑科學(xué)研究院和同濟(jì)大學(xué)合作,通過開發(fā)的基于ASIM模型信息轉(zhuǎn)換平臺(tái),實(shí)現(xiàn)了Revit模型導(dǎo)入PKPM進(jìn)行結(jié)構(gòu)分析,為基于BIM的協(xié)同設(shè)計(jì)和集成建筑工程軟件的開發(fā)提供技術(shù)支持。2011年,東經(jīng)天元公司開發(fā)的R-StarCAD在一定程度上標(biāo)志著國內(nèi)Revit二次開發(fā)逐漸成長。R-StarCAD實(shí)現(xiàn)了Revit與PKPM的數(shù)據(jù)相互轉(zhuǎn)換,填補(bǔ)了國內(nèi)大眾結(jié)構(gòu)設(shè)計(jì)軟件與國際BIM軟件數(shù)據(jù)交互的空白。同年,北京盈建科軟件有限責(zé)任公司開發(fā)的盈建科建筑結(jié)構(gòu)設(shè)計(jì)軟件系統(tǒng)(YJK)也面市了。盈建科建筑結(jié)構(gòu)設(shè)計(jì)軟件提供了與PKPM、Etabs、Midas、AutoCAD以及Revit軟件的模型數(shù)據(jù)接口。
1)實(shí)現(xiàn)快速建模功能;
2)實(shí)現(xiàn)高效項(xiàng)目文檔輸出;
3)實(shí)現(xiàn)模型快速導(dǎo)入結(jié)構(gòu)分析軟件;
4)實(shí)現(xiàn)Revit SDK實(shí)例功能的改進(jìn)和集成;
5)實(shí)現(xiàn)其他個(gè)性化需求。
通過本插件系統(tǒng),設(shè)計(jì)人員可以快速將已有PKPM模型在Revit中進(jìn)行重建,減少重復(fù)工作,利用Revit優(yōu)秀的三維建模功能為后期設(shè)計(jì)提供便利,同時(shí)可以一鍵輸出項(xiàng)目文檔。結(jié)構(gòu)設(shè)計(jì)師可以利用其中的數(shù)據(jù)轉(zhuǎn)換功能,將Revit模型導(dǎo)入3D3S鋼結(jié)構(gòu)分析軟件,實(shí)現(xiàn)高效的模型傳遞,將結(jié)構(gòu)工程師從反復(fù)的建模工作中解放出來。
本系統(tǒng)是基于Revit 2011版本,主要開發(fā)工具為 Visual Studio 2008、Revit API和 Revit SDK。
Visual Studio(簡稱VS)是微軟公司推出的開發(fā)環(huán)境,Visual Studio可以用來創(chuàng)建 Windows平臺(tái)下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。Visual Studio 2008是在Visual Studio 2005的基礎(chǔ)上,在快速的應(yīng)用程序開發(fā)、高效的團(tuán)隊(duì)協(xié)作和突破性的用戶體驗(yàn)三方面進(jìn)行了關(guān)鍵改進(jìn)后面市的。
發(fā)展至今Revit API發(fā)生了顯著的變化。最開始API只能訪問文檔中的對(duì)象,在后續(xù)版本中逐漸增加了用戶選擇交互API,文檔級(jí)別的事件API機(jī)制,對(duì)象的過濾API和族創(chuàng)建API等。API數(shù)量大幅度遞增,涵蓋的功能也越來越強(qiáng)。借助于API,第三方軟件提供商可以擴(kuò)充Revit系列軟件的功能,提供在建筑生命周期中所需要的解決方案。三個(gè)產(chǎn)品的API非常相似,因此它們被集成到一個(gè)總的API:Autodesk Revit2011 API。通過 Revit API,用戶可以用插件實(shí)現(xiàn)自動(dòng)完成重復(fù)的工作,自動(dòng)檢測錯(cuò)誤以強(qiáng)制產(chǎn)品設(shè)計(jì)規(guī)范,獲取工程數(shù)據(jù)來分析或者生成報(bào)告,導(dǎo)入外部數(shù)據(jù)來創(chuàng)建新元素或設(shè)置參數(shù),集成其他應(yīng)用程序包括分析軟件到Autodesk Revit產(chǎn)品,自動(dòng)創(chuàng)建 Autodesk Revit產(chǎn)品文檔等功能。
在Revit API中,頂層類對(duì)象是 Application和Document,其中數(shù)據(jù)模型是一個(gè)多文檔的類似于Microsoft Office的模式。Application對(duì)象代表著當(dāng)前與之交互的Revit程序,可以通過它來操作當(dāng)前打開的所有文檔以及Revit中的一些設(shè)置。Document對(duì)象代表一個(gè)打開的 Revit文檔(.rvt,.rfa),可以通過它操作當(dāng)前文檔中的各種元素。Application類、Document類以及Element類的相互關(guān)系如圖1所示。Element類又包含了 Model、View、Group、Annotation、Sketch以及 Information等子類,如圖 2所示。
Revit API2011是在Revit API2010的基礎(chǔ)上對(duì)動(dòng)態(tài)模型更新、單元改變事件、API失效、空轉(zhuǎn)事件、錯(cuò)誤處理等方面改進(jìn)并新增功能后面市的。
Revit SDK是Autodesk官方提供的包含完整客戶端API庫、文檔及實(shí)例代碼的綜合文件庫。
XD-Revit 建筑結(jié)構(gòu)輔助建模工具箱(英文簡稱XD Tool)是以開發(fā)者姓名拼音的首個(gè)字母開頭命名的,以C#為主要編程語言,以Visual Studio 2008為開發(fā)平臺(tái),集225個(gè)功能于一體的建模輔助工具箱Revit插件工具箱共有21個(gè)模塊,包括 Basics,Geometry,Parameters,Elements,F(xiàn)amilies,Materials,Annotation,Views,Rooms/Spaces,Structure,Architecture,MEP,Reconstruction,Converter,Create,Massing,Selection,Data Exchange,F(xiàn)amilyTools,AddFunction,Labs,界面如圖3所示。
圖2 Element分類
由于集成了Revit SDK中的較多功能,且多為小功能,因此本文主要介紹系統(tǒng)的三大功能。
三維模型重建模塊的主要功能是通過逐層導(dǎo)入DXF格式的結(jié)構(gòu)平面簡圖在Revit環(huán)境中自動(dòng)生成三維實(shí)體模型。利用PKPM結(jié)構(gòu)分析軟件生成的結(jié)構(gòu)平面簡圖在Revit中進(jìn)行三維模型重建的程序?qū)崿F(xiàn)策略可以概括地表示為圖4所示。
圖4 結(jié)構(gòu)平面簡圖三維模型重建的實(shí)現(xiàn)策略
根據(jù)拓?fù)潢P(guān)系,重建策略可以簡略地概括為:繪圖比例→梁截面→柱截面→梁位置→梁實(shí)體重建→柱位置→柱實(shí)體重建。
(1)繪圖比例:PKPM軟件生成的結(jié)構(gòu)平面簡圖比例為1∶1 000,而Revit中繪圖比例為1∶1,因此在進(jìn)行三維重建過程中必須考慮到這一點(diǎn),應(yīng)該利用Revit API將從DXF文件中讀取的各點(diǎn)坐標(biāo)放大1 000倍,以便在Revit中生成實(shí)際尺寸的三維模型。Revit默認(rèn)以坐標(biāo)原點(diǎn)作為導(dǎo)入基點(diǎn),因此可不作考慮。
(2)梁截面:梁截面尺寸描述為文本信息,例如200×400,因此只要對(duì)DXF文件中實(shí)體段關(guān)鍵字為TEXT的實(shí)體進(jìn)行讀取,MTEXT為多行文本可不作考慮。通過對(duì)DXF文件中匹配關(guān)鍵字,然后由相關(guān)的組碼獲得對(duì)應(yīng)的組值。對(duì)于梁與其截面尺寸文本信息的匹配,主要方法是在梁線中點(diǎn)的右下方或左下方設(shè)置搜索區(qū)域,將搜索到的TEXT實(shí)體與之匹配。針對(duì)DXF文件每行輸出的特性,利用C#對(duì)DXF文件逐行讀取。首先查找組碼“0”,然后判斷其下一行是否為“TEXT”,如果返回結(jié)果為是,則繼續(xù)依次查找組碼“10”、“20”和“1”,如果返回結(jié)果為否,則繼續(xù)往下查找。其中查找結(jié)果存儲(chǔ)在中間數(shù)組中,存儲(chǔ)文字信息的坐標(biāo)值和文字內(nèi)容。
(3)柱截面:柱截面描述在DXF文件中位于實(shí)體段關(guān)鍵字為3DFACE的實(shí)體中。首先查找組碼“0”,然后判斷其下行是否為“3DFACE”,如果返回結(jié)果為是,則依次查找組碼“10”、“20”、“11”、“21”、“12”、“22”、“13”及“23”,并將查找結(jié)果存儲(chǔ)于中間數(shù)組中,存儲(chǔ)矩形柱截面的四個(gè)點(diǎn)坐標(biāo)值,如果返回結(jié)果為否,則繼續(xù)往下查找。
(4)梁位置:根據(jù)梁線(LINE)的兩個(gè)端點(diǎn)能夠確定梁的水平位置;垂直位置可以通過將梁限制條件中的參照標(biāo)高設(shè)置為上一層標(biāo)高,或?qū)⒘浩鹗紭?biāo)高偏移確定。查找方法與上述類似,首先查找組碼“0”,然后判斷其下行是否為“LINE”,如果返回結(jié)果為是,則依次查找組碼“10”、“20”、“11”及“21”,得到梁線兩個(gè)端點(diǎn)的坐標(biāo)值,如果返回結(jié)果為否,則繼續(xù)往下查找。
(5)柱位置:由上述查找結(jié)果中的4個(gè)點(diǎn)坐標(biāo)得到柱截面中心點(diǎn)坐標(biāo),以此確定柱的水平位置;垂直位置可以默認(rèn)創(chuàng)建,即柱底面限制標(biāo)高為當(dāng)前視圖標(biāo)高,頂部限制標(biāo)高為上一層標(biāo)高(Revit中創(chuàng)建柱的默認(rèn)條件)。
三維模型重建(Reconstruction)模塊界面如圖5所示。
模型轉(zhuǎn)換模塊的功能是將Revit模型導(dǎo)出至鋼結(jié)構(gòu)建模分析軟件3D3S。由于Revit Structure不具有結(jié)構(gòu)分析功能,因此需要將Revit模型導(dǎo)入相關(guān)分析軟件進(jìn)行結(jié)構(gòu)分析。模型轉(zhuǎn)換模塊功能的實(shí)現(xiàn)原理是利用Revit導(dǎo)出的IFC文件轉(zhuǎn)換為3D3S軟件可讀的文本文件。
圖5 Reconstruction模塊界面
本模塊提供了兩種模型導(dǎo)出方式:導(dǎo)出當(dāng)前Revit文件和導(dǎo)出已有的IFC文件,模塊主界面如圖6所示。導(dǎo)出當(dāng)前Revit文件的實(shí)質(zhì)是先將Revit文件通過調(diào)用RevitAPI自帶的函數(shù)功能進(jìn)行轉(zhuǎn)換成為IFC文件。兩種方式都是通過IFC Engine DLL工具包實(shí)現(xiàn)IFC文件的模型信息提取。本模塊的編程思路如圖7所示。
圖6 TO3D3S功能界面
圖7 編程思路
族工具模塊有兩個(gè)功能:一是導(dǎo)出當(dāng)前項(xiàng)目中所有族實(shí)例至Excel文件,圖8為通過族工具導(dǎo)出的某項(xiàng)目族實(shí)例Excel列表;二是導(dǎo)出當(dāng)前項(xiàng)目中一個(gè)或多個(gè)族的詳細(xì)屬性至Excel文件,圖9為通過族工具導(dǎo)出的某項(xiàng)目中的混凝土-矩形梁200×350的細(xì)部屬性。本模塊界面如圖10所示。
圖8 某項(xiàng)目族實(shí)例列表
圖9 某項(xiàng)目混凝土-矩形梁200×300細(xì)部屬性列表
圖10 族工具模塊界面
族工具模塊中的Excel導(dǎo)出功能的實(shí)現(xiàn)策略可以概括為以下兩點(diǎn):
(1)獲取對(duì)象信息。從Revit獲取對(duì)象信息一般有兩種方式,一是從類的屬性讀取,二是讀取對(duì)象的參數(shù)值。例如需要獲取一面墻的所有參數(shù),墻的名字可以通過Wall.Name屬性獲取,墻的長度可以從Location屬性間接獲取,高度則可以從墻高參數(shù)獲取,墻寬可以從 Wall.Width屬性獲得。同時(shí)為了獲取墻的材料屬性,可以用Parameter.AsElementId()方法獲得元素 ID,在 Revit API中Material類型實(shí)際上是一個(gè)元素ID,然后可以通過Document.get_Element(ElementId id)方法獲取這個(gè)材料對(duì)象。
(2)將獲取的對(duì)象信息輸出至Excel。Excel文件通過“Interop”模式打開,逐行逐列輸出即可。
本文以實(shí)際工程應(yīng)用需求為前提,以 Visual Studio 2008為開發(fā)平臺(tái),以Revit 2011系列軟件為開發(fā)環(huán)境,在Autodesk提供的SDK程序文件基礎(chǔ)上,研究開發(fā)了Revit系列軟件插件XD-Revit建筑結(jié)構(gòu)建模輔助工具箱,并在Revit系列軟件中成功運(yùn)行,并應(yīng)用于實(shí)際工程,對(duì)Revit應(yīng)用于結(jié)構(gòu)設(shè)計(jì)進(jìn)行了初步探索。
總體來講,本文主要內(nèi)容及成果總結(jié)有以下幾方面:
(1)Revit系列軟件歷史并不長,進(jìn)入我國還不到5年,因此在中國本地化方面還存在較多問題,且其軟件自身功能不像AutoCAD軟件那么完善,往往操作比較繁瑣。針對(duì)Revit存在的缺點(diǎn),本文研究開發(fā)的XD-Revit建筑結(jié)構(gòu)建模輔助工具箱具有225個(gè)功能,能夠?qū)崿F(xiàn)軸網(wǎng)、標(biāo)高、標(biāo)注、簡單規(guī)則結(jié)構(gòu)模型的快速生成,同時(shí)集成了體量環(huán)境下對(duì)于點(diǎn)、線、面的操作功能,大大節(jié)省創(chuàng)建體量、族、模型的時(shí)間,提高工作效率。
(2)程序從當(dāng)前PKPM軟件文件格式封鎖的現(xiàn)狀出發(fā),開發(fā)了具有導(dǎo)入PKPM結(jié)構(gòu)平面簡圖DXF格式文件生成Revit三維模型功能的三維重建模塊,并應(yīng)用于實(shí)際工程。程序能夠顯著提高建模速度,減少工程師的勞動(dòng)強(qiáng)度。
(3)本文還針對(duì)當(dāng)前Revit項(xiàng)目信息輸出困難的缺點(diǎn),研究開發(fā)了Revit族工具模塊。通過該模塊,設(shè)計(jì)師可以快速地從當(dāng)前項(xiàng)目中導(dǎo)出所有族及族實(shí)例細(xì)部屬性等項(xiàng)目信息。
本文雖然開發(fā)了擁有225個(gè)功能的XD-Revit建筑結(jié)構(gòu)建模輔助工具箱插件,并成功應(yīng)用于實(shí)際工程,但是很多功能是以前人和Autodesk的研究為基礎(chǔ)的,還有部分功能存在一定的局限性,在此簡要羅列:
(1)XD-Revit建筑結(jié)構(gòu)建模輔助工具箱中的三維重建模塊只能實(shí)現(xiàn)梁柱模型的三維重建,還無法對(duì)剪力墻、樓板、變截面梁、牛腿柱等特殊構(gòu)件進(jìn)行三維重建,因此仍需繼續(xù)完善其功能,以實(shí)現(xiàn)完整模型的三維重建,免去手工建模的繁瑣過程。
(2)本論文實(shí)現(xiàn)了由Revit導(dǎo)出的IFC文件到3D3S文本文件的模型數(shù)據(jù)轉(zhuǎn)換,但在通用性和信息完整性方面仍需要繼續(xù)完善。
(3)本文開發(fā)的插件是通過編輯TXT文本文件,在文本文件中調(diào)用各模塊動(dòng)態(tài)鏈接庫DLL文件實(shí)現(xiàn)在Revit環(huán)境下正常運(yùn)行的,但是由于Revit本地化欠佳的原因,插件界面按鈕及功能說明無法實(shí)現(xiàn)漢化,因此對(duì)于英語基礎(chǔ)較弱者來說,使用起來有一定困難,且界面設(shè)計(jì)尚不夠人性化。作者將繼續(xù)對(duì)XD-Revit建筑結(jié)構(gòu)輔助建模工具箱的功能進(jìn)行完善和補(bǔ)充。
[1] 何關(guān)培.BIM總論[M].北京:中國建筑工業(yè)出版社,2012.
[2]徐迪,潘東嬰,謝步瀛.基于BIM的結(jié)構(gòu)平面布置圖的三維重建.結(jié)構(gòu)工程師,2011,27(5):18-22.
[3]3D3S使用手冊(cè),上海同磊土木工程技術(shù)有限公司,2008年.
[4]付后國,謝步瀛.基于Revit和3D3S的建筑信息模型的數(shù)據(jù)轉(zhuǎn)換[J].山西建筑,2010,36(29):365-366.
[5] Autodesk Authorized Author.Revit2011 APIDeveloper’s Guide [M]. American: Autodesk Authorized Publisher,2010.
[6] Thomas Liebich.IFC 2x Edition3 Model Implementation Guide[M].BuildingSMART International Modeling Support Group,2009.