汪 勇,付 豪
(重慶市設(shè)計院,重慶市400039)
Dynamo 是一款圖形化的編程插件,在0.7 版本以后實現(xiàn)獨立操作,先期版本只能支持Revit,在2019年后開始同步兼容Civil3D。截止本文撰寫時,Dynamo 最新版本已經(jīng)升級至2.0,軟件穩(wěn)定性較前期都有較大提升。Dynamo 通過前期封裝功能性節(jié)點,使設(shè)計師可輕松實現(xiàn)簡單的可視化編程,設(shè)計師根據(jù)自身需求選取不同節(jié)點,創(chuàng)建三維模型或其他自動化計算程序。這些功能在Revit 或者傳統(tǒng)AutoCAD上幾乎是不能實現(xiàn)的。更為重要的是,Dynamo 可視化編程技術(shù)門檻較低,不懂編程的土木工程設(shè)計師也能在BIM(Civil3D/Revit)環(huán)境中快速地進行模型設(shè)計。Dynamo 的源代碼Github 上托管,并建立開源討論社區(qū),整個軟件由大家共同維護,集眾家所長,快速成長和完善。Dynamo 作為插件可以在Revit2013/Civil3D2020 或更高的版本上運行。而且,在需要時,Dynamo 也可獨立運行,只是獨立運行時,Dynamo 與其他軟件關(guān)聯(lián)性的節(jié)點無法生效[1]。Dynamo 程序界面如圖1 所示。
圖1 Dyna mo 程序界面
“可視化編程”即只需設(shè)計師梳理一定的邏輯方法,通過連接事先封裝好帶有指定功能的節(jié)點,輕松創(chuàng)建出滿足設(shè)計要求的算法或程序。通過節(jié)點的輸入、計算、輸出的基本思路即可解決遇到的問題。該方法最大的亮點在于不需要設(shè)計師浪費大量的時間成本去學(xué)習(xí)計算機語言,只是通過掌握各節(jié)點的基本作用就能快速構(gòu)建自己的邏輯鏈條,享受高速發(fā)展的計算機技術(shù)帶來的設(shè)計便利。
它是通過計算式設(shè)計方法和可視化編程語言,針對某個問題在工作界面里連接預(yù)先封裝好帶有特定功能的節(jié)點,如圖2 所示,設(shè)置一套循序漸進的程序流(算法),通過輸入、處理和輸出的基本邏輯解決問題[2]。
圖2 節(jié)點輸入與輸出邏輯
當(dāng)Dynamo 作為Revit 插件運行時,Revit 和Dynamo 共享項目原點,Dynamo 讀取到Revit 構(gòu)建后會將Revit 族加載到自身的操作空間內(nèi),并根據(jù)一定的邏輯指導(dǎo)加載的族生成設(shè)計的三維幾何模型,并將成果同步映射到Revit 軟件環(huán)境中,完成參數(shù)化建模流程。Dynamo 只保存參數(shù)化設(shè)計邏輯流程,再次使用時,只需將Dynamo 和Revit 關(guān)聯(lián),就能在短時間內(nèi)指導(dǎo)Revit 生成設(shè)計模型,整個協(xié)同工作流程如圖3 所示。當(dāng)Dynamo 作為Civil3D 的插件運行時,Dynamo讀取Civil3D 內(nèi)的部件,通過一定的邏輯指導(dǎo)部件生成相應(yīng)的幾何體,整體過程與Dynamo 在Revit 下運行的原理一致,此處不再贅述。
圖3 Dyna mo 與Re vit 交互流程
本文通過一個實際例子,分別從橋梁中心線生成,橋墩橋臺的建模與放置,橋梁上部結(jié)構(gòu)的生成,來展示Dynamo 在Revit 平臺下的數(shù)字設(shè)計效果及技術(shù)路線。
橋梁的線路中心線,我們一般直接從AutoCAD Civil 3D 中導(dǎo)入Revit,其中常規(guī)的空間曲線進Revit的方式有兩種。
(1)方法1:通過C3D 的數(shù)據(jù)報告功能,輸出道路中心點報告。運用Excel 對輸出的點數(shù)據(jù)進行處理,通過每一個點坐標(biāo)都同時減去第一個點坐標(biāo)的值,形成數(shù)值相對較小的相對點坐標(biāo)系統(tǒng)。再通過Dynamo的Data.ImportExcel 節(jié)點直接讀取Excel 相對坐標(biāo)文件,生成線路中心線,最后通過節(jié)點ModelCurve.By-Curve 輸出中心線進入Revit,完成軟件數(shù)據(jù)交互。如圖4 所示。
圖4 從Exce l 讀取中心線
(2)方法2:通過直接把C3D 里的橋梁中心線轉(zhuǎn)化為帶有高程的樣條曲線后,將該段曲線另存為一個全新的DWG 文檔,在Revit 里直接導(dǎo)入該文檔,通過Dynamo 的Select Model Element 節(jié)點直接讀取導(dǎo)入的CAD 圖元,即可完成數(shù)據(jù)交互。如圖5 所示。
圖5 中心線轉(zhuǎn)化模型線
拾取中心線后,我們通常需要建立上部結(jié)構(gòu)輪廓,通過輪廓與導(dǎo)入的橋梁中心線,共同放樣生成橋梁的上部結(jié)構(gòu),如圖6 所示。由于Dynamo 的特殊性與梁的幾何特性,我們選擇在Revit 中利用公制常規(guī)模型進行上部結(jié)構(gòu)輪廓的繪制。載入輪廓后,利用Dynamo 中的Solid.ByLofe 節(jié)點,與之前導(dǎo)入的中心線,共同完成橋梁上部結(jié)構(gòu)的放樣。由于大部分結(jié)構(gòu)中間都存在空心部分,所以我們一般會用到Solid.Difference 節(jié)點,對整個圖形求幾何差積,完成構(gòu)建的空心剪切,如圖7 所示。
圖6 上部結(jié)構(gòu)放樣
圖7 上部結(jié)構(gòu)空心剪切
橋墩與橋臺,我們需要在Revit 里對其完成常規(guī)建族,由于橋墩與橋臺結(jié)構(gòu)特點,我們選擇公制柱常規(guī)模板對其進行建立。建立過程比較簡單,主要為拉伸與放樣方法,此處就不再贅述。
橋墩與橋臺建立完成后,我們在Dynamo 中運用Family Type 節(jié)點,載入橋墩族與橋臺族。并通過拾取點的辦法精確放置墩臺于指定位置,如圖8 所示。
橋墩與橋臺放置到指定位置后,我們需要對其做矢量旋轉(zhuǎn),這里選擇用的Dynamo 的Vector.Angle-WithVector 節(jié)點。該處夾角一般為路線前進方向與Y坐標(biāo)的夾角α。完成旋轉(zhuǎn)后,由于橋臺的方向正反方相互對應(yīng),其中一個橋臺還需手動再旋轉(zhuǎn)180°,如圖9 所示。
圖8 橋臺與橋墩族的選擇
圖9 圖元矢量旋轉(zhuǎn)
至此,漂亮的連續(xù)梁橋模型就建立完畢。最后,我們再使用ImportInstance.ByGeometry 節(jié)點,把生成的圖元輸出到Revit 中,完成整體Dynamo 圖元到Revit圖元的轉(zhuǎn)換,如圖10 所示。全工程不需要設(shè)計師了解任何的程序語言,通過現(xiàn)有的自帶節(jié)點,即可完成相對復(fù)雜的工程構(gòu)筑物的建模工作。Dynamo 出現(xiàn)對于BIM 技術(shù)真正的落地,有非常大的推動作用。
圖10 Re vit 成橋模型
對此連續(xù)梁項目,筆者采用參數(shù)化與可視化程序結(jié)合的實施方法對其進行編程建模:利用Dynamo 完成了橋梁中心線導(dǎo)入、橋梁上部結(jié)構(gòu)的建立,利用傳統(tǒng)Revit 建立橋墩與橋臺模型并通過Dynamo 對建立的墩臺族進行準(zhǔn)確放置。兩軟件分別擇其長,協(xié)同、快速的建立橋梁模型,兩種軟件的建模方式對比見表1。
表1 Re vit 與Dyna mo 建模對比
Dynamo 除作為Revit 的插件外,還能獨立完成輕量級的景觀橋快速建模。
景觀橋一般由拱梁、上桁架、拉桿、橫梁、橋面板組成。
首先定位出3 個點,通過Arc.ByThreePoints 節(jié)點,完成首單側(cè)拱梁曲線的繪制,如圖11 所示。再通過對稱與放樣完成兩側(cè)拱梁結(jié)構(gòu)的放樣。
圖11 拱梁線形生成
使用簡單的Python 腳本,在拱梁上指定位置定位指定點,直接用Cylinder.ByPointsRadius 節(jié)點,實現(xiàn)對兩點連接并放樣,完成拱梁上部桁架結(jié)構(gòu)的建模,如圖12 所示。
圖12 上部桁架生成
橋面板與橫梁均采用節(jié)點Surface.Thicken 通過平面拉伸生成,此處不在贅述。橋梁拉桿通過與桁架相同的辦法,定位出點,點與橫梁形成線,最后通過Cylinder.ByPointsRadius 節(jié)點,放樣形成拉桿結(jié)構(gòu),如圖13 所示。
圖13 Dyna mo 景觀橋成型
至此,我們僅使用Dynamo 就完成了該景觀橋的建模工作。作為插件的Dynamo 本身也有其獨立完整性。如有需要,我們也可結(jié)合Revit 進行聯(lián)動,完成大型復(fù)雜構(gòu)件的建模工作。
計算式設(shè)計的基礎(chǔ)在于腳本的創(chuàng)建。設(shè)計師按自身需求,選擇程序預(yù)先封裝好的節(jié)點拼裝出自己的程序。這種方法節(jié)約了設(shè)計師學(xué)習(xí)編程的時間,降低了軟件使用門檻。但因計算僅基于Dynamo 靜態(tài)節(jié)點,代碼處理不同數(shù)據(jù)的能力也因此被削弱。為彌補該類不足,Dynamo 還開放了用戶自定義節(jié)點,允許設(shè)計師自行通過Python 腳本語言創(chuàng)建自定義節(jié)點。熟悉編程的設(shè)計師往往通過寫代碼定義出有針對性的節(jié)點,高效地解決設(shè)計中遇到的難題,避免因原生節(jié)點計算力不足,導(dǎo)致思維邏輯不得不繞“遠路”的辦法。
近年來,隨著計算機、樹脂材料、工業(yè)制作等專業(yè)的不斷發(fā)展,與土木工程相結(jié)合的跨界運用不斷涌現(xiàn),3D 打印技術(shù)無疑是眾多應(yīng)用中的一個亮點。有的3D 打印機甚至可以直接打印結(jié)構(gòu)構(gòu)件或小型建筑。該方法地出現(xiàn)極大地提高了生產(chǎn)效率,提升建筑設(shè)計的適應(yīng)性以及拓展性。這在技術(shù)上是一個質(zhì)地飛躍,極大影響到建筑設(shè)計思維。3D 打印技術(shù)的興起以數(shù)控技術(shù)為依托,改變了以前建筑只能手工堆砌的狀態(tài)。時代的發(fā)展對傳統(tǒng)設(shè)計行業(yè)提出了更高的要求,程序設(shè)計,不但可以豐富設(shè)計師的設(shè)計手段,更可有效地實現(xiàn)對機器設(shè)備地控制,從而完成與新技術(shù)地結(jié)合,實現(xiàn)智慧建造。
由于Dynamo 本身使用開源的方式進行開發(fā)與維護,使得設(shè)計師可以根據(jù)自身需求,將Dynamo 進行定制化開發(fā),并移植到需要的軟件中。當(dāng)開發(fā)者發(fā)現(xiàn)Dynamo 主程序本身存在Bug 或有更優(yōu)化的處理邏輯也可直接Pull Request 向Dynamo 根項目發(fā)起代碼更新請求。此外,Autodesk 公司還推出了更穩(wěn)定,兼容性更好,界面設(shè)計更優(yōu)秀的Dynamo Studio,該軟件進行收費許可,對穩(wěn)定性看重的大型企業(yè)可以考慮這種商業(yè)版。該項目組表示基礎(chǔ)版本的Dynamo 會持續(xù)開源狀態(tài),并長期免費提供下載。通過這種可交互式的開發(fā)模式,設(shè)計師感受到了來自軟件廠商的平等溝通,為Dynamo 的發(fā)展攢下了不少的好感。這也使得Dynamo 版本快速地迭代更新,軟件本身不斷地完善。
在整個建模過程中,Dynamo 可視化程序算法的預(yù)定義功能節(jié)點的復(fù)雜連接看似繁雜,但用戶只需梳理好建模的邏輯思路,并將思路轉(zhuǎn)化為一步步的邏輯程序,即可創(chuàng)建復(fù)雜的空間曲面形體[3]。
本文將計算式設(shè)計、可視化編程與橋梁工程相結(jié)合,將這種新的設(shè)計方式引入到BIM 橋梁設(shè)計中,并取得了一些初步成果。
與西方發(fā)達國家相比,我國BIM 技術(shù)研究起步相對較晚[4],但現(xiàn)今信息化已逐漸成為我國土建行業(yè)的主流與熱點,也是未來的發(fā)展方向。在復(fù)雜造型建筑結(jié)構(gòu)的設(shè)計施工中,Dynamo 等參數(shù)化設(shè)計軟件將發(fā)揮越來越重要的作用[3]。