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