胡茗泉 姜諳男 王洪龍 鄭 帥 王 巖 陶 怡
(1.大連海事大學(xué) 交通運(yùn)輸工程學(xué)院,大連 116026;2.中鐵上海工程局集團(tuán)有限公司 城市軌道交通工程分公司,上海 200431)
這些年來,BIM建筑信息建模技術(shù)取得了顯著的發(fā)展,充分結(jié)合了計(jì)算機(jī)輔助設(shè)計(jì)和數(shù)字技術(shù),將設(shè)計(jì)和施工由過去的二維轉(zhuǎn)變?yōu)榫哂袇?shù)信息的三維模型。然而,BIM技術(shù)在拱蓋法地鐵站上的應(yīng)用只是剛剛開始,相信隨著信息科學(xué)水平的發(fā)展,此項(xiàng)技術(shù)將會(huì)更加廣泛地應(yīng)用于現(xiàn)代地鐵站信息管理應(yīng)用中。
拱蓋法的地鐵車站存在著大量的斷面。在沒有參數(shù)化建模的情況下,有必要對(duì)隧道的各個(gè)組成部分進(jìn)行單獨(dú)的建模,這是一個(gè)巨大的工作量,大大限制了BIM技術(shù)在地鐵建設(shè)中的應(yīng)用。參數(shù)化建模包括從模型中提取特性和關(guān)鍵元素,并通過編程用于自動(dòng)生成模型的特定算法來適當(dāng)?shù)睾喕@些特征和元素。參數(shù)化建模將是今后隧道建模的趨勢。在現(xiàn)有Revit軟件的基礎(chǔ)上,研究提出了一種通過二次開發(fā)進(jìn)行的地鐵車站參數(shù)建模方法,這將縮短建模時(shí)間,降低建模費(fèi)用,從而能夠迅速地進(jìn)行批量建模。目前,對(duì)拱蓋法地鐵車站參數(shù)建模的研究很少。部分專家學(xué)者在Revit領(lǐng)域中的其他方面進(jìn)行了實(shí)踐性的研究,取得了一定的成績,例如:丁曉宇等[1]研究了二次曲面網(wǎng)殼的參數(shù)化建模,但目前還沒有在特定行業(yè)得到應(yīng)用; 杜一叢等[2]修改和過濾橋梁元件模型。但其運(yùn)用了手工創(chuàng)建的族庫,并未完全實(shí)現(xiàn)參數(shù)化建模; 李正農(nóng)等[3]利用RevitAPI,開發(fā)了用于自動(dòng)生成扣件式鋼管腳手架模型并進(jìn)行數(shù)字模擬的二次開發(fā)插件,以及用于建模支撐參數(shù)和計(jì)算BIM軟件中的結(jié)構(gòu)應(yīng)力的插件,但其并未運(yùn)用在地鐵車站中。
基于上述的一系列研究,緊密圍繞Revit二次開發(fā)對(duì)參數(shù)化建模的研究正在逐步展開,但針對(duì)于拱蓋法地鐵車站的參數(shù)化建模研究較少,就目前而言,大多數(shù)參數(shù)化建模都是圍繞模型本身進(jìn)行的,并且與模型構(gòu)件相關(guān)的專業(yè)屬性信息的快速添加還很少見。因此,本文通過對(duì)拱蓋法車站土建結(jié)構(gòu)、錨桿等在設(shè)計(jì)階段和施工階段的特性研究并運(yùn)用Revit二次開發(fā),設(shè)計(jì)算法實(shí)現(xiàn)了拱蓋法車站構(gòu)件的參數(shù)化創(chuàng)建; 同時(shí)結(jié)合SQL數(shù)據(jù)庫,實(shí)現(xiàn)對(duì)構(gòu)件相關(guān)屬性的附加; 最后,以大連地鐵5號(hào)線石葵路車站實(shí)例驗(yàn)證了本文提出的信息化模型快速建立的可行性。
PBA工法是通過側(cè)壁支撐結(jié)構(gòu)和拱部初期支護(hù)形成的支撐體系代替?zhèn)鹘y(tǒng)的預(yù)支護(hù)和初期支護(hù)結(jié)構(gòu)的工法,其主要思想主要為將蓋挖及分布開挖法有機(jī)結(jié)合,充分發(fā)揮各自的優(yōu)勢,而地鐵車站拱蓋法是在PBA法的基礎(chǔ)上,以大拱腳來取代邊樁,使主要承載力依附于巖石地基上,在前期已經(jīng)扣拱的情況下,主體結(jié)構(gòu)施工方法采用逆作法或者順作法,解決了PBA法導(dǎo)洞多、工序復(fù)雜、廢棄工程量小等缺點(diǎn),科學(xué)有效地解決地鐵施工中的軟硬地層問題。
拱蓋法車站通常由導(dǎo)洞、拱蓋初支、拱蓋二襯、基坑側(cè)墻等構(gòu)件進(jìn)行組成,整體地鐵車站各斷面模型變化不大,但地鐵施工的復(fù)雜性在于其深埋地下,圍巖信息等因素復(fù)雜多變,斷面尺寸存在變化,且相關(guān)屬性附加較為復(fù)雜,若對(duì)整體地鐵拱蓋法車站進(jìn)行建模,則需要針對(duì)不同尺寸的斷面進(jìn)行分別建模,完成建模后進(jìn)行拼裝,工作量較為龐大。若將車站各部分組建通過參數(shù)化建模,并結(jié)合SQL數(shù)據(jù)庫對(duì)各斷面組成部分的施工信息進(jìn)行附加,就可以提高信息化模型的建模效率,減輕建模人員的工作量。
本文通過使用WinForm窗體進(jìn)行設(shè)計(jì),創(chuàng)建參數(shù)化建模界面,進(jìn)行開發(fā)前引入RevitAPI.dll及RevitAPIUI.dll動(dòng)態(tài)鏈接庫,通過添加外部接口與Revit進(jìn)行關(guān)聯(lián),待添加外部接口后,依附于外部應(yīng)用的框架,在外部命令中添加相應(yīng)的功能代碼,完成類結(jié)構(gòu)的定義,待其重載后,通過外部命令執(zhí)行程序,Revit的二次開發(fā)過程如圖1所示。
拱蓋法車站斷面涉及構(gòu)件較多,結(jié)構(gòu)復(fù)雜,由初支、導(dǎo)洞、中隔墻、底板等構(gòu)成。本文為此根據(jù)現(xiàn)場的施工流程分別對(duì)各構(gòu)件進(jìn)行了參數(shù)化建模。根據(jù)CAD圖,將車站斷面構(gòu)件分別看作一個(gè)整體,具體分為小導(dǎo)洞、初支、底板等9個(gè)參數(shù)化建模構(gòu)件。其主體結(jié)構(gòu)主要由鋼筋與混凝土組成,考慮到建模精度及實(shí)際建模過程的復(fù)雜性,本文對(duì)部分模型及曲線進(jìn)行了適當(dāng)簡化,并僅對(duì)混凝土主體部分建模,其最終車站斷面示意圖如圖2所示。
圖1 二次開發(fā)流程
圖2 車站斷面示意圖
本文所建立的參數(shù)化模型是基于族文檔中的公制常規(guī)族模型,公制族模型的設(shè)計(jì)功能可以滿足絕大部分結(jié)構(gòu)模型的設(shè)計(jì)需要,且操作較為簡單,在高效建模方面具有非常好的運(yùn)用。由于各個(gè)斷面之間尺寸存在變化,因此本文基于各個(gè)構(gòu)件的具體尺寸(如弧度、厚度、拉伸長度等)作為具體參數(shù)對(duì)模型進(jìn)行二次開發(fā)。點(diǎn)、線、面、體是構(gòu)成三維BIM模型的基礎(chǔ),由兩點(diǎn)生成一線,線生成閉合的面,面生成閉合的體的幾何構(gòu)成關(guān)系,公制常規(guī)族API通過對(duì)其關(guān)鍵參數(shù)信息的控制,構(gòu)成了各個(gè)構(gòu)件的三維路線,確保了模型點(diǎn)、線、面的幾何構(gòu)成關(guān)系,使其最終能夠形成立體模型輪廓,各個(gè)構(gòu)件之間的尺寸根據(jù)圖紙進(jìn)行確定,確保最后拼裝時(shí)不存在誤差。公制常規(guī)族API封裝了一系列繪制三維BIM模型的幾何基元類和繪制函數(shù)。構(gòu)建基于Revit的拱蓋法暗挖地鐵車站土建結(jié)構(gòu)參數(shù)化模型常用的幾何基元類和繪制函數(shù)如下:
XYZ:三維坐標(biāo)點(diǎn),用來表示一個(gè)坐標(biāo)點(diǎn)或一個(gè)向量。
public XYZ
(
double x,
double y,
double z
)
Curve:參數(shù)曲線,包括直線、s曲線等。
直線(Line)。
public static Line CreateBound
(
XYZ endpoint1,
XYZ endpoint2
)
曲線(Arc)。
public static Arc Create
(
XYZ center,
double radius,
double startAngle,
double endAngle,
XYZ xAxis,
XYZ yAxis
)
Plane:幾何平面對(duì)象,構(gòu)建平面對(duì)象。
public static Plane CreateByNormalAndOrigin
(
XYZ normal,
XYZ origin
)
SketchPlane:工作平面,SketchPlane對(duì)象用作創(chuàng)建草圖參考元素(例如“模型曲線”)或草圖擁有元素(例如“通用形式”)的輸入。SketchPlane可以從現(xiàn)有元素獲得,也可以從幾何平面或平面創(chuàng)建。
CurveArray:可以包含曲線的數(shù)組。
CurveArrArray:可以包含任何類型的對(duì)象的數(shù)組。
Extrusion:拉伸命令,由二維閉合輪廓拉伸形成三維拉伸體。
public Extrusion NewExtrusion
(
bool isSolid,
CurveArrArray profile,
SketchPlane sketchPlane,
double end
)
RotateElement:圍繞給定的軸和角度旋轉(zhuǎn)元素。
public static void RotateElement
(
Document document,
ElementId elementToRotate,
Line axis,
double angle
)
MoveElement:通過給定的轉(zhuǎn)換移動(dòng)一個(gè)元素。
public static void MoveElement
(
Document document,
ElementId elementToMove,
XYZ translation
)
在Winform窗體內(nèi)按照提示要求輸入相關(guān)的關(guān)鍵參數(shù),程序即可利用關(guān)鍵參數(shù)信息,自動(dòng)實(shí)現(xiàn)點(diǎn)、線、面的繪制,對(duì)于常用的構(gòu)件形成參數(shù)化的族庫文件,在修改模型時(shí)無需傳統(tǒng)手動(dòng)修改,只需在參數(shù)化建模參數(shù)輸入框中輸入更改后的參數(shù)信息,即可生成新的BIM構(gòu)件,避免了大量重復(fù)性工作,大大降低了錯(cuò)誤率。以初支結(jié)構(gòu)為例,參數(shù)化創(chuàng)建車站初支模型時(shí),選取初支半徑、襯砌厚度、角度、車站初支長度作為隧道襯砌的控制參數(shù)。通過控制初支半徑、襯砌厚度、角度來確定車站初支的幾何外觀,以車站初支長度來確定一個(gè)斷面圖元的長度,來滿足不同種類和不同形態(tài)的車站初支結(jié)構(gòu)構(gòu)建。
在Revit控制面板上二次開發(fā)的下拉菜單欄中選擇初支構(gòu)件的建模功能程序,參考實(shí)際工程圖紙,在彈出的參數(shù)輸入窗口的指定位置中,按照初支構(gòu)件尺寸輸入相關(guān)尺寸參數(shù)、初支半徑、襯砌厚度、角度、初支長度參數(shù)信息,輸入完成后在族樣板中即可自動(dòng)生成相應(yīng)的三維模型構(gòu)件。如圖3~圖4所示。
圖3 初支參數(shù)化界面
圖4 生成初支
在項(xiàng)目中導(dǎo)入族庫內(nèi)的參數(shù)化車站構(gòu)件后,定義標(biāo)高,配合工具欄中的命令,如旋轉(zhuǎn)、移動(dòng)、陣列等,調(diào)整裝配位置,同時(shí)更改族構(gòu)件的尺寸參數(shù)及實(shí)例地鐵車站專業(yè)屬性參數(shù),依次實(shí)現(xiàn)地鐵車站襯砌、仰拱填充等各構(gòu)件的拼裝,最終完成車站整體模型的構(gòu)建。
錨桿支護(hù)是隧道施工中普遍存在的支護(hù)加固方法。錨桿的作用為穿過軟弱、松動(dòng)、不穩(wěn)定的巖土體,錨固在穩(wěn)定的巖土體上,通過巖土體內(nèi)部的錨桿改變圍巖本身的力學(xué)狀態(tài),提供足夠的拉力,克服滑落巖土體的自重和下滑力,在巖土體周圍形成一個(gè)整體而又穩(wěn)定的巖石帶,利用錨桿與巖土體的共同作用,達(dá)到維護(hù)邊坡穩(wěn)定的目的。錨桿有很多種,如砂漿錨桿、空心注漿錨桿和爆破錨桿等。本文將研究的重點(diǎn)放在了砂漿錨桿的創(chuàng)建層面上。錨桿在設(shè)置時(shí)由于其插入至巖體內(nèi)部,根據(jù)CAD圖,所需關(guān)注的參數(shù)主要有錨桿半徑、錨桿長度、錨桿間距以及錨桿排距等。
在具體到實(shí)際的工程中時(shí),導(dǎo)孔的每個(gè)錨桿都是沿著車站段拱的周向布置的。進(jìn)行布置時(shí),需要通過錨桿插入深度,插入角度,錨桿間距以及錨桿排距來確認(rèn)錨桿的實(shí)際位置。通常而言,實(shí)現(xiàn)錨桿快速排列有兩種方法:
1)根據(jù)連桿CAD圖生成并排列所有錨桿;
2)在Revit中通過弧線分別在Y軸與Z軸給予錨桿角度實(shí)施插入工作,保證其插入角度與CAD圖紙一致。首先對(duì)錨桿的基本坐標(biāo)進(jìn)行聲明,形成錨桿三維模型所需三維跡線,生成后繪制錨桿布置弧線,根據(jù)該模型的排列方式,對(duì)每個(gè)錨桿進(jìn)行旋轉(zhuǎn)至其插入角度。
因此,方法2)以最快速度布置錨桿,錨桿生成函數(shù)信息的代碼如下:
Helper.txt1=comboBox1.Text.Trim(); //關(guān)鍵參數(shù)輸入
Helper.txt2=comboBox2.Text.Trim(); //關(guān)鍵參數(shù)輸入
Helper.txt3=comboBox3.Text.Trim(); //關(guān)鍵參數(shù)輸入
Helper.txt4=comboBox4.Text.Trim(); //關(guān)鍵參數(shù)輸入
public class Helper
{
public static string txt1="";
public static string txt2="";
public static string txt3="";
public static string txt4="";
}
double n1=Convert.ToDouble(Form1.Helper.txt4)*(Math.PI/180); //繞Y軸旋轉(zhuǎn)角度
double n2=Convert.ToDouble(Form1.Helper.txt3)*(Math.PI/180); //繞Z軸旋轉(zhuǎn)角度
double R=Convert.ToDouble(Form1.Helper.txt1)/304.8; //錨桿半徑
double L=Convert.ToDouble(Form1.Helper.txt2)/304.8; //錨桿長
Arc arc1=Arc.Create(Plane.CreateByNormalAndOrigin(XYZ.BasisX, XYZ.Zero), R, 0, 2 * Math. PI); //創(chuàng)建弧線
CurveArray curveArray=new CurveArray();
CurveArrArray curveArr=new CurveArrArray();
curveArray.Append(arc1);
curveArr.Append(curveArray); //創(chuàng)建二維輪廓
Extrusion ex=doc.FamilyCreate.NewExtrusion(true, curveArr, SketchPlane.Create(doc,Plane.CreateByNormalAndOrigin(XYZ.BasisX, XYZ.Zero)); //拉伸形成三維圖形
根據(jù)以下流程來生成錨桿:
1)將其三維坐標(biāo)繪制完畢,并輸入相應(yīng)的錨桿生成參數(shù);
2)根據(jù)錨桿三維角度布置坐標(biāo)軸,并根據(jù)坐標(biāo)軸對(duì)錨桿進(jìn)行旋轉(zhuǎn)命令的編寫,待在傳統(tǒng)的族環(huán)境中,直接輸入?yún)?shù)可以生成單錨桿模型;
3)導(dǎo)入至項(xiàng)目文件中后,通過旋轉(zhuǎn)、陣列等操作命令,獲得最終位置的錨桿模型。
參照上面的流程,程序必須提供一個(gè)輸入界面,使用戶能夠容易地輸入錨桿的半徑和長度,繞Y軸和Z軸旋轉(zhuǎn)角度等參數(shù)。設(shè)置界面如圖5所示。單擊“確定”,項(xiàng)目文件中錨桿模型自動(dòng)生成。
圖5 錨桿參數(shù)化界面
圖6 生成錨桿效果
此外,在將單一錨桿引入工程項(xiàng)目中之后,由于每一榀錨桿的插入深度一致,因此需要了解錨桿如何能夠沿著任意設(shè)計(jì)的弧線以圓形的方式插入,其整體性構(gòu)思如下:
1)將錨桿移動(dòng)到拱蓋最初分支的弧中心;
2)將錨桿朝向規(guī)定方向(如向上)移動(dòng)圓弧半徑的距離,并建立一條與錨桿軸線重合的線段,以確定線段是否與圓弧相交;
3)相交時(shí),根據(jù)圓心的一側(cè),如逆時(shí)針旋轉(zhuǎn),每次旋轉(zhuǎn)超過最后0.001弧度(同時(shí)考慮模型的精度和插件的效率),直到相交曲線的位置不再旋轉(zhuǎn),然后回到0.001弧度,此位置將被視為端點(diǎn)一側(cè)的曲線,然后將錨桿旋轉(zhuǎn)到該位置; 沿著錨桿的另一側(cè)形成一組圓弧(例如:順時(shí)針方向)以獲得錨桿。
本文通過SQL Sever構(gòu)建一個(gè)基于BIM的地鐵車站模型的數(shù)據(jù)庫。這樣的構(gòu)建方式,降低了信息存儲(chǔ)的難度。無需改動(dòng)數(shù)據(jù)庫本身,便可以任意添加數(shù)據(jù),準(zhǔn)確、完整的存儲(chǔ)施工信息。
在數(shù)據(jù)庫建立完成后,通過Revit軟件打開參數(shù)化拱蓋法暗挖地鐵車站模型,以二次開發(fā)的方式,添加外部接口,將插件與Revit平臺(tái)相鏈接載入Excute代碼獲取模型所有屬性,通過構(gòu)件的拓?fù)潢P(guān)系,以Revit.UI.Selection獲取構(gòu)件唯一ID; 然后,對(duì)SQL數(shù)據(jù)連接參數(shù)進(jìn)行定義并創(chuàng)建連接實(shí)例。當(dāng)數(shù)據(jù)庫連接后,定義數(shù)據(jù)庫適配器與數(shù)據(jù)集,創(chuàng)建DBOoperate數(shù)據(jù)庫操作對(duì)象,執(zhí)行數(shù)據(jù)庫操作指令,實(shí)現(xiàn)篩選對(duì)應(yīng)構(gòu)件屬性表內(nèi)數(shù)據(jù)字段,并運(yùn)用foreach語句逐行識(shí)別主鍵字段。主鍵字段識(shí)別后,調(diào)出數(shù)據(jù)表內(nèi)對(duì)應(yīng)主鍵ID的其他字段,將各列字符串分別輸出至對(duì)應(yīng)的label內(nèi),實(shí)現(xiàn)點(diǎn)選車站構(gòu)件屬性信息的查詢功能。
石葵路站位于解放路與石葵路交叉口北側(cè),沿解放路南北向布置。場地內(nèi)地形起伏較大,車站范圍內(nèi)地面絕對(duì)標(biāo)高32.8~40.0m,地勢南低北高。場地周邊為密集住宅及商業(yè)區(qū),道路車流量大,地下鋪設(shè)管線及空中架設(shè)管線較多,是人流、車流的密集區(qū)域。
石葵路站采用拱蓋法進(jìn)行施工,即先開挖上部拱蓋,通過初期支護(hù)和臨時(shí)中支撐進(jìn)行加固。拆除臨時(shí)支撐后,拱部二襯結(jié)構(gòu)模筑成型。由于施工工序較為復(fù)雜,工序轉(zhuǎn)換次數(shù)與接頭數(shù)量較多,致使二襯結(jié)構(gòu)交替施工,導(dǎo)致拱蓋法車站族構(gòu)件尺寸存在變化,較為復(fù)雜。因此,通過參數(shù)化建模創(chuàng)建拱蓋法車站是必要的。
通過參數(shù)化建模完成石葵路站模型后,完成效果如圖7所示。參數(shù)化模型建立完成后,通過數(shù)據(jù)庫對(duì)模型施工信息進(jìn)行附加,完善信息化模型的建立。通過點(diǎn)擊車站斷面內(nèi)構(gòu)件,將對(duì)應(yīng)車站斷面的圍巖信息、支護(hù)信息等以窗體界面的形式進(jìn)行顯示,顯示效果如圖8~圖9所示。
圖7 拱蓋法車站模型
圖8 車站圍巖信息查詢
圖9 車站支護(hù)信息查詢
通過本文研究,得到相關(guān)結(jié)論如下:
(1)通過對(duì)拱蓋法構(gòu)件詳細(xì)深入地分析,了解到了拱蓋法車站建模的特點(diǎn),歸納并總結(jié)了構(gòu)件建模所需的參數(shù)和繪圖功能,并用RevitAPI編寫了與之相適應(yīng)的程序,將各構(gòu)件的參數(shù)化建模予以匹配。
(2)結(jié)合SQL數(shù)據(jù)庫,在參數(shù)模型中添加信息,在設(shè)計(jì)和建造過程中添加相關(guān)信息,完成信息模型的創(chuàng)建。
(3)對(duì)比以前的建模方法,所創(chuàng)建的插件不僅可以快速、批量地建立站點(diǎn)組件的模型,還可以通過結(jié)合SQL數(shù)據(jù)庫對(duì)構(gòu)件信息進(jìn)行快速添加,大大提高了建模效率,有效地防止了相關(guān)人員的大量重復(fù)工作,保證了相關(guān)人員更加重視BIM系統(tǒng)的功能開發(fā)和性能優(yōu)化,使其應(yīng)用價(jià)值得到了進(jìn)一步的印證。