奚春林
【摘要】某國(guó)際機(jī)場(chǎng)屋頂鋼結(jié)構(gòu)網(wǎng)殼基于曲面布置弧形構(gòu)件,所有構(gòu)件的板厚、螺栓選擇、配筋的類型等根據(jù)自身或者周邊進(jìn)行計(jì)算后,選取不同的類型及規(guī)格。因此深化難度大、定位困難,傳統(tǒng)手動(dòng)建模效率低、出錯(cuò)率高。本文介紹一種通過(guò)Rhino軟件進(jìn)行曲面、控制線建立,通過(guò)開(kāi)發(fā)自定義Grasshopper組件與Tekla Structures進(jìn)行參數(shù)化交互式BIM建模的一種程序設(shè)計(jì)思路,從而達(dá)到簡(jiǎn)化BIM建模流程、提高建模效率。
【關(guān)鍵詞】鋼結(jié)構(gòu)深化設(shè)計(jì);BIM;Rhino;Grasshopper;Tekla Structures;參數(shù)化設(shè)計(jì);交互式建模
1.屋面鋼結(jié)構(gòu)深化概況
某國(guó)際機(jī)場(chǎng)采用三角形狀設(shè)計(jì),屋面覆蓋面積約30萬(wàn)平方米,屋面結(jié)構(gòu)有40跨弧形單元,每跨中包含4~5個(gè)網(wǎng)殼單元,每個(gè)單元中包含136~510個(gè)網(wǎng)殼盒子組成。網(wǎng)殼盒子采用鋼板組合1.5~4.5米大小的盒子,盒子底部澆筑160mm的混凝土,盒子之間采用螺栓連接后組成結(jié)構(gòu)體系,鋼板盒子總數(shù)達(dá)到40000多個(gè)。由于組成盒子的底部需要按照建筑造型切割為弧形,造型又為雙曲漸變,因此每個(gè)構(gòu)件相似但又不相同。盒子的板厚由垂直方向的長(zhǎng)度進(jìn)行控制,連接螺栓數(shù)量按照連續(xù)跨設(shè)計(jì)(連接板左右二個(gè)單元的跨度尺寸進(jìn)行控制),盒子底部設(shè)置混凝土配筋體系,同時(shí)單元中間部分盒子又開(kāi)有天窗孔洞。參照國(guó)際慣例設(shè)計(jì)圖紙僅提供了控制點(diǎn)坐標(biāo)以及節(jié)點(diǎn)的計(jì)算原則,需要按照控制點(diǎn)位及計(jì)算原則搭設(shè)LOD400精度等級(jí)的BIM深化加工模型進(jìn)行生產(chǎn)、安裝。
2.本工程屋面鋼結(jié)構(gòu)深化BIM模型的實(shí)施思路
2.1 深化模型軟件分析
在鋼結(jié)構(gòu)深化設(shè)計(jì)階段BIM搭建使用最為廣泛的軟件為Tekla Structures軟件,該軟件能夠在材料或結(jié)構(gòu)十分復(fù)雜的情況下,實(shí)現(xiàn)準(zhǔn)確細(xì)致、極易施工的三維模型建模和管理。對(duì)深化加工圖紙、加工數(shù)據(jù)及CNC加工銜接度高。在搭建模型均基于BIM對(duì)象(如:梁、板、螺栓對(duì)象),但對(duì)曲面不規(guī)則適用性差。需要其他軟件在三維空間中創(chuàng)建點(diǎn)、線導(dǎo)入后作為建模參考,才能創(chuàng)建BIM對(duì)象。
對(duì)于曲面造型建筑領(lǐng)域使用最廣泛的為Rhino軟件,Rhino軟件是基于NURBS為主三維建模軟件。能通過(guò)點(diǎn)、線精確創(chuàng)建NURBS曲面,快速便捷的通過(guò)曲面創(chuàng)建構(gòu)件的基準(zhǔn)線、基準(zhǔn)點(diǎn)。但Rhino是基于點(diǎn)、線、面的三維建模軟件,并非基于BIM對(duì)象,后期出圖、管理、材料數(shù)據(jù)提取較為困難。
Grasshopper是基于Rhino軟件下可視化程序設(shè)計(jì)建模的插件,通過(guò)編寫建模邏輯算法,機(jī)械性的重復(fù)操作可被計(jì)算機(jī)的循環(huán)運(yùn)算取代。程序設(shè)計(jì)簡(jiǎn)單、快捷,與Rhino模型指令結(jié)合度高,能提供復(fù)雜的建模以及大幅度提高工作效率,同時(shí)邏輯計(jì)算模塊可以自主進(jìn)行二次開(kāi)發(fā)。
結(jié)合本項(xiàng)目的特點(diǎn),通過(guò)對(duì)目前行業(yè)內(nèi)使用最為成熟、廣泛的軟件進(jìn)行分析、選取,本工程屋面鋼結(jié)構(gòu)深化最終確定使用Rhino、Grasshopper與Tekla Structures各自優(yōu)點(diǎn)進(jìn)行結(jié)合使用。
2.2 BIM模型搭建的實(shí)施思路
本工程屋面鋼結(jié)構(gòu)深化先由Rhino建立控制面,通過(guò)Grasshopper編制邏輯程序模塊,由建模參數(shù)計(jì)算后通過(guò)基準(zhǔn)面建立控制線、同時(shí)建立實(shí)體模型,由二次開(kāi)發(fā)組件與Tekla Structures進(jìn)行交互式建模,最終由Tekla Structures進(jìn)行出圖、加工Grasshopper數(shù)據(jù)、CNC數(shù)據(jù)提取。二個(gè)軟件內(nèi)部數(shù)據(jù)結(jié)構(gòu)不同,Rhino實(shí)體模型導(dǎo)入并不能夠進(jìn)行后期出圖和數(shù)據(jù)提取,交互式建模采用位置信息、構(gòu)件屬性數(shù)據(jù)的傳遞,為保證Tekla Structures的模型準(zhǔn)確性,后期把Rhino實(shí)體模型導(dǎo)入Tekla Structures對(duì)形體進(jìn)行一次校對(duì)、復(fù)核。最終在Tekla Structures中以BIM模型對(duì)象形式呈現(xiàn),與其他主體結(jié)構(gòu)體系軟件保持一致性,保證整個(gè)項(xiàng)目的銜接性及可靠性。
3.鋼結(jié)構(gòu)參數(shù)化深化設(shè)計(jì)
3.1 核心組件的二次開(kāi)發(fā)介紹
為打通Rhino與Tekla Structures之間的數(shù)據(jù)交互,通過(guò)C#開(kāi)發(fā)Grasshopper的自定義組件。對(duì)本次屋頂鋼結(jié)構(gòu)深化節(jié)點(diǎn)進(jìn)行盤點(diǎn),需要開(kāi)發(fā)的Tekla Structures的建模功能有直梁、折梁、多邊形邊、螺栓以及物體切割。結(jié)合Grasshopper提供的SDK開(kāi)發(fā)幫助、Tekla Structures的OpenAPI_Reference幫助文件進(jìn)行二次開(kāi)發(fā)。Grasshopper自定義組件開(kāi)發(fā)的架構(gòu)如下:
提取Rhino中的參考線、參考點(diǎn)的數(shù)據(jù)來(lái)建立Tekla Structures中的對(duì)象,以直梁為例:
由于Grasshopper一旦數(shù)據(jù)輸入完整會(huì)即時(shí)計(jì)算,為防止不必要的運(yùn)算和構(gòu)件重復(fù)創(chuàng)建,我們?cè)陂_(kāi)發(fā)模塊中設(shè)置了Eanble開(kāi)關(guān),僅在確認(rèn)Rhino中的輔助線無(wú)誤時(shí)才會(huì)對(duì)Tekla Structures進(jìn)行交互建模。
本工程的構(gòu)件是基于雙曲曲面,大部分構(gòu)件在三維空間中存在角度偏轉(zhuǎn),在參數(shù)化建模時(shí)雖然可以對(duì)偏轉(zhuǎn)角度進(jìn)行設(shè)置,但角度的計(jì)算對(duì)數(shù)學(xué)邏輯要求極高、難度極大。為解決角度偏轉(zhuǎn)問(wèn)題,在完成輔助線時(shí)引入與構(gòu)件對(duì)齊的Plan與Tekla Structures中的用戶坐標(biāo)系進(jìn)行匹配。在Tekla Structures建模前先建立與Rhino中Plan一致的用戶坐標(biāo)系,傳遞物體的控制點(diǎn)前先使用矩陣向量從世界坐標(biāo)系轉(zhuǎn)換為局部坐標(biāo)系(TransformationMatrixToLocal.Transform)后再進(jìn)行賦值創(chuàng)建。在局部坐標(biāo)系中創(chuàng)建的物體僅需對(duì)坐標(biāo)Plan進(jìn)行控制,基于世界坐標(biāo)系的角度偏轉(zhuǎn),軟件自動(dòng)完成計(jì)算。通過(guò)局部坐標(biāo)系有效的統(tǒng)一了不同構(gòu)件的三維空間位置。
建立完的Tekla Structures物體提取Guid值作為參數(shù)進(jìn)行輸出,Guid值在Tekla Structures是唯一編碼,為后期再次查詢、操作物體提供查找依據(jù)(如:在該物體上創(chuàng)建螺栓、切割)。
3.2 參數(shù)化建模程序設(shè)計(jì)
3.2.1 深化逆向搭建控制面、控制線
在創(chuàng)建屋頂鋼結(jié)構(gòu)BIM模型前先逆向建立控制曲面,通過(guò)曲面進(jìn)行控制生成控制線來(lái)進(jìn)行控制物體的位置。從設(shè)計(jì)圖紙中提取坐標(biāo)點(diǎn)至Excel,同樣編制Grasshopper的程序讀取Excel的坐標(biāo)點(diǎn)進(jìn)行展點(diǎn),展點(diǎn)的同時(shí)對(duì)點(diǎn)的U、V值進(jìn)行編號(hào),后期網(wǎng)殼盒子的構(gòu)件編號(hào)與U、V值進(jìn)行對(duì)應(yīng),防止相似不相同的構(gòu)件查找困難。點(diǎn)通過(guò)Grasshopper安裝坐標(biāo)位置(X、Y值)進(jìn)行排序后連成成為曲線,由網(wǎng)格曲線群來(lái)進(jìn)行控制曲面。網(wǎng)殼盒子的板件、鋼筋位置均由網(wǎng)格曲線及曲面來(lái)進(jìn)行位置控制。
3.3.2 參數(shù)化自動(dòng)建模設(shè)計(jì)
雖然Grasshopper做好數(shù)據(jù)匹配,每個(gè)單元可以一次性完成建模,但本工程深化設(shè)計(jì)時(shí)規(guī)格、尺寸、數(shù)量需要計(jì)算后由參數(shù)進(jìn)行驅(qū)動(dòng)【如:U(V)向板厚由V(U)向的長(zhǎng)度確定;節(jié)點(diǎn)板大小、螺栓數(shù)量有左右二邊的二分之一的長(zhǎng)度確定;配筋的類型及尺寸有跨度確定;邊跨和中間跨的取值有完全相同】,數(shù)據(jù)匹配難度較大。因此我們?cè)谠O(shè)計(jì)深化程序時(shí)簡(jiǎn)化設(shè)計(jì)流程、同時(shí)選取的參數(shù)可以再進(jìn)行一次人工復(fù)核,自動(dòng)化建模采用一個(gè)網(wǎng)格計(jì)算一次,對(duì)中間必要條件的參數(shù)進(jìn)行標(biāo)注顯示,人工復(fù)核時(shí)可通過(guò)標(biāo)注的參數(shù)進(jìn)行判定。
Grasshopper特性是一旦有條件輸入或數(shù)據(jù)變更,便立即參與計(jì)算或者部分條件計(jì)算,我們計(jì)算的輸入條件較多(四個(gè)網(wǎng)格邊線及底部偏移參考面和周邊的八個(gè)網(wǎng)格線等),且工程計(jì)算又較為復(fù)雜、耗時(shí)較多。在輸入條件中設(shè)置一個(gè)計(jì)算開(kāi)關(guān),輸入時(shí)僅對(duì)輸入數(shù)據(jù)進(jìn)行標(biāo)注確認(rèn),并不直接參與輔助線、實(shí)體模型的計(jì)算建立,完成所有參數(shù)輸入后,計(jì)算開(kāi)關(guān)設(shè)置為True后才會(huì)開(kāi)計(jì)算和建立模型。計(jì)算開(kāi)關(guān)的建立改善條件輸入時(shí)的效率,避免產(chǎn)生不必要的計(jì)算。
參數(shù)驅(qū)動(dòng)我們采用c# Script模塊直接輸入代碼進(jìn)行計(jì)算判定,此部分代碼為本項(xiàng)目專用、無(wú)通用性,因此無(wú)需編譯單獨(dú)的插件模塊。Script模塊優(yōu)點(diǎn):在計(jì)算時(shí)即時(shí)編譯代碼,可以實(shí)時(shí)調(diào)整計(jì)算代碼,方便調(diào)整參數(shù)及排除Bug。
在設(shè)計(jì)參數(shù)化自動(dòng)建模程序時(shí),為優(yōu)化計(jì)算、數(shù)據(jù)的統(tǒng)一性、排Bug的便捷性,我們采用模塊化的設(shè)計(jì)思路。按照功能打成Group組,如:參考面計(jì)算、主構(gòu)件板塊、連接板、檁拖、鋼配筋等。對(duì)于一些重復(fù)使用的功能打包成為Cluster族,不但可以簡(jiǎn)化主程序,修改功能或除Bug時(shí)僅需修改一次即可。
通過(guò)上述的程序設(shè)計(jì)思路,選用Rhino三維空間建模功能、Grasshopper的參數(shù)化、自動(dòng)化功能、Tekla Structures 實(shí)體化構(gòu)件、加工圖、加工數(shù)據(jù)提取功能,通過(guò)開(kāi)放的軟件接口把三者有機(jī)的進(jìn)行結(jié)合,把各自軟件的優(yōu)點(diǎn)放大、揚(yáng)長(zhǎng)避短,使本次的屋頂鋼結(jié)構(gòu)深化設(shè)計(jì)達(dá)到效率最高、深化更加便捷。
參考文獻(xiàn)
[1] RhinoCommon SDK documentation:Http://developer.rhino3d.com/api/RhinoCommonWin/html/N_Rhino.htm
[2] TeklaOpenAPI_Reference.chm:軟件安裝文件夾\Tekla Structures\18.1\nt\help\enu
[3] Grasshopper SDK :http://developer.rhino3d.com/5/guides/#grasshopper
[4]王奕修. Grasshopper 入門&晉級(jí)必備手冊(cè). 清華大學(xué)出版社,2013年10月第1版
(作者單位:上海精銳金屬建筑系統(tǒng)有限公司 )
【中圖分類號(hào)】TU318
【文獻(xiàn)標(biāo)識(shí)碼】A
【文章編號(hào)】1671-3362(2019)06-0060-04