張新元
(中交第二航務(wù)工程局有限公司設(shè)計(jì)研究院 武漢 430400)
在高速公路互通立交橋梁結(jié)構(gòu)中,墊石作為承接橋梁上部結(jié)構(gòu)和下部結(jié)構(gòu)的構(gòu)件,具有重要意義。墊石不僅可以將橋梁上部結(jié)構(gòu)的受力較均勻地傳遞到下部結(jié)構(gòu),同時(shí)可以通過(guò)調(diào)節(jié)墊石高度來(lái)實(shí)現(xiàn)橋梁上部結(jié)構(gòu)和下部結(jié)構(gòu)在施工過(guò)程中的安裝精度。
目前,BIM技術(shù)已經(jīng)廣泛應(yīng)用于橋梁工程,主流的橋梁BIM建模軟件有Autodesk Revit+Dynamo、Bentley Open Bridge Modeler及Dassautlt Catia。由于Autodesk平臺(tái)具有交通行業(yè)影響力較高,軟件普及率較高,學(xué)習(xí)成本較低等優(yōu)勢(shì)[1],因此,國(guó)內(nèi)外許多學(xué)者和單位基于Autodesk Revit+Dynamo進(jìn)行橋梁正向設(shè)計(jì)應(yīng)用及快速建模研究,其中聶偉等[2]利用Revit+Dynamo總結(jié)出一套互通橋梁BIM正向設(shè)計(jì)建模方法和流程,包括自動(dòng)創(chuàng)建橋梁中心線,采用Revit建立互通橋梁樁基、承臺(tái)、墩身、蓋梁、支座、墊石、上部結(jié)構(gòu)等族庫(kù)模型,利用Dynamo自動(dòng)完成互通橋梁的創(chuàng)建;李東運(yùn)[3]、佘宇深[4]和朱子翔等[5]研究創(chuàng)建橋梁下部結(jié)構(gòu)模型最小構(gòu)件單元,包括蓋梁擋塊、墊石等,通過(guò)邏輯算法關(guān)聯(lián)支座、擋塊等參數(shù),將最小單元進(jìn)行組合拼裝成一個(gè)大構(gòu)件,其次,通過(guò)可見(jiàn)性參數(shù)實(shí)現(xiàn)大構(gòu)件在項(xiàng)目中拆分,最后,通過(guò)Dynamo自動(dòng)放置模型,完成橋梁的創(chuàng)建。
以上學(xué)者針對(duì)橋梁BIM技術(shù)的研究均能實(shí)現(xiàn)橋梁的快速模型搭建。然而,對(duì)于墊石的布置方法,其中聶偉等提出的墊石自動(dòng)放置通過(guò)確定一個(gè)墊石坐標(biāo)并根據(jù)墊石間距完成,但是其并未針對(duì)橋梁不同設(shè)計(jì)形式進(jìn)行具體分析;李運(yùn)東和朱子翔等將墊石模型內(nèi)嵌到橋墩模型中,通過(guò)設(shè)置可見(jiàn)性來(lái)關(guān)聯(lián)墊石在項(xiàng)目中的可見(jiàn)與否,這種方法對(duì)BIM人員的建模和邏輯水平要求較高。
本文依托某高速互通橋梁項(xiàng)目,針對(duì)橋梁的3種不同設(shè)計(jì)形式,擬采用Revit+Dynamo對(duì)墊石的自動(dòng)布置方法進(jìn)行研究,探索出墊石自動(dòng)布置方法和流程,以提高橋梁建模效率和準(zhǔn)確性。
通過(guò)Revit創(chuàng)建參數(shù)化墊石族模型,利用Dynamo可視化編程,可實(shí)現(xiàn)墊石沿著線路按照實(shí)際位置進(jìn)行自動(dòng)布置,有效地解決構(gòu)件布置問(wèn)題,提高模型的準(zhǔn)確性。
首先,獲取設(shè)計(jì)線路數(shù)據(jù)。根據(jù)設(shè)計(jì)文件中的橋梁曲線要素?cái)?shù)據(jù),利用Civil 3D,按照1 m的采樣頻率,輸出橋梁設(shè)計(jì)線點(diǎn)數(shù)據(jù)Excel表(包含樁號(hào)、東距、北距和高程值),由于線路數(shù)據(jù)獲取的方法比較通用,本文將不在此贅述。
其次,獲取橋梁設(shè)計(jì)數(shù)據(jù)。根據(jù)橋梁設(shè)計(jì)資料中的橋墩一般構(gòu)造圖,整理得到墊石尺寸信息及位置關(guān)系Excel表(包含墩臺(tái)號(hào)、樁號(hào)、墊石沿線路前進(jìn)方向距離、設(shè)計(jì)線到最外側(cè)墊石距離、墊石總數(shù)、墊石間距、坡度、蓋梁設(shè)計(jì)高程等)。
上述數(shù)據(jù)作為墊石自動(dòng)布置的基礎(chǔ),通過(guò)Dynamo讀取相關(guān)數(shù)據(jù),可實(shí)現(xiàn)在Revit中自動(dòng)生成墊石模型。
墊石參數(shù)化模型采用“公制常規(guī)模型”族樣板進(jìn)行創(chuàng)建,項(xiàng)目單位的坡度采用“%”,長(zhǎng)度單位采用“mm”。墊石以底部中心為建?;鶞?zhǔn)點(diǎn),通過(guò)設(shè)置參照平面尺寸約束,將墊石外輪廓與參照平面進(jìn)行對(duì)齊并鎖定,利用“拉伸”命令,實(shí)現(xiàn)墊石參數(shù)化模型制作。墊石主要控制參數(shù)包含長(zhǎng)度,寬度、高度及坡度i,墊石參數(shù)化族的主要參數(shù)見(jiàn)圖1。
圖1 墊石參數(shù)化族(單位:mm)
墊石自動(dòng)布置的關(guān)鍵點(diǎn)在于需在Dynamo程序中計(jì)算出每個(gè)墊石在蓋梁上的相對(duì)平面位置坐標(biāo)值和豎向位置上的高程值。其中墊石的平面位置坐標(biāo)值可根據(jù)橋墩在特定樁號(hào)下的法向方向偏距和切線方向偏距來(lái)共同確定,墊石的豎向位置可根據(jù)蓋梁的設(shè)計(jì)高程、墊石間的水平間距、蓋梁橫坡等參數(shù)計(jì)算得到。當(dāng)墊石點(diǎn)位坐標(biāo)確定后,再利用Family Instance.By Point節(jié)點(diǎn)自動(dòng)完成墊石參數(shù)化模型按坐標(biāo)點(diǎn)的放置,墊石自動(dòng)布置原理圖見(jiàn)圖2。
下面將針對(duì)互通橋梁3種不同設(shè)計(jì)情形的墊石自動(dòng)布置方法進(jìn)行描述。
整體式橋梁是互通橋梁的主要形式,一般情況下,設(shè)計(jì)線與脊線分界點(diǎn)重合。然而,在互通橋梁分流處,也存在設(shè)計(jì)線與脊線分界點(diǎn)不重合的情況。下面針對(duì)整體式橋梁這2種情形的墊石自動(dòng)布置進(jìn)行描述。
2.1.1設(shè)計(jì)線與脊線分界點(diǎn)重合
在設(shè)計(jì)線與脊線分界點(diǎn)重合情況下,整體式橋梁蓋梁布置圖見(jiàn)圖3。
L-蓋梁長(zhǎng)度,cm;Lr-蓋梁最右側(cè)到設(shè)計(jì)線距離,cm;dk2-最右側(cè)墊石中心到蓋梁邊的距離,cm;n2-前排墊石個(gè)數(shù);d-前排墊石間距,cm;w2-前排墊石到蓋梁設(shè)計(jì)線的法向間距,cm。
蓋梁上的各墊石坐標(biāo)值,可在Dynamo中通過(guò)數(shù)學(xué)計(jì)算方法求出,方法如下。
首先,利用Dynamo讀取線路數(shù)據(jù)生成設(shè)計(jì)線路;然后,根據(jù)橋墩所在的里程樁號(hào)和線路起始樁號(hào),通過(guò)Curve.PlaneAtSegmentLength和Geometry.IntersectAll 2個(gè)節(jié)點(diǎn)來(lái)自動(dòng)獲取該樁號(hào)下的O點(diǎn)坐標(biāo)值(X、Y、高程),其中O點(diǎn)坐標(biāo)系以該樁號(hào)對(duì)應(yīng)的坐標(biāo)點(diǎn)為基準(zhǔn)點(diǎn),法向方向?yàn)閄軸,切向方向?yàn)閅軸,Z軸向上。其次,通過(guò)該樁號(hào)沿設(shè)計(jì)線路方向的法向向量Plane.Normal和Vector.ZAxis進(jìn)行叉積Vector.Cross,可以得到樁號(hào)對(duì)應(yīng)的切向向量;再次,分別計(jì)算出右下側(cè)墊石和左下側(cè)墊石平面位置坐標(biāo),然后通過(guò)Line.ByStartPointEndPoint和Curve.PointAtParameter 2個(gè)節(jié)點(diǎn),自動(dòng)得到每個(gè)墊石平面位置坐標(biāo)值;最后,采用Python script程序分別算出各個(gè)墊石的高程值。計(jì)算過(guò)程中長(zhǎng)度單位均應(yīng)換算以m計(jì)。
右下側(cè)墊石平面位置坐標(biāo)值計(jì)算方法如下。
X右下=O.X-Vector法向.X*w2/100+Vector切向.X*(Lr-dk2)/100
Y右下=O.Y-Vector法向.Y*w2/100+Vector切向.Y*(Lr-dk2)/100
左下側(cè)墊石平面位置坐標(biāo)值計(jì)算方法如下。
X左下= X右下+ Vector切向.X*n2*d/100
Y左下= Y右下+ Vector切向.Y*n2*d/100
得到墊石最右側(cè)和最左側(cè)2個(gè)點(diǎn)坐標(biāo)點(diǎn)后,再根據(jù)Line.ByStartPointEndPoint和Curve.PointAtParameter,可自動(dòng)獲取直線上的n2個(gè)等分點(diǎn)坐標(biāo)。
各個(gè)墊石對(duì)應(yīng)的高程可按照左側(cè)和右側(cè)分別計(jì)算得到,方法如下。
最右側(cè)墊石個(gè)數(shù)=math.ceiling((Lr-dk2)/d)
最左側(cè)墊石個(gè)數(shù)=n2+1-最右側(cè)墊石個(gè)數(shù)
通過(guò)Python script計(jì)算出高程值。其中程序輸入端參數(shù)為5個(gè),分別為墊石個(gè)數(shù)num、橫坡slope、蓋梁基準(zhǔn)點(diǎn)設(shè)計(jì)高程值ele、墊石間距jianju,以及最外側(cè)墊石到設(shè)計(jì)線距離len;輸出結(jié)果為各個(gè)墊石對(duì)應(yīng)的高程值el,程序計(jì)算方法如下。
for i in range(int(num)):
str=(len-i*jianju)
ele1=str*slope/100
el=ele±ele1(左側(cè)為負(fù),右側(cè)為正)
listout.append(el)
因此,根據(jù)上述計(jì)算,利用Dynamo自動(dòng)算出每排各個(gè)墊石的點(diǎn)位坐標(biāo),再利用FamilyInstance.ByPoint和FamilyInstance.SetRotation節(jié)點(diǎn)完成墊石模型的自動(dòng)布置。
2.1.2設(shè)計(jì)線與脊線分界點(diǎn)不重合
在設(shè)計(jì)線與脊線分界點(diǎn)不重合情況下,整體式橋梁蓋梁布置圖見(jiàn)圖4。
圖4 整體式橋梁蓋梁布置圖2(尺寸單位:dm)
對(duì)于此種情況,可按脊線分界點(diǎn)將墊石劃分為在脊線左側(cè)和在脊線右側(cè)2種情況,利用上述橋梁墊石計(jì)算方法分別按脊線左、右側(cè)運(yùn)行2次,完成墊石自動(dòng)布置。此情況下,左側(cè)墊石總數(shù)為脊線分界點(diǎn)左側(cè)墊石個(gè)數(shù),設(shè)計(jì)高程為設(shè)計(jì)線與蓋梁交點(diǎn)處高程;右側(cè)墊石總數(shù)為脊線分界點(diǎn)右側(cè)墊石個(gè)數(shù),設(shè)計(jì)高程為脊線與蓋梁交點(diǎn)處高程。
對(duì)于分離式橋梁,墊石位于設(shè)計(jì)線一側(cè),墊石的坐標(biāo)計(jì)算方法與整體式橋梁的計(jì)算方法略有區(qū)別,下面將針對(duì)左幅和右幅橋梁分別進(jìn)行描述。
2.2.1左幅橋梁
左幅橋梁蓋梁布置圖見(jiàn)圖5。
L-蓋梁長(zhǎng)度,cm;Lr-蓋梁最右側(cè)到設(shè)計(jì)線距離,cm;dk2-最右側(cè)墊石中心到蓋梁邊的距離,cm;n2-前排墊石個(gè)數(shù);d-前排墊石間距,cm;w2-前排墊石到蓋梁設(shè)計(jì)線的法向間距,cm;D-蓋梁最右側(cè)到設(shè)計(jì)線距離,cm。
蓋梁上各墊石坐標(biāo)值可在Dynamo中通過(guò)數(shù)學(xué)計(jì)算方法求出,方法如下。
首先,利用Dynamo讀取線路數(shù)據(jù)生成設(shè)計(jì)線路;然后,根據(jù)橋墩所在的里程樁號(hào)和線路起始樁號(hào),通過(guò)Curve.PlaneAtSegmentLength和Geometry.IntersectAll 2個(gè)節(jié)點(diǎn)來(lái)自動(dòng)獲取該樁號(hào)下的O點(diǎn)坐標(biāo)值(X、Y、高程),同時(shí),需要用到Geometry.Translate節(jié)點(diǎn),使O點(diǎn)沿切向方向做平移運(yùn)算,將坐標(biāo)O換算到蓋梁設(shè)計(jì)線O’點(diǎn)處,平移距離為L(zhǎng)r+D。其中O’點(diǎn)坐標(biāo)系以該樁號(hào)對(duì)應(yīng)的坐標(biāo)點(diǎn)為基準(zhǔn)點(diǎn),法向方向?yàn)閄軸,切向方向?yàn)閅軸,Z軸向上。其次,通過(guò)該樁號(hào)沿設(shè)計(jì)線路方向的法向向量Plane.Normal和Vector.ZAxis進(jìn)行叉積Vector.Cross,可以得到樁號(hào)對(duì)應(yīng)的切向向量;再次,分別算出右下側(cè)墊石和左下側(cè)墊石平面位置坐標(biāo),然后通過(guò)Line.ByStartPointEndPoint和Curve.PointAtParameter 2個(gè)節(jié)點(diǎn),可以自動(dòng)得到每個(gè)墊石平面位置坐標(biāo)值;最后,采用Python script程序分別算出各個(gè)墊石的高程值。計(jì)算過(guò)程中長(zhǎng)度單位均應(yīng)換算以m計(jì)。
右下側(cè)墊石平面位置坐標(biāo)值計(jì)算方法如下。
X右下=O’.X-Vector法向.X*w2/100+Vector切向.X*(Lr-dk4)/100
Y右下=O’.Y-Vector法向.Y*w2/100+Vector切向.Y*(Lr-dk4)/100
左下側(cè)墊石平面位置坐標(biāo)值計(jì)算方法如下。
X左下=X右下+ Vector切向.X*n2*d/100
Y左下=Y右下+ Vector切向.Y*n2*d/100
確定最右側(cè)和最左側(cè)2個(gè)點(diǎn)坐標(biāo)點(diǎn),再根據(jù)Line.ByStartPointEndPoint和Curve.PointAtParameter自動(dòng)獲取直線上的等分點(diǎn)坐標(biāo)。
墊石對(duì)應(yīng)的高程按照左側(cè)和右側(cè)分別計(jì)算,方法同整體式橋梁。
2.2.2右幅橋梁
右幅橋梁蓋梁布置圖見(jiàn)圖6。
圖6 右幅橋梁蓋梁布置圖
蓋梁上的墊石的水平位置坐標(biāo)值和高程值計(jì)算方法與左幅橋梁墊石計(jì)算方法相同,其中各里程樁號(hào)下的O點(diǎn)坐標(biāo)值(X、Y、高程)需要用到Geometry.Translate節(jié)點(diǎn),使O點(diǎn)沿切向方向做平移運(yùn)算,將坐標(biāo)O換算到蓋梁設(shè)計(jì)線O’點(diǎn)處,平移距離為L(zhǎng)-Lr+D。
至此,針對(duì)互通橋梁的不同設(shè)計(jì)情況,采用Dynamo編程來(lái)實(shí)現(xiàn)墊石點(diǎn)位自動(dòng)計(jì)算和自動(dòng)放置,達(dá)到了墊石快速準(zhǔn)確生成的目的。
某互通橋梁由1座左線橋,1座右線橋和13個(gè)匝道橋組成。本文以左線橋、右線橋,以及A匝道橋?yàn)槔?,進(jìn)行墊石自動(dòng)布置具體描述。某互通橋梁BIM模型見(jiàn)圖7。
圖7 某互通橋梁BIM模型
3.1.1A匝道
A匝道為整體式橋梁,起止里程為AK0+180.238-AK0+756.784,全長(zhǎng)576.546 m。本文以A匝道前2聯(lián)為例,上部結(jié)構(gòu)采用3×26 m+2×25 m預(yù)應(yīng)力混凝土先簡(jiǎn)支后連續(xù)T梁,下部結(jié)構(gòu)采用樁柱式墩+系梁+蓋梁。A匝道墊石參數(shù)見(jiàn)表1。
表1 A匝道墊石參數(shù)表
通過(guò)Dynamo讀取表1數(shù)據(jù)和線路數(shù)據(jù),可自動(dòng)布置A匝道墊石,A匝道墊石自動(dòng)布置見(jiàn)圖8。
圖8 A匝道墊石自動(dòng)布置
3.1.2左線橋梁
左線為分離式左幅橋梁,起止里程為K5+419.244-K7+910,全長(zhǎng)2 490.756 m。本文以左線第一聯(lián)為例,上部結(jié)構(gòu)采用3×31.7 m預(yù)應(yīng)力混凝土(后張)簡(jiǎn)支連續(xù)T梁,下部結(jié)構(gòu)采用樁柱式墩+蓋梁,左線墊石參數(shù)見(jiàn)表2。通過(guò)Dynamo讀取表2數(shù)據(jù)和線路數(shù)據(jù),可自動(dòng)布置左線墊石,左線墊石自動(dòng)布置圖見(jiàn)圖9。
表2 左線墊石參數(shù)表
圖9 左線墊石自動(dòng)布置圖
3.1.3右線橋梁
右線為分離式右幅橋梁,起止里程為K5+403-K6+335,全長(zhǎng)932 m。本文以右線第一聯(lián)為例,上部結(jié)構(gòu)采用5×30 m預(yù)應(yīng)力混凝土(后張)簡(jiǎn)支變連續(xù)T梁,下部結(jié)構(gòu)采用樁柱式墩+蓋梁,右線墊石參數(shù)見(jiàn)表3。通過(guò)Dynamo讀取表3數(shù)據(jù)和線路數(shù)據(jù),可自動(dòng)布置右線墊石,右線墊石自動(dòng)布置圖見(jiàn)圖10。
表3 右線墊石參數(shù)表
圖10 右線墊石自動(dòng)布置圖
3.2.1支座自動(dòng)生成
支座采用“公制常規(guī)模型”族創(chuàng)建,建模基準(zhǔn)點(diǎn)為支座底面中心。通常,支座布置在墊石頂面,通過(guò)Dynamo程序計(jì)算出墊石的坐標(biāo),支座的坐標(biāo)確定只需將墊石的高度值加上即可算出支座的坐標(biāo)。通過(guò)應(yīng)用同一套墊石程序,即可實(shí)現(xiàn)墊石和支座的自動(dòng)布置。
3.2.2T梁自動(dòng)布置
T梁采用“結(jié)構(gòu)框架-梁和支撐”族創(chuàng)建,單跨T梁的首尾定位點(diǎn)為相鄰前后一跨墊石的坐標(biāo)點(diǎn),可考慮將前一跨墊石坐標(biāo)和后一跨墊石坐標(biāo)進(jìn)行兩兩分組,再通過(guò)Line.ByStartPointEndPoint和StructuralFraming.BeamByCurve節(jié)點(diǎn)完成T梁的自動(dòng)布置,T梁自動(dòng)布置圖見(jiàn)圖11。
圖11 T梁自動(dòng)布置圖
互通橋梁墊石自動(dòng)布置,需要根據(jù)設(shè)計(jì)路線、橋梁的具體設(shè)計(jì)形式和墊石參數(shù)化模型,應(yīng)用Dynamo程序,按照設(shè)計(jì)意圖,快速實(shí)現(xiàn)墊石自動(dòng)布置。通過(guò)研究得出以下結(jié)論。
1)基于Dynamo可適應(yīng)不同橋梁互通設(shè)計(jì)形式,完成墊石坐標(biāo)自動(dòng)計(jì)算,通過(guò)參數(shù)驅(qū)動(dòng)并快速完成墊石自動(dòng)布置,該方法可有效提升模型精度和效率。
2)基于Dynamo的墊石自動(dòng)布置,可以衍生到支座和梁板的自動(dòng)生成和布置,實(shí)現(xiàn)一套程序多構(gòu)件使用,提高了其應(yīng)用價(jià)值。
3)相較于墊石的傳統(tǒng)下部結(jié)構(gòu)建模和布置方法,該方法只需要建立單個(gè)構(gòu)件模型即可,大大降低建模人員對(duì)下部結(jié)構(gòu)族模型的嵌套搭建要求。
本文根據(jù)3種互通橋梁設(shè)計(jì)形式,完成了墊石的自動(dòng)布置。然而,對(duì)于主線橋和匝道橋連接處的斜交情況,本文暫未考慮,后續(xù)將針對(duì)斜交工況進(jìn)行改進(jìn),以滿足實(shí)際生產(chǎn)應(yīng)用。