施丁平 孫 豐
(上海浦東建筑設(shè)計(jì)研究院有限公司,上海 201204)
裝配式建筑與現(xiàn)澆式建筑在技術(shù)環(huán)節(jié)上有著很大的不同,即裝配式建筑除了傳統(tǒng)的設(shè)計(jì)與施工環(huán)節(jié)外,還有制造環(huán)節(jié)[1]。正因?yàn)槿绱耍b配式建筑對(duì)于構(gòu)件的加工精度、加工準(zhǔn)確性有著很高的要求,才能保證后期的正常施工與安裝[2]。
當(dāng)前,在我國的裝配式建筑市場,構(gòu)件的設(shè)計(jì)錯(cuò)誤、加工錯(cuò)誤、加工的精準(zhǔn)度等問題,確實(shí)在干擾著我國裝配式的推廣。因此,在構(gòu)件進(jìn)場前,如何保證每個(gè)構(gòu)件都是精準(zhǔn)的,是我國裝配式建筑發(fā)展必須解決的問題[3]。
隨著BIM技術(shù)在工程領(lǐng)域應(yīng)用的逐漸深入,將BIM技術(shù)與裝配式結(jié)合,將BIM技術(shù)的信息化與裝配式的制造進(jìn)行結(jié)合,無疑將為裝配式制造的準(zhǔn)確性提供有力的抓手。BIM技術(shù)應(yīng)用于裝配式的制造,一是在設(shè)計(jì)或深化設(shè)計(jì)階段,保證構(gòu)件的準(zhǔn)確性[4],二是在構(gòu)件制造的過程中,保證制作的準(zhǔn)確性[5]。
因此,將當(dāng)前的裝配式建筑的各個(gè)構(gòu)件BIM化,建立各個(gè)構(gòu)件的BIM模型,為后期的制作加工提供數(shù)據(jù),加工廠可以直接從BIM模型提取加工數(shù)據(jù),從而有效保障模型制作的準(zhǔn)確性,并可在設(shè)計(jì)階段檢查裝配式構(gòu)件的連接是否正確,保證施工的順利完成[6]。
將BIM技術(shù)應(yīng)用于裝配式建筑的基礎(chǔ),是準(zhǔn)確的BIM模型。只有快速、準(zhǔn)確地建立裝配式建筑的BIM模型,才能真正實(shí)現(xiàn)裝配式建筑的信息化加工制造[7]。
但是,裝配式建筑的BIM模型非常復(fù)雜,特別是其中的鋼筋模型,如果采用手工建模,不僅工作量大,時(shí)間長,而且位置難以精確。因此迫切需要開發(fā)一套能夠自動(dòng)建立裝配式墻板鋼筋BIM模型的程序,實(shí)現(xiàn)設(shè)計(jì)人員只需輸入鋼筋的參數(shù),即可自動(dòng)建立該墻板鋼筋的BIM模型,從而大大提高裝配式墻板的建模速度[8,9]。
本文基于Revit API的二次開發(fā)接口,對(duì)Revit軟件進(jìn)行二次開發(fā),實(shí)現(xiàn)了梁縱筋、梁箍筋和拉筋、窗下墻鋼筋、構(gòu)造柱縱筋、構(gòu)造柱箍筋、構(gòu)造柱拉筋、套筒進(jìn)行自動(dòng)建模。
整個(gè)程序主要包含三部分:族類型的選擇、鋼筋與套筒的建模。其中族類型選擇是進(jìn)行墻板的形狀的建模與參數(shù)的讀取與保存,鋼筋部分是進(jìn)行各種鋼筋的實(shí)體建模,套筒是進(jìn)行套筒的建模。
程序的架構(gòu)如圖1所示。
在裝配式墻板的BIM建模中,實(shí)體鋼筋的建模是最主要的部分,也是最復(fù)雜的內(nèi)容。
裝配式墻板主要包括梁鋼筋、窗下墻鋼筋、構(gòu)造柱鋼筋。各個(gè)鋼筋按其形狀又可分為縱筋、箍筋、拉筋。各種鋼筋形狀均可使用Revit API中的鋼筋建模命令完成建模。
Revit API中的鋼筋建模有三種命令,分別為:CreateFromRebarShape,CreateFromCurve和CreateFromCurvesAndShape。其中CreateFromRebarShape是依據(jù)鋼筋形狀進(jìn)行建模,即Revit中已有該鋼筋的形狀,則直接調(diào)用該鋼筋形狀即可進(jìn)行建模。CreateFromCurve是依據(jù)路徑曲線進(jìn)行鋼筋建模。CreateFromCurvesAndShape的功能與CreateFromCurve功能幾乎相同,僅僅是CreateFromCurvesAndShape在建立鋼筋時(shí),如果在文檔中沒有該鋼筋形狀時(shí),則可以建立鋼筋形狀。
在本程序中,對(duì)于縱筋采用CreateFromCurves建模,對(duì)于箍筋、拉筋則使用CreateFromRebarShape進(jìn)行鋼筋的實(shí)體建模。
使用CreateFromRebarShape進(jìn)行鋼筋建模,需要使用如下的四個(gè)函數(shù),即首先使用CreateFromRebarShape建立鋼筋,然后使用ScaleToBox設(shè)定鋼筋所在的區(qū)域,再使用get_Parameter獲得鋼筋的各個(gè)參數(shù),最后使用Parameter.Set命令設(shè)定鋼筋的參數(shù),CreateFromRebarShape建模流程如圖2所示。
使用CreateFromCurves建模則需計(jì)算鋼筋的起點(diǎn)和中心,由此組成線段,然后將該線段加入曲線Curves集合,最后使用CreateFromCurves命令建立鋼筋。由于Curves是一個(gè)集合,因此可以放置多根線段,而且線段可以是直線,也可以為曲線,因此可以生成各種形狀的鋼筋,CreateFromCurves建模流程見圖3。
構(gòu)造柱縱筋、梁的縱筋CreateFromCurves建模是比較方便的,二者的建模方法基本相同。因此下文僅以構(gòu)造柱縱筋為例,論述其建模方法。對(duì)于構(gòu)造柱縱筋,由于其包含正反兩面,因此可以分為兩次建模。對(duì)于每個(gè)面,程序首先計(jì)算鋼筋的總數(shù),然后對(duì)每根鋼筋進(jìn)行遍歷循環(huán),每根單獨(dú)創(chuàng)建。
對(duì)于每一根鋼筋,由于其位于三維空間內(nèi),所以需要確定三個(gè)方向的位置,即高度方向、墻板厚度方向、墻板水平縱向。在墻板厚度方向,根據(jù)墻板的厚度方向的保護(hù)層厚度,確定鋼筋在厚度方向的位置。在高度方向,則需根據(jù)高度方向的保護(hù)層厚度、鋼筋是否有套筒、鋼筋上部是否伸出,計(jì)算高度方向的鋼筋的起點(diǎn)和終點(diǎn)的位置。而在水平縱向位置,則需考慮水平縱向的保護(hù)層厚度、各個(gè)鋼筋的間距,分別計(jì)算每根鋼筋在水平縱向的位置;流程見圖4。
拉筋與箍筋的布置方法基本相同,即分別計(jì)算拉筋的起始與終點(diǎn)的位置,然后調(diào)用CreateFromRebarShape命令,進(jìn)行鋼筋的建模,但與縱筋不同,拉筋和箍筋需要根據(jù)布置距離,計(jì)算器間距,從而設(shè)置鋼筋的布置參數(shù),即Revit中鋼筋的布置規(guī)則,其流程見圖5。
根據(jù)程序的設(shè)計(jì)框架,本文開發(fā)了裝配式墻板BIM模型各個(gè)組成部分的鋼筋BIM模型自動(dòng)生成程序,只需輸入各個(gè)部分的鋼筋根數(shù)、直徑、間距等參數(shù),程序即可實(shí)現(xiàn)墻板中縱筋、箍筋、拉筋BIM模型的建立。本文編程工具采用Visual Studio 2017,編程語言為C#。
以拉筋為例,由于拉筋在墻板中是包含多列的,因此程序首先根據(jù)墻板的寬度,計(jì)算拉筋的列數(shù),然后對(duì)每一列拉筋,計(jì)算該列鋼筋的起始位置,并計(jì)算包裹該列鋼筋的長方體的位置,即該列鋼筋在墻板中的三維空間中所占的位置,計(jì)算時(shí),需要考慮保護(hù)層厚度,最后設(shè)置鋼筋的布置規(guī)則為“間距數(shù)量”,該參數(shù)在Revit API中值為3,設(shè)置鋼筋的數(shù)量與間距,即可生成拉筋,其代碼如下:
int hN=(int)(UT.Foot2mm(wallPro.dc1B/cxlsh))-1;
//計(jì)算鋼筋數(shù)量
double temp= (wallPro.ctH1 - UT.mm2Foot(2*c)-UT.mm2Foot(cxhd*2))/UT.mm2Foot(cxlsv);//計(jì)算鋼筋間距
int vN = (int)temp+1;
XYZ xVec = XYZ.BasisX;
XYZ yVec = XYZ.BasisY;
//對(duì)所有鋼筋進(jìn)行循環(huán)建立
for (int i = 0; i < hN; i++)
{
//計(jì)算鋼筋起始位置
XYZ original = new XYZ(wallPro.location.X +wallPro .aB-UT .mm2Foot(cxvd+cxld)+(i+1) * UT .mm2Foot(cxlsh),
wallPro.location.Y - 0.5 * wallPro.qb + UT.mm2Foot(c),
wallPro.z + UT.mm2Foot(c));
//建立鋼筋
Rebar cxlj = Rebar.CreateFromRebarShape(doc, cxlShape36 , cxlType, m_column, original, xVec, yVec);
//設(shè)置包括鋼筋的長方體的區(qū)域
cxlj.ScaleToBox(original, new XYZ(0, wallPro.qb - UT.mm2Foot(c) * 2, 0), new XYZ(1, 0, 0));
Parameter cxljlRLayout = cxlj.get_Parameter(BuiltInParameter.REBAR_ELEM_LAYOUT_RULE);
cxljlRLayout.Set(3);//設(shè)置鋼筋布置規(guī)則
Parameter cxljNum = cxlj.get_Parameter(BuiltInParameter.REBAR_ELEM_QUANTITY_OF_BARS);
cxljNum.Set(vN ); //設(shè)置鋼筋數(shù)量
Parameter cxljSpan = cxlj.get_Parameter(BuiltInParameter.REBAR_ELEM_BAR_SPACING);
cxljSpan.Set(UT.mm2Foot(cxlsv)); //設(shè)置鋼筋間距
}
程序界面見圖6。
針對(duì)上海市浦東新區(qū)某裝配式保障房的裝配深化圖紙,本文使用本程序進(jìn)行了裝配式墻板的鋼筋建模,成功實(shí)現(xiàn)了該項(xiàng)目的墻板鋼筋模型自動(dòng)生成,其中的雙洞口外墻墻板的鋼筋BIM模型效果見圖7。
本文研究了自動(dòng)生成裝配式墻板鋼筋BIM模型的程序開發(fā)方法,為快速生成裝配式墻板鋼筋模型提出了有效解決途徑,實(shí)現(xiàn)了如下功能:
1)研究了Revit API中各種鋼筋的生成方法,提出了各種鋼筋生成的程序架構(gòu)。
2)實(shí)現(xiàn)了裝配式墻板中縱筋、拉筋、箍筋等的BIM模型自動(dòng)生成,可根據(jù)鋼筋參數(shù),自動(dòng)生成墻板縱筋。
3)使用本文程序?qū)ρb配式保障房的墻板進(jìn)行了鋼筋的BIM模型自動(dòng)生成,驗(yàn)證了本文方法的可行性。