你好,這里是BIMBOX。
今天的文章來自于我們的一位朋友,技術(shù)大牛 @Jack。他最早從室內(nèi)設(shè)計(jì)專業(yè)進(jìn)入BIM圈,之后又進(jìn)了暖通專業(yè),還拿過兩個(gè)機(jī)械發(fā)明專利,對(duì)于模型和數(shù)據(jù)有很深的思考。
最近在我們的作者群里,Jack 分享了他使用非BIM軟件完成數(shù)據(jù)對(duì)接,做出了類似4D BIM成果的技術(shù)思路,并提出了原創(chuàng)的想法「散裝BIM」,我們覺得和上次@金戈的數(shù)模分離探索有著某種契合。
今天的內(nèi)容,你讀起來會(huì)覺得很「硬」,我們建議可以不必全文一字不落的讀完,有些小節(jié)跟不上可以跳過。但如果你能硬著頭皮把這塊骨頭啃下來,一定能對(duì) BIM 的模型和數(shù)據(jù)的關(guān)系有更深的理解。
以下是他的全文,已經(jīng)和BIMBOX一起完成修改。
你好,我是Jack,一位硬核BIMer。今天我的分享是《散裝BIM——非BIM軟件的改造》,我想先從自己對(duì)目前BIM的一個(gè)思考談起。
OpenBIM 這個(gè)理念最早是由ArchiCAD的母公司圖軟公司提出來并發(fā)揚(yáng)光大的,它表達(dá)的是一種開放的BIM之路?!督ㄖこ绦畔⒛P蛻?yīng)用統(tǒng)一標(biāo)準(zhǔn)》的條文說明里闡述了我國對(duì)BIM實(shí)施之路的態(tài)度:實(shí)踐證明用一款軟件、一個(gè)模型來實(shí)現(xiàn)全生命周期管理是不可能的。我國主張的方法是把整個(gè)BIM拆分成多個(gè)子模型、多種專業(yè)軟件,通過軟件之間的數(shù)據(jù)交換,來提高效率。于是,為了減少軟件或者人事成本,或者是為了保持技術(shù)優(yōu)勢(shì),很多企業(yè)會(huì)專門設(shè)立一個(gè)研究部門負(fù)責(zé)探索「非BIM軟件」的 BIM 改造等工作。
這方面我參與過的技術(shù)探索很多,比如使用 Sketchup+Dynamic components (簡(jiǎn)稱DC)動(dòng)態(tài)組件+Profile Builder (簡(jiǎn)稱PB)來建模,可以把模型做的快速又輕量化,同時(shí)利用 SketchUp 生成報(bào)告的功能,對(duì)DC(動(dòng)態(tài)組件)進(jìn)行數(shù)模分離,達(dá)到算量的目的。這里面 DC 就類似于 Revit 中的族,PB類似于 Revit 里面的 Dynamo。這種方法做出來的 Sketchup 模型大小僅僅是 Revit 模型大小的1/4,甚至更小。圖中的Revit文件為在桌子云中互相鏈接拼接而成的分工協(xié)同文件,所以作比較,得算所有文件的總大小。再比如,在工期十分緊張的情況下,我會(huì)使用 CAD 動(dòng)作錄制或是宏來做,功能上等于自定義編程的建模插件,接著導(dǎo)入到 Revit 中做族。遇到深化問題,我就修改 CAD 模型。用這種方法,我曾經(jīng)獨(dú)自在2-5天完成圖片里這種項(xiàng)目的暖通建模工程。于是我就思考,這種看似旁門左道的做法算什么呢?用 SketchUp 或是 Grasshopper 等非BIM軟件作為建模的方式,然后用 Revit 等BIM軟件來呈現(xiàn)?目前也有插件可以實(shí)現(xiàn)它們與Revit的實(shí)時(shí)關(guān)聯(lián)互通,是條走的通的路。為了把這個(gè)想法說清楚,就叫它散裝的BIM好了。意思是開放式的散戶、小戶型,和Revit的大戶型相比,就有了點(diǎn)味道。所以,對(duì)比一下以Revit等軟件為信息建?;A(chǔ)的設(shè)計(jì)流程,我把它稱為:整裝BIM。與之相對(duì)的,不以Revit等軟件為信息建模基礎(chǔ)的設(shè)計(jì)流程,我把它稱為:散裝BIM。它們的區(qū)別在于模型和數(shù)據(jù)的捆綁程度。? 整裝BIM的信息是原生裝配好的,需要我們?cè)诓煌A段去分離自己需要的信息。這種方式需要熟練掌握軟件內(nèi)部固定規(guī)則,遇到棘手問題時(shí)可以快速做出判斷,這個(gè)需求軟件能不能實(shí)現(xiàn),是不是需要和其他軟件協(xié)作。? 散裝BIM的信息是相對(duì)游離的,需要我們?cè)诓煌A段去附加或是分離自己需要的信息,以滿足各方數(shù)據(jù)共享的需求。不同于整裝 Revit 的固定規(guī)則,我們可以根據(jù)工程各類情況和企業(yè)需求,邊設(shè)計(jì)邊思考,可以編程出這樣那樣的功能,然后展開一頓風(fēng)騷走位。在多專業(yè)協(xié)作上,我必然是推崇整裝BIM的廣而全,Revit也許是大多數(shù)BIMer的信仰。但在單獨(dú)專業(yè)的內(nèi)需上,我竊喜散裝BIM的專一和自由,因?yàn)樗梢愿鶕?jù)需求去做些自定義的功能或是更好的BIM,是一條開放的路。今天我會(huì)分享一個(gè)散裝BIM4D的案例,使用的軟件是建筑設(shè)計(jì)師很喜歡的 Rhino,和它搭配的參數(shù)化編程工具叫 Grasshopper(簡(jiǎn)稱GH),如果你沒聽說過,可以把 Rhino 對(duì)標(biāo)成 Revit,把 Grasshopper 對(duì)標(biāo)成 Dynamo。為什么要去思考繪圖邏輯這種事情呢?因?yàn)榘焉⒀bBIM組裝到一起,需要對(duì)模型附加信息,附加信息則需要找到途徑,這個(gè)途徑的捷徑,就是順著繪圖邏輯來的。比如,對(duì)大多數(shù)2D繪圖軟件來說,繪圖邏輯是圖層,而信息附加的途徑可以是圖塊、子圖層等其他邏輯。所以為了方便走捷徑,就看繪圖邏輯,基于圖層就是最好的。當(dāng)我們使用一個(gè)非BIM軟件來做散裝BIM時(shí),需要分兩步走。? 第一步,確定軟件的繪圖邏輯,根據(jù)繪圖邏輯找到最好的數(shù)據(jù)和模型連接途徑。? 第二步,找插件或者寫程序,確定數(shù)據(jù)和模型連接的方式。前面我們說,使用 SketchUp 做散裝BIM,必須要使用動(dòng)態(tài)組件。咱們就以先以它為例,梳理一下尋找連接途徑和連接方式的思路。在 SketchUp 中,在組件的內(nèi)部和外部,材質(zhì)優(yōu)先權(quán)不同,圖層優(yōu)先權(quán)也不同。當(dāng)我們?cè)诮M件內(nèi)外給一個(gè)物體設(shè)置不同材質(zhì)和圖層時(shí),屬性顯示出來都是以組件外為準(zhǔn)的。如果簡(jiǎn)單的把圖層作為連接途徑,去對(duì)接數(shù)據(jù)和模型,就會(huì)因?yàn)榻M件的內(nèi)外唯一性關(guān)系被干擾,導(dǎo)致我們繞路子。為了正向設(shè)計(jì)操作上不誤操作,信息對(duì)接得不繞路子,就需要找到優(yōu)先權(quán)最高的圖形屬性。對(duì)于 Sketchup 來說,優(yōu)先權(quán)最高的圖形屬性能夠被點(diǎn)開一個(gè)窗口,讓用戶注意到并使用它。SketchUp 的管理目錄就是這樣展示出來的,我們可以看出它的繪圖邏輯是組件所呈現(xiàn)出的一排排層次的關(guān)系。比如下面這張圖中的形體,是從面開始copy自身所形成多邊形體的動(dòng)態(tài)組件,在管理目錄下看到組件的層次關(guān)系就是它的繪圖邏輯,比如里面的H copy 001和H copy 002,即使是復(fù)制的主體一致,因?yàn)楹椭黧w平級(jí),在設(shè)置不同參數(shù)時(shí)也不能聯(lián)動(dòng)。順藤摸瓜,動(dòng)態(tài)組件的屬性編輯窗口呈現(xiàn)的就是組件的層次關(guān)系,于是,動(dòng)態(tài)組件就是最優(yōu)的連接途徑,連接方式是動(dòng)態(tài)組件的屬性編輯窗口,并利用其自帶的 function 達(dá)到相關(guān)功能。如果你從來沒用過 Sketchup,上面這一段不理解也沒關(guān)系,這里只是闡述一種組裝散裝BIM的思考方式。找到了連接方式和連接途徑,我們就能激發(fā)Sketchup 的BIM建模的潛力,并在最優(yōu)解的基礎(chǔ)上達(dá)到相應(yīng)的BIM功能。4D BIM在SketchUp的實(shí)現(xiàn)方法可以是:整體大樓做一個(gè)大的組件,樓層為子組件,利用 onclick 的動(dòng)態(tài)組件function,用 animation 程序的公式進(jìn)行4D動(dòng)畫的參數(shù)控制,如下圖簡(jiǎn)單示意。今天要正式分享 Rhino+GH 的散裝BIM4D案例,思路也分為兩步走:? 第一步,找到數(shù)據(jù)和模型的連接方式要做4D BIM,最重要的工作是給模型構(gòu)件附加時(shí)間信息,在GH內(nèi)部直接做流水節(jié)拍相對(duì)繁瑣,就需要找到 GH 在外部讀取數(shù)據(jù)的方式。GH 里有讀取模型的電池,也有利用數(shù)據(jù)干預(yù)模型的電池組,只要解決了數(shù)據(jù)和模型的連接,就可以完成參數(shù)化驅(qū)動(dòng)的4D方式。我找到的連接方式是使用 GH 插件 Lunchbox 。? 第二步,找到數(shù)據(jù)和模型的連接途徑數(shù)據(jù)總不能一條一條地附加信息,要找到一個(gè)分類方式,再把數(shù)據(jù)精準(zhǔn)地連接到模型對(duì)應(yīng)的部分。比如,根據(jù)圖中 GH 內(nèi)電池提供的功能,Rhino 可以基于圖層進(jìn)行數(shù)據(jù)的對(duì)接。當(dāng)然也可選擇其他的連接途徑,這部分內(nèi)容我們放到結(jié)尾再詳細(xì)討論。到這一步,還不能正式開始干活,我們還需要解決標(biāo)準(zhǔn)化的問題。模型和數(shù)據(jù)的標(biāo)準(zhǔn)化在 Rhino 里,確定模型和數(shù)據(jù)的連接途徑是圖層,那就要按圖層把模型做一個(gè)分類的工作。我們稱這個(gè)步驟為模型標(biāo)準(zhǔn)化。搞清楚它,即便你不理解今天的案例,也能知道目前 BIM 的癥結(jié)在哪里。需要說的是,這個(gè)步驟在「整裝BIM」里是不存在的,因?yàn)橄?Revit 這樣的軟件已經(jīng)有系統(tǒng)性的數(shù)據(jù)附加規(guī)則,不需要為了附加信息對(duì)模型做處理。而真正成熟的、具有正向設(shè)計(jì)能力的「散裝BIM」也是不需要「模型標(biāo)準(zhǔn)化」的,比如 SketchUp 全部用動(dòng)態(tài)組件建出的BIM模型。有「模型標(biāo)準(zhǔn)化」就會(huì)有「數(shù)據(jù)標(biāo)準(zhǔn)化」,這個(gè)就不僅僅是散裝BIM的事兒了,整裝BIM也要面對(duì)。咱們先拿整裝 BIM 來解釋一下,Revit 族左側(cè)的屬性欄里,有一行一行的數(shù)據(jù)信息。如果沒有這些信息,后面分析、模擬等的BIM步驟都做不了。有時(shí)候我們需要調(diào)用的信息不是現(xiàn)成的,比如要調(diào)取主筋總數(shù)的值,那就需要用主筋間距乘以根數(shù),再來些運(yùn)算其他的,這個(gè)就是對(duì)數(shù)據(jù)進(jìn)行一次處理,也就是數(shù)據(jù)標(biāo)準(zhǔn)化。這個(gè)乘法只是一個(gè)簡(jiǎn)單的例子,如果要運(yùn)算的東西特別多、特別復(fù)雜,就得考慮人力成本的問題了,運(yùn)算越復(fù)雜,標(biāo)準(zhǔn)化就越重要。為了使模型和數(shù)據(jù)有效達(dá)到我們的目的,目的可以是相互連接、也可以是運(yùn)算,就需要解決數(shù)據(jù)和模型的標(biāo)準(zhǔn)化。具體先解決哪一個(gè),取決于我們手里已經(jīng)有哪一個(gè)標(biāo)準(zhǔn)了。? 當(dāng)模型標(biāo)準(zhǔn)成熟,數(shù)據(jù)還沒有標(biāo)準(zhǔn)時(shí),我們就得根據(jù)模型的標(biāo)準(zhǔn)去設(shè)定數(shù)據(jù)的標(biāo)準(zhǔn)。比如目的是數(shù)據(jù)連接時(shí),也就是調(diào)整連接方式來適應(yīng)已經(jīng)建好的模型。? 當(dāng)數(shù)據(jù)標(biāo)準(zhǔn)成熟,模型還沒有標(biāo)準(zhǔn)時(shí),我們就得根據(jù)數(shù)據(jù)的標(biāo)準(zhǔn)去設(shè)定模型的標(biāo)準(zhǔn)。比如目的是數(shù)據(jù)連接時(shí),也就是修改模型去適應(yīng)它的數(shù)據(jù)連接方式。那么制定標(biāo)準(zhǔn)的依據(jù)是什么?是需求。
比如,我的需求是做散裝BIM4D,那就得給模型構(gòu)件附加時(shí)間的信息。時(shí)間信息是可以這樣去標(biāo)準(zhǔn)化的,比如:我通過Excel內(nèi)的數(shù)字序號(hào),甚至排列的次序,或是時(shí)間點(diǎn)的量化處理等。而在GH內(nèi)部再進(jìn)行二次的數(shù)據(jù)處理。如下圖所示,左側(cè)序號(hào)可以作為時(shí)間參數(shù)輸入。前面我們說,標(biāo)準(zhǔn)化的目的是數(shù)模連接。那如果模型沒有按照?qǐng)D層來建,或者構(gòu)件所在的圖層不符合附加信息的要求,就得人為地把它們調(diào)整到對(duì)應(yīng)的圖層上。這就是我們說的,已經(jīng)有了標(biāo)準(zhǔn)的數(shù)據(jù),要以此標(biāo)準(zhǔn)化模型。當(dāng)然,在工程項(xiàng)目里,需求可能是來自設(shè)計(jì)師的,比如優(yōu)化方案;也可能是工程項(xiàng)目方的,比如做進(jìn)場(chǎng)安排。經(jīng)常發(fā)生的事就是一方要求另一方把標(biāo)準(zhǔn)改成對(duì)自己有利的。這也真是苦了專門負(fù)責(zé)數(shù)據(jù)和模型轉(zhuǎn)換的BIMer。也正是因?yàn)楦鞣叫枨蟛煌?,整裝BIM的模型標(biāo)準(zhǔn)又涉及到底層的圖形邏輯,不可能因?yàn)閿?shù)據(jù)標(biāo)準(zhǔn)不同,要求設(shè)計(jì)師重新做,甚至有些轉(zhuǎn)換是根本沒辦法做的。這也是為什么會(huì)去做「散裝BIM」,目的就是既可以調(diào)整數(shù)據(jù)標(biāo)準(zhǔn),也可以調(diào)整模型標(biāo)準(zhǔn),提高靈活性,甚至順帶對(duì)有優(yōu)勢(shì)的方面進(jìn)行內(nèi)部集成,提高繪圖效率。我們談到了繪圖規(guī)則,進(jìn)而說了模型標(biāo)準(zhǔn)和數(shù)據(jù)標(biāo)準(zhǔn)的關(guān)系。接下來說說今天的技術(shù)實(shí)現(xiàn)部分。我面臨的實(shí)際情況是:數(shù)據(jù)是標(biāo)準(zhǔn)化的(4D時(shí)間信息用序號(hào)表示),模型需要標(biāo)準(zhǔn)化(按圖層安置各部分模型)。然后就可以考慮可視化編程了。編程要解決下面幾件事:? 4D動(dòng)畫方式:制作下落式組裝動(dòng)畫。? 圖層數(shù)量:根據(jù)構(gòu)件動(dòng)畫順序把圖層分為48個(gè),以此構(gòu)造數(shù)列去實(shí)現(xiàn)表格的讀取。? 參數(shù)計(jì)算:除了時(shí)間參數(shù)以外,還要計(jì)算比如成本等數(shù)據(jù)。最后,下面就是正式的可視化編程了,如果你對(duì)這部分具體的操作不感興趣,可以粗略看一下我的思路,或者直接跳過看我的總結(jié);如果你想嘗試一下,也可以整體跟著做一遍。我們要做的就是通過實(shí)際的案例了解Grasshopper附加信息的方式。Rhino6(或者帶grasshopper的Rhino4/5)?整體的GH可視化編程結(jié)果如下圖。
由C:/路徑、根據(jù)圖層讀取,以及片體三個(gè)電池組成。目的是為了減少數(shù)據(jù)的Bug,同時(shí)使正確的數(shù)據(jù)持續(xù)地對(duì)準(zhǔn)正確的模型圖層。由C:/路徑、Toggle、來自Lunchbox的讀取表格、梳理用的小樹和去錯(cuò)幾個(gè)電池組成。利用Toggle進(jìn)行數(shù)據(jù)更新,達(dá)到參數(shù)化實(shí)時(shí)的變化,比如:時(shí)間的變化、成本的變化。利用小樹和去錯(cuò)電池穩(wěn)定數(shù)據(jù),確保程序不會(huì)擋掉。通過多個(gè)顏色塊按次序的篩出,對(duì)應(yīng)讀取表格內(nèi)的具體序號(hào),對(duì)不同模型部位上色。由一些條件判斷和紅色區(qū)域中的移動(dòng)電池組成。如果不滿意下落式動(dòng)畫可更換電池,變成漸隱式或上升式。數(shù)據(jù)的邏輯是總數(shù)不斷變小或變大,減去需要下落/上升的固定數(shù)值,做一個(gè)最大值判斷來達(dá)到逐步下落/上升的動(dòng)畫,以此呈現(xiàn)4D的時(shí)間流逝。這種數(shù)據(jù)邏輯是速度恒定的等節(jié)拍流水,其實(shí)不等節(jié)拍、異步流水、交叉流水等,都可以通過判斷來實(shí)現(xiàn)。由一些我們?cè)敢庠趃rasshopper內(nèi)調(diào)整的數(shù)據(jù)組成。這部分的作用是簡(jiǎn)化電池和表格數(shù)據(jù)。這些數(shù)據(jù)我們可以直接在Grasshopper里調(diào)整,而不需要每次都要在表格里去改速度然后用 布爾值按鈕更新,減少了很多操作。由一些數(shù)學(xué)運(yùn)算電池組成。這部分的作用是從模型提取出的幾何信息和附加上的非幾何信息的運(yùn)算,可以根據(jù)項(xiàng)目或行業(yè)不同的估價(jià)標(biāo)準(zhǔn)進(jìn)行調(diào)整。? 5D數(shù)據(jù)呈現(xiàn)和4D動(dòng)畫區(qū)域。由一些表單,和視窗組成。作用是將4D、5D用可視化的方式呈現(xiàn)。最后,總的梳理一下,共這6個(gè)部分,如圖所示。補(bǔ)充一下,這個(gè)案例中模型和數(shù)據(jù)的格式,如圖所示。CAD中的模型根據(jù)圖層進(jìn)行分類,Excel中的右側(cè)白色格子的數(shù)據(jù)代表成本或是其他需要添加的多維數(shù)據(jù)。成本的信息通過算量區(qū)域以動(dòng)態(tài)圖表的方式展示出來了,具體可以看下面的動(dòng)畫。BIM 4D 就是在模型上附加時(shí)間,而5D是在4D上附加成本。時(shí)間的變化需要?jiǎng)赢嬋コ尸F(xiàn),而利用 Grasshopper 的方式還可以實(shí)現(xiàn)多維數(shù)據(jù)的添加。今天分享的散裝BIM4D案例,主要是基于圖層對(duì)模型進(jìn)行分類,再根據(jù)分類附加信息。我們還可以探索更好的解決方案,脫離圖層作為數(shù)模途徑的方式。比如在Grasshopper里利用 Human 和 HumanUI 插件完成正向BIM交互設(shè)計(jì),并按照「族」分類生成模型,模型和數(shù)據(jù)連接途徑會(huì)變成電池包。通過電池任意 broke 模型,滿足不同的標(biāo)準(zhǔn)化需求,按圖層生成或是按族類別生成都可以。如果涉及到運(yùn)維,則可以利用 API 或是 FireFly 插件對(duì)設(shè)備進(jìn)行連接,輸入位置等其他信息,再利用 GH 和 Revit 相關(guān)插件進(jìn)行參數(shù)化聯(lián)動(dòng),那可就真是打開了一扇大門。今天的文章無論是從思想還是操作,都可以說是非常硬核了,如果你堅(jiān)持讀到這兒,相信一定能有些啟發(fā)。Jack 琢磨出的散裝BIM思路,SketchUp 的那一套做法,已經(jīng)能在網(wǎng)上查到相關(guān)的視頻教程。而 Rhino+GH 學(xué)習(xí)成本高,相對(duì)冷門些,今天的案例還可以衍生出一些功能,比如隨工期變化模擬施工安全、隨工期和估價(jià)的變化模擬風(fēng)險(xiǎn)等等。未來BIM會(huì)帶來更多的設(shè)備,也會(huì)帶來更多的數(shù)據(jù)標(biāo)準(zhǔn)。借用圖軟公司的BIM理念:「不同專業(yè)的人,將用專屬于自己的軟件去解決效率和信息化的問題,然后通過開放的方式共享信息,來實(shí)現(xiàn)BIM。」未來的 BIMer 可能需要具備靈活處理數(shù)據(jù)和模型的能力,同時(shí)對(duì)于只帶幾何信息的模型,多種多樣的信息附加方式也值得我們?nèi)ヌ剿鳌?/span>最后,BOX也對(duì)熱情分享技術(shù)的 Jack 表達(dá)最衷心的謝意。
本文提供的技術(shù)方案僅供參考,在重大項(xiàng)目應(yīng)用務(wù)必注意風(fēng)險(xiǎn)。本期內(nèi)容探討人: @小耳朵貓醬 @VCTCN93 @老孫 @熊仔 @開開 @Duan
本期內(nèi)容贊賞金額全部歸作者和參與討論的小伙伴們所有,感謝大家支持本篇文章來源于微信公眾號(hào): BIM清流BIMBOX