陳素華,于智光,周 還,李瑞琪
(1. 東南大學(xué) 交通學(xué)院,江蘇 南京 210096; 2. 東南大學(xué) 建筑設(shè)計(jì)研究院有限公司,江蘇 南京 210096)
橋梁作為公共建筑物,以其實(shí)用性、巨大性、固定性和藝術(shù)性極大地影響并改變著人類的生活環(huán)境。景觀橋梁兼?zhèn)浣煌?、交流和文化等多重功?為滿足景觀外形要求,橋梁結(jié)構(gòu)往往會(huì)沿著三維空間曲線延伸,通過傾斜、扭轉(zhuǎn)及變形等方法將橋塔、拱肋等結(jié)構(gòu)構(gòu)件進(jìn)行變化[1]。相比于常規(guī)橋梁,景觀橋梁外形大多是異形空間曲面,采用傳統(tǒng)的二維CAD設(shè)計(jì)方法無法滿足設(shè)計(jì)要求,需要建立三維模型來輔助設(shè)計(jì)[2]。
對(duì)于無法提供函數(shù)表達(dá)式或者變化規(guī)律的曲面,其表達(dá)通常只能采用曲面上分段點(diǎn)的坐標(biāo)來表示,坐標(biāo)點(diǎn)間則用直線代替曲線。因此,曲面的表達(dá)精度受坐標(biāo)點(diǎn)分布疏密影響,表達(dá)的精度越高,坐標(biāo)點(diǎn)越密集,坐標(biāo)點(diǎn)數(shù)量越多。由于橋梁跨徑可從幾十米到上千米,橋梁寬度可從幾米到幾十米,假定按照1 m × 1 m的網(wǎng)格將橋梁構(gòu)件的曲面劃分為坐標(biāo)點(diǎn),則需要數(shù)百到數(shù)千個(gè)坐標(biāo)點(diǎn)。如果對(duì)每個(gè)點(diǎn)手動(dòng)提取坐標(biāo)數(shù)據(jù)則需要大量時(shí)間并且容易出錯(cuò)。為了高效且準(zhǔn)確地獲得用以分析景觀橋梁三維模型的數(shù)據(jù),筆者開發(fā)了一種結(jié)合參數(shù)化設(shè)計(jì)策略、批量提取景觀橋梁三維模型數(shù)據(jù)的方法,并對(duì)方法的拓展和應(yīng)用進(jìn)行了實(shí)例驗(yàn)證。
術(shù)語“參數(shù)”源自數(shù)學(xué),可修改的參數(shù)或變量可以控制關(guān)系式的結(jié)果[3]。因此,參數(shù)化設(shè)計(jì)的原理可以定義為數(shù)學(xué)設(shè)計(jì),將設(shè)計(jì)元素之間的關(guān)系用參數(shù)表示。參數(shù)化架構(gòu)側(cè)重于系統(tǒng)中執(zhí)行任務(wù)的各種設(shè)計(jì)元素之間的關(guān)系。參數(shù)化設(shè)計(jì)策略通過簡(jiǎn)潔合理的技術(shù)快速有效地解決設(shè)計(jì)問題[4]。與傳統(tǒng)的設(shè)計(jì)方法相比,參數(shù)化設(shè)計(jì)應(yīng)用數(shù)學(xué)變量可有效地解決復(fù)雜的幾何問題,并在自動(dòng)化過程中創(chuàng)建高級(jí)設(shè)計(jì)模型。參數(shù)化工具的自動(dòng)化基于精確的真實(shí)世界數(shù)據(jù)和算法,通過減少所需的迭代量來簡(jiǎn)化設(shè)計(jì)過程[5]。
通常,基于用戶決策和上下文設(shè)計(jì)信息對(duì)架構(gòu)模型進(jìn)行更改費(fèi)時(shí)又費(fèi)力,因?yàn)槟P屯ǔP枰耆匦略O(shè)計(jì)或不斷修改其關(guān)鍵部分,而參數(shù)化設(shè)計(jì)允許通過改變與幾何模型相關(guān)的參數(shù)值進(jìn)行快速迭代,因此效率得到極大提高。參數(shù)化設(shè)計(jì)的理念是通過連接設(shè)計(jì)元素來建立關(guān)系,并通過修改關(guān)系和觀察結(jié)果來構(gòu)建設(shè)計(jì),而不是在傳統(tǒng)設(shè)計(jì)工具中創(chuàng)建解決方案[6]。
參數(shù)化設(shè)計(jì)工具具有較強(qiáng)的靈活性和適應(yīng)性,能夠準(zhǔn)確地解決復(fù)雜建筑外觀設(shè)計(jì)等問題。應(yīng)用于建筑行業(yè)的各種參數(shù)化工具之間的連接是通過插件及時(shí)實(shí)現(xiàn)的,大多數(shù)工具是多個(gè)混合的平臺(tái),可以執(zhí)行各種任務(wù),如建模、仿真、評(píng)估等[7]。筆者基于參數(shù)化設(shè)計(jì)理念制定參數(shù)化設(shè)計(jì)策略,通過建筑行業(yè)的參數(shù)化設(shè)計(jì)工具來實(shí)現(xiàn)景觀橋梁三維模型數(shù)據(jù)的批量提取。
目前,市場(chǎng)上的三維建模軟件大體分為2類:①網(wǎng)格格式模型,該模型大多依靠手動(dòng)拖拽網(wǎng)格控制點(diǎn)生成,可以快速建立諸如人物角色等復(fù)雜無規(guī)則曲面,但模型不具備參數(shù)化性質(zhì),尺寸精度不高,多用于影視、游戲等視覺表現(xiàn)行業(yè),以3ds max,C4D,Maya等軟件為典型代表;②工業(yè)格式模型,該模型大多由精確的Nurbs曲線通過掃掠、放樣、拉伸等特定命令生成,模型精細(xì)化程度較高,軟件大多具備較強(qiáng)的參數(shù)化功能,但該模型需要參數(shù)控制,建模參數(shù)化過程往往耗時(shí)較長(zhǎng),一般多用于精密機(jī)械制造領(lǐng)域,以CATIA,Rhino,Solidworks等CAE軟件為代表。
Rhino軟件有超強(qiáng)的建模能力和優(yōu)秀的曲面表達(dá),雖然其本質(zhì)是三維建模軟件,但因有豐富的數(shù)據(jù)格式使其可以與其他BIM平臺(tái)軟件實(shí)現(xiàn)信息共享,可以導(dǎo)入導(dǎo)出3ds、obj、fbx等網(wǎng)格類三維模型數(shù)據(jù)格式,也可以導(dǎo)入導(dǎo)出igs、sat、stp等工業(yè)CAE三維模型數(shù)據(jù)格式,軟件本身輕巧易用,作為分析處理三維模型的軟件具有較多優(yōu)勢(shì)。Grasshopper為Rhino內(nèi)嵌的參數(shù)化設(shè)計(jì)插件,與Rhino的集成關(guān)聯(lián)較好,主要是采用可視化節(jié)點(diǎn)編程的方式來實(shí)現(xiàn)參數(shù)化的過程,對(duì)節(jié)點(diǎn)程序輸入一組數(shù)據(jù)即可實(shí)現(xiàn)批量數(shù)據(jù)的處理,該過程不涉及編寫代碼,非程序設(shè)計(jì)人員學(xué)習(xí)成本較低。除Grasshopper以外,土木建筑工程設(shè)計(jì)中常用的可視化節(jié)點(diǎn)編程工具還有Revit平臺(tái)下的Dynamo插件,但是該插件目前的研究及應(yīng)用范圍主要是參數(shù)化建模,很少用于模型數(shù)據(jù)批量提取。
綜上,Rhino Grasshopper幾乎是現(xiàn)有處理三維模型軟件中自由度最高的參數(shù)化工具,具有良好的界面和優(yōu)秀的拓展性[8]。因此,筆者選擇在Rhino Grasshopper平臺(tái)上進(jìn)行模型數(shù)據(jù)批量提取。
對(duì)于曲面的分段,建筑上通常采用UV分段獲得。張慎等[9]在Rhino Grasshopper平臺(tái)上通過Divide Surface運(yùn)算器對(duì)曲面進(jìn)行劃分獲取網(wǎng)架的UV劃分節(jié)點(diǎn);詹建文[10]向建筑幕墻曲面輸入U(xiǎn)V參數(shù)進(jìn)行網(wǎng)格劃分并提取節(jié)點(diǎn)信息。圖1為UV網(wǎng)格劃分建筑表皮曲面示意。
圖1 UV網(wǎng)格劃分建筑表皮曲面示意Fig. 1 Schematic diagram of UV mesh division of building skin curved surface
橋梁為沿路線中心線設(shè)計(jì)的帶狀結(jié)構(gòu)物[11],在符合路線大方向的基礎(chǔ)上,橋軸線盡量設(shè)置為與所跨越河流的水流方向或道路行車方向垂直的直線,以縮短橋長(zhǎng),方便橋下通航(或通車)。橋梁曲面大多沿縱橋向布置,如圖2的桁架橋、梁橋等均為沿縱橋向布置及變化的曲面。由于橋梁縱向延伸長(zhǎng)度通常遠(yuǎn)大于其橫向?qū)挾?不同于建筑通過UV網(wǎng)格劃分曲面,橋梁曲面大多沿著路線方向劃分,如圖3。
圖2 縱向延伸的橋梁曲面Fig. 2 Curved surface of the bridge longitudinally extending
圖3 沿路線方向劃分橋梁曲面Fig. 3 Dividing the bridge curved surface along the route direction
景觀橋梁三維模型數(shù)據(jù)提取過程如下:
1)分段。以橫隔板位置或小于相鄰橫隔板距離通過定距等分、定數(shù)等分等方式獲得沿分段曲線方向布置的多個(gè)分段平面,分段平面多為分段曲線的法平面。分段后擬合的模型需滿足外觀精度要求,誤差需控制在原模型外觀尺寸的±0.5%范圍內(nèi)。
2)切割。對(duì)曲面與分段平面運(yùn)行相交運(yùn)算器,獲得分段平面處的斷面輪廓線。
3)細(xì)分。將輪廓線炸開獲得輪廓線的控制點(diǎn),若輪廓線控制點(diǎn)無規(guī)律且不足以描述輪廓線形狀時(shí),可將輪廓線再進(jìn)行細(xì)分,用細(xì)分點(diǎn)來描述曲線輪廓。
4)提取坐標(biāo)。批量計(jì)算出細(xì)分點(diǎn)X、Y、Z坐標(biāo)值,坐標(biāo)原點(diǎn)位置可通過Plane Coordinates運(yùn)算器設(shè)置。
5)輸出數(shù)據(jù)。可將數(shù)據(jù)一鍵批量輸出到Excel表格中,Excel表格可置于設(shè)計(jì)圖紙中用以表述三維曲面。
圖4為在Grasshopper軟件中將原曲面分段-切割-細(xì)分的過程。
圖4 原曲面分段-切割-細(xì)分過程Fig. 4 Segmentation, cutting and subdivision process of the originally curved surface
筆者依托Rhino Grasshopper參數(shù)化平臺(tái),采用Visual Studio 2022工具,使用C#編程語言進(jìn)行Grasshopper運(yùn)算器“GH2CSV”的開發(fā),實(shí)現(xiàn)數(shù)據(jù)信息從Rhino Grasshopper平臺(tái)到Excel軟件的傳遞。在開發(fā)過程中,考慮到數(shù)據(jù)信息的規(guī)模性和易用性,遵循效率優(yōu)先原則,以“.CSV”文件格式為“GH2CSV”運(yùn)算器的輸出格式,利用System.IO中的“FileStream和StreamWriter類”獲取字節(jié)信息并重新編碼。通過嵌套循環(huán)將Grasshopper中的樹形數(shù)據(jù)格式轉(zhuǎn)化為二維數(shù)組格式,根據(jù)指定的文件路徑,完成數(shù)據(jù)從Grasshopper平臺(tái)向CSV文件的轉(zhuǎn)化,方便后續(xù)通過Excel軟件對(duì)輸出數(shù)據(jù)的進(jìn)一步加工處理,實(shí)現(xiàn)三維模型和二維信息的快速聯(lián)動(dòng)。程序封裝電池如圖5,部分程序代碼如下:
圖5 數(shù)據(jù)輸出Excel表格程序封裝電池Fig. 5 Packaged battery of the data outputting of Excel table program
private static void SaveCSVData(string fp, GH_Structure
{
string fullPath = fp + "\Data.csv";
System.IO.FileInfo fi = new System.IO.FileInfo(fullPath);
if(!fi.Directory.Exists)
{
fi.Directory.Create();
}
System.IO.FileStream fs = new System.IO.FileStream(fullPath, System.IO.FileMode.Append,
System.IO.FileAccess.Write);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.UTF8);
for (int i = 0; i
{
string data = 1 + i + ",";
for (int j = 0; j
{
string str =Table.Branches[i][j].ToString();
data += str;
if (j
{
data + = ",";
}
}
sw.WriteLine(data);
}
sw.WriteLine("Data results");
sw.Close();
fs.Close();
}
新建Excel表格,提取其路徑連接到“保存路徑”端,將需要導(dǎo)出的數(shù)據(jù)連接到“表格數(shù)據(jù)”端,在“觸發(fā)”端添加按鈕,點(diǎn)擊按鈕即可完成一鍵批量輸出數(shù)據(jù)信息,Grasshopper可視化節(jié)點(diǎn)程序電池如圖6。
三維模型數(shù)據(jù)批量提取應(yīng)用于橋梁工程時(shí),往往需要在基礎(chǔ)模塊上進(jìn)行部分功能拓展。筆者對(duì)其常用拓展功能進(jìn)行了總結(jié)。
2.3.1 分段軸線獲取
大部分橋梁構(gòu)件模型是通過中心軸線創(chuàng)建的,而部分橋梁構(gòu)件模型在創(chuàng)建過程中并沒有用到或者生成中心軸線,這種情況下需要對(duì)分段軸線進(jìn)行提取。分段軸線若為模型的邊線,則直接從模型提取;若為非模型邊線,則需要在Grasshopper中編寫程序來獲取。例如,對(duì)無中心線拱肋模型(圖7)的拱肋中心線的提取,可分為4步進(jìn)行:
圖7 無中心線拱肋橋梁模型Fig. 7 Model of arch rib bridge without centerline
1)提取拱肋邊線。若模型為Nurbs曲面,則可將模型炸開提取邊線;若模型為網(wǎng)格模型,則可應(yīng)用Lunchbox的Mesh Edges運(yùn)算器提取邊線。
2)將拱肋邊線分段并提取其法平面。
3)獲得法平面與拱肋模型交線。
4)獲得交線的截面形心,將形心點(diǎn)順次連接獲得拱肋的近似拱軸線。
量取拱肋邊線與近似拱軸線的最大偏移量,若不滿足精度要求,則用近似拱軸線取代拱肋邊線重復(fù)上述過程,直到滿足精度要求為止。
2.3.2 分段點(diǎn)位置確定
橋梁通常以橫隔板位置作為分段位置,在分段處以直代曲擬合模型。但當(dāng)分段軸線的曲率較大時(shí),以橫隔板位置作為分段將無法滿足外觀精度要求,此時(shí)需要間距更小的分段。以直代曲擬合的精度與分段數(shù)量相關(guān),分段數(shù)量越多擬合精度越高,而分段數(shù)量越多需要處理的數(shù)據(jù)量則越多,因此,需要得到滿足精度要求的最小分段數(shù)量。
Galapagos Evolutionary Solver運(yùn)算器通過內(nèi)置的遺傳算法可以快速求得在某精度范圍內(nèi)的最小分段數(shù)量。編寫程序?qū)⒕戎蹬c擬合前后曲線間最大偏差量的差值關(guān)聯(lián)到運(yùn)算器的Fitness位置,將曲線分段數(shù)量滑塊關(guān)聯(lián)到運(yùn)算器的Genome位置。在程序設(shè)置界面將Fitness設(shè)置為Minimize,運(yùn)行程序即可求得指定精度下的曲線最小分段數(shù)量。遺傳算法計(jì)算分段數(shù)量節(jié)點(diǎn)程序如圖8。
2.3.3 數(shù)據(jù)排序分組
由于橋梁整體通常為帶狀結(jié)構(gòu),結(jié)構(gòu)構(gòu)件沿著橋梁中心線展開,因此數(shù)據(jù)的排序以橋梁中心線從小樁號(hào)到大樁號(hào)為基礎(chǔ),并可拓展增加排序參照線,如:拱肋中心線、索塔中心線,或者繪制虛擬參照線等。對(duì)于數(shù)據(jù)的分組,通常按照橋塔數(shù)量、拱肋數(shù)量及主梁數(shù)量等元素進(jìn)行分組。根據(jù)項(xiàng)目需求,數(shù)據(jù)排序和分組的順序可先排序再分組,或先分組再排序,也可分組排序交替重復(fù)進(jìn)行。
濱河西路景觀橋位于西寧市城北區(qū)北川河河谷地帶,是西寧市北川河綜合治理工程的一部分。橋型為空間鋼拱橋,分別斜跨北川河內(nèi)河和外河。結(jié)構(gòu)跨徑布置為(95 + 110)m,全長(zhǎng)236.5 m,橋面總寬21 m,按整幅橋設(shè)計(jì)。橋梁效果見圖9。
圖9 濱河西路橋梁效果Fig. 9 Rendering design sketch of the bridge on Binhe West Road
橋梁平面位于圓曲線上,每跨由2片傾斜鋼拱肋組成,2片拱肋在拱頂位置相交匯合形成同一斷面,在橋臺(tái)與橋墩位置分叉為縱向和橫向雙肢拱。拱軸線為空間樣條曲線,拱肋斷面為變寬變高變角度的梯形和平行四邊形。拱肋平面及立面見圖10。
圖10 拱肋平面及立面Fig. 10 Plane and elevation of arch rib
橋梁外形最復(fù)雜的部分為拱肋,而拱肋尺寸及相關(guān)構(gòu)件的位置關(guān)系很難用一個(gè)函數(shù)關(guān)系式來表達(dá),只能通過在三維模型中獲取的數(shù)據(jù)來表達(dá),這需要大量的數(shù)據(jù)才能描述出拱肋的尺寸及位置,因此,可采取批量提取數(shù)據(jù)的方法進(jìn)行輔助設(shè)計(jì)。
運(yùn)用數(shù)據(jù)提取拓展方法中的分段軸線法對(duì)拱軸線進(jìn)行提取,在提取的拱軸線上批量獲得等距離分段點(diǎn)。先將距離設(shè)置為2 m(即橫隔板間距值),求得拱肋擬合邊線與原邊線的縱向距離最大值為6.5 mm,拱肋設(shè)計(jì)高度最小值為1.4 m,因此,擬合邊線與原邊線差值小于拱肋高度的0.5%,滿足外觀精度要求。
將在分段點(diǎn)處批量獲得拱軸線的法平面作為切割平面,用該平面切割拱肋三維模型以獲取拱肋斷面輪廓線,再將輪廓線炸開以獲取平行四邊形輪廓的4個(gè)角點(diǎn)。
將橫隔板沿道路中心線方向排序,由于每片拱肋均包含橫向分叉與豎向分叉,因此,首先,將每片拱肋橫隔板數(shù)據(jù)分為橫向分叉段1、2,豎向分叉段1、2,及無分叉段共5個(gè)組,4片拱肋共20組;然后,將橫隔板平行四邊形的4個(gè)角點(diǎn)按順時(shí)針方向A、B、C、D編號(hào)排序,如圖11,這樣即完成了整個(gè)拱肋參數(shù)的排序工作;最后,將拱肋數(shù)據(jù)批量輸出到Excel表格中,直接用于施工。除拱肋及隔板外,耳板、錨箱、拉索等構(gòu)件尺寸及定位數(shù)據(jù)均按照類似思路在Grasshopper中通過參數(shù)化節(jié)點(diǎn)程序?qū)崿F(xiàn)批量輸出。
圖11 排序方向和斷面線編號(hào)Fig. 11 Sorting direction and section line numbering
通過程序批量提取三維模型幾何信息數(shù)據(jù)可極大提高設(shè)計(jì)效率。拱肋坐標(biāo)點(diǎn)數(shù)據(jù)的提取過程,一方面應(yīng)用了數(shù)據(jù)提取基本方法,另一方面應(yīng)用了拱軸線提取及數(shù)據(jù)排序分組的拓展方法,同時(shí),須將數(shù)據(jù)擬合模型與原模型外觀尺度精度差值控制在0.5%范圍內(nèi)。圖12為整個(gè)過程的節(jié)點(diǎn)程序及流程。
圖12 拱肋模型數(shù)據(jù)提取流程Fig. 12 Flow chart of data extraction of arch rib model
西寧濱河西路景觀橋現(xiàn)已竣工通車,從圖13現(xiàn)場(chǎng)照片與BIM模型的對(duì)比可知,施工成果對(duì)設(shè)計(jì)成果的還原度很高。
圖13 現(xiàn)場(chǎng)航拍照片與BIM模型Fig. 13 On-site aerial photos and BIM model
正向設(shè)計(jì)一直被認(rèn)為是BIM技術(shù)的初衷之一[12],三維模型數(shù)據(jù)批量提取是BIM正向設(shè)計(jì)實(shí)現(xiàn)的重要前提,它不僅可以與計(jì)算模型結(jié)合,同步優(yōu)化,還可以實(shí)現(xiàn)自動(dòng)出圖、圖紙與模型相互關(guān)聯(lián)[13]。BIM模型不僅需要具有可視化的屬性,滿足工程人員對(duì)構(gòu)件更直觀的認(rèn)識(shí),還需要通過三維模型自動(dòng)獲得滿足造價(jià)計(jì)量業(yè)務(wù)的工程量,實(shí)現(xiàn)模型及數(shù)據(jù)的實(shí)時(shí)聯(lián)動(dòng),從而提升模型的價(jià)值[14]。西寧濱河西路景觀橋以BIM模型幾何信息的批量提取為基礎(chǔ),通過編寫程序,實(shí)現(xiàn)了程序批量出圖、統(tǒng)計(jì)工程量等BIM正向設(shè)計(jì)應(yīng)用。
簡(jiǎn)要介紹了景觀橋梁工程項(xiàng)目的特點(diǎn),提出了基于Rhino Grasshopper平臺(tái)的三維模型數(shù)據(jù)提取及處理方法,并將其應(yīng)用于西寧濱河西路景觀橋梁的數(shù)據(jù)提取,以描述三維空間拱肋復(fù)雜的外形。研究表明:該方法可快速提取三維模型尤其是三維異形曲面的幾何信息,極大地提高了數(shù)據(jù)獲取的效率;編寫的程序算法具有通用性,可應(yīng)用于其他三維模型,有助于推進(jìn)BIM正向設(shè)計(jì)的應(yīng)用與發(fā)展。