黃 巖 張曉丹 毛燕紅
(江蘇建筑職業(yè)技術(shù)學(xué)院,建筑工業(yè)化與信息應(yīng)用技術(shù)研究所,江蘇 徐州 221116)
建筑工業(yè)化和信息化正在引領(lǐng)著建筑業(yè)的發(fā)展,裝配式建筑和BIM又是工業(yè)化和信息化在建筑工程的重要體現(xiàn),通過(guò)BIM技術(shù)實(shí)現(xiàn)裝配式構(gòu)件的建立和修改是關(guān)鍵內(nèi)容之一,基于BIM的裝配式生產(chǎn)發(fā)展模式已經(jīng)成為建筑行業(yè)發(fā)展的必然趨勢(shì)[1]。裝配式構(gòu)件庫(kù)作為BIM的一個(gè)重要組成部分,對(duì)于企業(yè)和高校都有重要意義。對(duì)于企業(yè)而言,逐步在建模過(guò)程中建立自己的構(gòu)件庫(kù),對(duì)于今后的BIM應(yīng)用是一個(gè)極大的積累,可以大量的節(jié)約時(shí)間和金錢成本。對(duì)于高校而言,建立自己的構(gòu)件庫(kù),不僅對(duì)教學(xué)的可視化帶來(lái)幫助,使同學(xué)們可以直觀控制參數(shù)來(lái)調(diào)節(jié)構(gòu)件,而且也能明顯提高服務(wù)企業(yè)時(shí)的建模的速度和準(zhǔn)確性。
國(guó)內(nèi)在2015年后逐步開(kāi)始對(duì)Revit二次開(kāi)發(fā)進(jìn)行研究。2016年,肖貝利用Revit二次開(kāi)發(fā)程序,結(jié)合基坑開(kāi)挖工程案例,實(shí)現(xiàn)開(kāi)挖模型建立,相應(yīng)的土方量也可以同時(shí)準(zhǔn)確計(jì)算得到[2]。2017年,劉濟(jì)凡和靳鳴對(duì)基于Revit的裝配式建筑項(xiàng)目深化設(shè)計(jì)插件進(jìn)行研究開(kāi)發(fā),使用BIM軟件Revit對(duì)某裝配式建筑項(xiàng)目進(jìn)行深化設(shè)計(jì)的過(guò)程中,遇到軟件沒(méi)有裝配式專用模塊、效率低下的問(wèn)題,通過(guò)對(duì)Revit軟件的二次開(kāi)發(fā),減少了大量重復(fù)性的工作,使深化設(shè)計(jì)工作如期完成[3]。2019年,喬恩懋和丁琦基于Revit二次開(kāi)發(fā)對(duì)空間網(wǎng)架結(jié)構(gòu)BIM建模技術(shù)進(jìn)行研究,通過(guò)對(duì)數(shù)據(jù)庫(kù)接口進(jìn)行二次開(kāi)發(fā),使建模流程自動(dòng)化,進(jìn)行干涉和遺漏自動(dòng)檢查,大大提高了鋼結(jié)構(gòu)空間網(wǎng)架的建模效率[4]。陶婉婉對(duì)BIM模型數(shù)據(jù)進(jìn)行二次開(kāi)發(fā)研究,有效的提取模型構(gòu)件的基本屬性、層次以及關(guān)聯(lián)關(guān)系等相關(guān)數(shù)據(jù)信息[5]。
然而,現(xiàn)階段的BIM軟件對(duì)裝配式建筑的支持還處于初始階段,開(kāi)發(fā)人員正在努力開(kāi)發(fā)適應(yīng)裝配式的BIM軟件,雖然市面上已經(jīng)出現(xiàn)了很多相關(guān)軟件,但由于裝配式建筑發(fā)展迅速,現(xiàn)有軟件不能完全適應(yīng)裝配式需求。作為主要的BIM軟件Revit,本身沒(méi)有單獨(dú)的裝配式模塊,建模效率低下,導(dǎo)致裝配式模型BIM模型建立和使用較常規(guī)現(xiàn)澆模型困難很多,建立的族參數(shù)化受限,鋼筋等信息不能完全體現(xiàn),沒(méi)有令人滿意的裝配式插件可供用戶使用,需要探索準(zhǔn)確方便的Revit構(gòu)件庫(kù)插件來(lái)幫助裝配式建模。
本程序二次開(kāi)發(fā)采用C#和Revit API。C#作為一款面向?qū)ο蟮木幊陶Z(yǔ)言,繼承了C和C++的強(qiáng)大功能,同時(shí)和Java一樣具有易用性,在編程語(yǔ)言排行榜常年位居前五,有大量編程案例。C#具有大量的函數(shù)和類庫(kù),調(diào)用十分方便,功能非常強(qiáng)大,且使用難度較C和C++低,面向?qū)ο蟮木幊陶Z(yǔ)句友好,非常適合Revit軟件的二次開(kāi)發(fā)[6]。
Revit API是AutoCAD為Revit二次開(kāi)發(fā)專門提供的類庫(kù),包含了創(chuàng)建、刪除、修改構(gòu)件和構(gòu)件信息,批量化操作構(gòu)件,導(dǎo)入外部數(shù)據(jù)文件,執(zhí)行第三方程序,自動(dòng)分析BIM模型信息等幾乎所有Revit操作。Revit API和C#有良好的接口,通過(guò)Visual Studio等集成開(kāi)發(fā)環(huán)境可以靈活進(jìn)行裝配式構(gòu)件庫(kù)二次開(kāi)發(fā)。
遵循軟件開(kāi)發(fā)的一般過(guò)程,首先是需求分析,以較為復(fù)雜的疊合板為例,三維模型需要基本的參數(shù)來(lái)控制,這些參數(shù)要滿足工程實(shí)際。然后是深化設(shè)計(jì),將疊合板的每一個(gè)控制參數(shù)細(xì)化見(jiàn)表1。每個(gè)變量需要有一個(gè)唯一的名稱作為區(qū)分,變量類型根據(jù)實(shí)際需要確定為整形、浮點(diǎn)型等,取值區(qū)間為變量的范圍,是否可以為空值,防止不合理的數(shù)據(jù)帶來(lái)軟件錯(cuò)誤。給每個(gè)變量定義合適的初始默認(rèn)值,方便用戶使用。
表1 疊合板控制變量參數(shù)表 mm
Revit API提供了外部命令(IExternal Command)的形式來(lái)調(diào)用類庫(kù),最后生成DLL動(dòng)態(tài)鏈接庫(kù)文件,通過(guò)外部工具調(diào)用繪圖命令,需要調(diào)用System,System.Collections.Generic,System.Text,System.Diagnostics,Autodesk.Revit,Autodesk.Revit.DB,Autodesk.Revit.UI等類庫(kù)。
裝配式構(gòu)件繪制的實(shí)質(zhì)是Revit中的族的建立。Revit API提供了Family類來(lái)管理族類型和族參數(shù),包括FamilyManager,F(xiàn)amilyType,F(xiàn)amilyParameter等若干類。
Revit族有五種常見(jiàn)的繪制方式,包括拉伸、融合、旋轉(zhuǎn)、放樣、放樣融合等,三維圖形繪制模塊正是采用這五種基本方法進(jìn)行模型建立。通過(guò)族的五種方式創(chuàng)建的模型,可以進(jìn)行移動(dòng)、旋轉(zhuǎn)、鏡像、復(fù)制等方法來(lái)繪制和調(diào)整。本程序疊合板創(chuàng)建核心代碼如下:
CurveArrArray caay = new CurveArrArray();
CurveArray cay1 = new CurveArray();
Autodesk.Revit.DB.XYZ nor1 = BasisZ;
SketchPlane skp = CreateSketchPlane(nor1, XYZ.Zero);
XYZ pt0 = XYZ.Zero;
XYZ pt1 = new XYZ(dhbl, 0, 0);
XYZ pt2 = new XYZ(dhbl, dhbk, 0);
XYZ pt3 = new XYZ(0, dhbk, 0);
Line linep1 = Line.CreateBound(pt0, pt1);
Line linep2 = Line.CreateBound(pt1, pt2);
Line linep3 = Line.CreateBound(pt2, pt3);
Line linep4 = Line.CreateBound(pt3, pt0);
cay1.Append(linep1);
cay2.Append(linep2);
cay3.Append(linep3);
cay4.Append(linep4);
curveArrArray.Append(cay1);
Extrusion rion = creationFamily.NewExtrusion(true, caay, skp, dhbg);
XYZ trans1 = new XYZ(0, 0, 0);
ElementTransform.Move(familyDocument, rion.Id, trans1);
要友好的運(yùn)行軟件,必須有合理的GUI(Graphical User Interface),圖形界面使用戶更加利于接受軟件,使用常用的Ribbon界面模式,設(shè)計(jì)較為合理的圖標(biāo),包含在Ribbon UI庫(kù)中,使用Ribbon界面調(diào)出對(duì)話框。
以繪制疊合板為例,用戶交互界面如圖1所示。
Revit調(diào)用插件時(shí),需要提供插件的ID,才能正確加載,程序完成后,需要在Revit的addin文件中定義如下語(yǔ)句,進(jìn)行程序注冊(cè)。
打開(kāi)Revit 2019,創(chuàng)建項(xiàng)目模型或者族模型,使用外部程序加載裝配式構(gòu)件庫(kù)插件后,提示繪制構(gòu)件。根據(jù)提示可以繪制裝配式構(gòu)件,輸入合適的參數(shù),可以進(jìn)行相應(yīng)圖元的繪制。如圖2所示為Revit中布置的疊合板。
以疊合板為例,根據(jù)右側(cè)圖形界面提示,需要輸入疊合板的長(zhǎng)度、寬度、高度、桁架高度、上弦鋼筋直徑、下弦鋼筋直徑、腹桿鋼筋直徑、定尺長(zhǎng)度以及桁架間距等參數(shù),并注意系統(tǒng)提示的輸入單位,點(diǎn)擊確定按鈕,系統(tǒng)會(huì)根據(jù)輸入?yún)?shù)在Revit模型繪制界面自動(dòng)繪制疊合板構(gòu)件,并把相應(yīng)參數(shù)傳遞到Revit族類型和族參數(shù)中,以方便下次修改。
圖3為Revit中布置的疊合梁,包括疊合梁長(zhǎng),寬、高、頂部和底部鋼筋直徑、箍筋間距、箍筋直徑、鋼筋保護(hù)層厚度等參數(shù)。
圖4為Revit中布置的預(yù)制剪力墻。包括剪力墻長(zhǎng)、寬、高、墻洞數(shù)量和位置、墻洞長(zhǎng)、寬、高、縱向和橫向鋼筋直徑和間距、鋼筋保護(hù)層厚度等。
開(kāi)發(fā)環(huán)境采用Visual Studio 2019社區(qū)版開(kāi)發(fā),NetFramework 4.7版本,i5-4210u CPU,8G內(nèi)存,Autodesk Revit采用2019版。
本文采用C#對(duì)Revit進(jìn)行裝配式BIM構(gòu)件庫(kù)二次開(kāi)發(fā),得到以下結(jié)論:1)基于C#的Revit二次開(kāi)發(fā)擴(kuò)充了BIM裝配式族庫(kù),減少了重復(fù)性工作,在一定程度上解決了Revit沒(méi)有單獨(dú)的裝配式模塊,建模效率低下的問(wèn)題。2)基于C#的Revit二次開(kāi)發(fā)可以較好的實(shí)現(xiàn)疊合板、疊合梁、預(yù)制柱、預(yù)制剪力墻、預(yù)制樓梯等常見(jiàn)裝配式構(gòu)件的參數(shù)化繪制和修改,形成參數(shù)化構(gòu)件庫(kù)。3)可以在此二次開(kāi)發(fā)基礎(chǔ)上進(jìn)一步開(kāi)發(fā)Revit裝配式插件,進(jìn)行裝配式建筑整體建模,統(tǒng)計(jì)鋼筋和混凝土量,基于Revit的裝配式算量和造價(jià),計(jì)算構(gòu)件預(yù)制率,裝配式5D施工動(dòng)畫(huà)制作等。