你好,这里是BIMBOX。
今天的文章来自于我们的一位朋友,技术大牛 @Jack。他最早从室内设计专业进入BIM圈,之后又进了暖通专业,还拿过两个机械发明专利,对于模型和数据有很深的思考。
最近在我们的作者群里,Jack 分享了他使用非BIM软件完成数据对接,做出了类似4D BIM成果的技术思路,并提出了原创的想法「散装BIM」,我们觉得和上次@金戈的数模分离探索有着某种契合。
今天的内容,你读起来会觉得很「硬」,我们建议可以不必全文一字不落的读完,有些小节跟不上可以跳过。但如果你能硬着头皮把这块骨头啃下来,一定能对 BIM 的模型和数据的关系有更深的理解。
以下是他的全文,已经和BIMBOX一起完成修改。
你好,我是Jack,一位硬核BIMer。今天我的分享是《散装BIM——非BIM软件的改造》,我想先从自己对目前BIM的一个思考谈起。
1 散装的BIMOpenBIM 这个理念最早是由ArchiCAD的母公司图软公司提出来并发扬光大的,它表达的是一种开放的BIM之路。《建筑工程信息模型应用统一标准》的条文说明里阐述了我国对BIM实施之路的态度:
实践证明用一款软件、一个模型来实现全生命周期管理是不可能的。我国主张的方法是把整个BIM拆分成多个子模型、多种专业软件,通过软件之间的数据交换,来提高效率。
于是,为了减少软件或者人事成本,或者是为了保持技术优势,很多企业会专门设立一个研究部门负责探索「非BIM软件」的 BIM 改造等工作。
这方面我参与过的技术探索很多,比如使用 Sketchup Dynamic components (简称DC)动态组件 Profile Builder (简称PB)来建模,可以把模型做的快速又轻量化,同时利用 SketchUp 生成报告的功能,对DC(动态组件)进行数模分离,达到算量的目的。
这里面 DC 就类似于 Revit 中的族,PB类似于 Revit 里面的 Dynamo。这种方法做出来的 Sketchup 模型大小仅仅是 Revit 模型大小的1/4,甚至更小。图中的Revit文件为在桌子云中互相链接拼接而成的分工协同文件,所以作比较,得算所有文件的总大小。
再比如,在工期十分紧张的情况下,我会使用 CAD 动作录制或是宏来做,功能上等于自定义编程的建模插件,接着导入到 Revit 中做族。遇到深化问题,我就修改 CAD 模型。用这种方法,我曾经独自在2-5天完成图片里这种项目的暖通建模工程。
于是我就思考,这种看似旁门左道的做法算什么呢?用 SketchUp 或是 Grasshopper 等非BIM软件作为建模的方式,然后用 Revit 等BIM软件来呈现?目前也有插件可以实现它们与Revit的实时关联互通,是条走的通的路。
为了把这个想法说清楚,就叫它散装的BIM好了。意思是开放式的散户、小户型,和Revit的大户型相比,就有了点味道。
所以,对比一下以Revit等软件为信息建模基础的设计流程,我把它称为:整装BIM。与之相对的,不以Revit等软件为信息建模基础的设计流程,我把它称为:散装BIM。它们的区别在于模型和数据的捆绑程度。
➤ 整装BIM的信息是原生装配好的,需要我们在不同阶段去分离自己需要的信息。
这种方式需要熟练掌握软件内部固定规则,遇到棘手问题时可以快速做出判断,这个需求软件能不能实现,是不是需要和其他软件协作。
➤ 散装BIM的信息是相对游离的,需要我们在不同阶段去附加或是分离自己需要的信息,以满足各方数据共享的需求。
不同于整装 Revit 的固定规则,我们可以根据工程各类情况和企业需求,边设计边思考,可以编程出这样那样的功能,然后展开一顿风骚走位。
在多专业协作上,我必然是推崇整装BIM的广而全,Revit也许是大多数BIMer的信仰。但在单独专业的内需上,我窃喜散装BIM的专一和自由,因为它可以根据需求去做些自定义的功能或是更好的BIM,是一条开放的路。
今天我会分享一个散装BIM4D的案例,使用的软件是建筑设计师很喜欢的 Rhino,和它搭配的参数化编程工具叫 Grasshopper(简称GH),如果你没听说过,可以把 Rhino 对标成 Revit,把 Grasshopper 对标成 Dynamo。
2 散装BIM的组装正式开始之前,咱们得先聊一件事:软件的绘图逻辑。
为什么要去思考绘图逻辑这种事情呢?因为把散装BIM组装到一起,需要对模型附加信息,附加信息则需要找到途径,这个途径的捷径,就是顺着绘图逻辑来的。
比如,对大多数2D绘图软件来说,绘图逻辑是图层,而信息附加的途径可以是图块、子图层等其他逻辑。所以为了方便走捷径,就看绘图逻辑,基于图层就是最好的。
当我们使用一个非BIM软件来做散装BIM时,需要分两步走。
➤ 第一步,确定软件的绘图逻辑,根据绘图逻辑找到最好的数据和模型连接途径。
➤ 第二步,找插件或者写程序,确定数据和模型连接的方式。
前面我们说,使用 SketchUp 做散装BIM,必须要使用动态组件。咱们就以先以它为例,梳理一下寻找连接途径和连接方式的思路。
在 SketchUp 中,在组件的内部和外部,材质优先权不同,图层优先权也不同。当我们在组件内外给一个物体设置不同材质和图层时,属性显示出来都是以组件外为准的。
如果简单的把图层作为连接途径,去对接数据和模型,就会因为组件的内外唯一性关系被干扰,导致我们绕路子。
为了正向设计操作上不误操作,信息对接得不绕路子,就需要找到优先权最高的图形属性。对于 Sketchup 来说,优先权最高的图形属性能够被点开一个窗口,让用户注意到并使用它。SketchUp 的管理目录就是这样展示出来的,我们可以看出它的绘图逻辑是组件所呈现出的一排排层次的关系。
比如下面这张图中的形体,是从面开始copy自身所形成多边形体的动态组件,在管理目录下看到组件的层次关系就是它的绘图逻辑,比如里面的H copy 001和H copy 002,即使是复制的主体一致,因为和主体平级,在设置不同参数时也不能联动。
顺藤摸瓜,动态组件的属性编辑窗口呈现的就是组件的层次关系,于是,动态组件就是最优的连接途径,连接方式是动态组件的属性编辑窗口,并利用其自带的 function 达到相关功能。
如果你从来没用过 Sketchup,上面这一段不理解也没关系,这里只是阐述一种组装散装BIM的思考方式。
找到了连接方式和连接途径,我们就能激发Sketchup 的BIM建模的潜力,并在最优解的基础上达到相应的BIM功能。
4D BIM在SketchUp的实现方法可以是:整体大楼做一个大的组件,楼层为子组件,利用 onclick 的动态组件function,用 animation 程序的公式进行4D动画的参数控制,如下图简单示意。
今天要正式分享 Rhino GH 的散装BIM4D案例,思路也分为两步走:
➤ 第一步,找到数据和模型的连接方式
要做4D BIM,最重要的工作是给模型构件附加时间信息,在GH内部直接做流水节拍相对繁琐,就需要找到 GH 在外部读取数据的方式。GH 里有读取模型的电池,也有利用数据干预模型的电池组,只要解决了数据和模型的连接,就可以完成参数化驱动的4D方式。我找到的连接方式是使用 GH 插件 Lunchbox 。
➤ 第二步,找到数据和模型的连接途径
数据总不能一条一条地附加信息,要找到一个分类方式,再把数据精准地连接到模型对应的部分。比如,根据图中 GH 内电池提供的功能,Rhino 可以基于图层进行数据的对接。当然也可选择其他的连接途径,这部分内容我们放到结尾再详细讨论。
到这一步,还不能正式开始干活,我们还需要解决标准化的问题。
3 模型和数据的标准化在 Rhino 里,确定模型和数据的连接途径是图层,那就要按图层把模型做一个分类的工作。我们称这个步骤为模型标准化。搞清楚它,即便你不理解今天的案例,也能知道目前 BIM 的症结在哪里。
需要说的是,这个步骤在「整装BIM」里是不存在的,因为像 Revit 这样的软件已经有系统性的数据附加规则,不需要为了附加信息对模型做处理。而真正成熟的、具有正向设计能力的「散装BIM」也是不需要「模型标准化」的,比如 SketchUp 全部用动态组件建出的BIM模型。
有「模型标准化」就会有「数据标准化」,这个就不仅仅是散装BIM的事儿了,整装BIM也要面对。
咱们先拿整装 BIM 来解释一下,Revit 族左侧的属性栏里,有一行一行的数据信息。如果没有这些信息,后面分析、模拟等的BIM步骤都做不了。
有时候我们需要调用的信息不是现成的,比如要调取主筋总数的值,那就需要用主筋间距乘以根数,再来些运算其他的,这个就是对数据进行一次处理,也就是数据标准化。这个乘法只是一个简单的例子,如果要运算的东西特别多、特别复杂,就得考虑人力成本的问题了,运算越复杂,标准化就越重要。
为了使模型和数据有效达到我们的目的,目的可以是相互连接、也可以是运算,就需要解决数据和模型的标准化。具体先解决哪一个,取决于我们手里已经有哪一个标准了。
➤ 当模型标准成熟,数据还没有标准时,我们就得根据模型的标准去设定数据的标准。比如目的是数据连接时,也就是调整连接方式来适应已经建好的模型。
➤ 当数据标准成熟,模型还没有标准时,我们就得根据数据的标准去设定模型的标准。比如目的是数据连接时,也就是修改模型去适应它的数据连接方式。
那么制定标准的依据是什么?是需求。
比如,我的需求是做散装BIM4D,那就得给模型构件附加时间的信息。时间信息是可以这样去标准化的,比如:我通过Excel内的数字序号,甚至排列的次序,或是时间点的量化处理等。而在GH内部再进行二次的数据处理。如下图所示,左侧序号可以作为时间参数输入。
前面我们说,标准化的目的是数模连接。那如果模型没有按照图层来建,或者构件所在的图层不符合附加信息的要求,就得人为地把它们调整到对应的图层上。
这就是我们说的,已经有了标准的数据,要以此标准化模型。
当然,在工程项目里,需求可能是来自设计师的,比如优化方案;也可能是工程项目方的,比如做进场安排。经常发生的事就是一方要求另一方把标准改成对自己有利的。这也真是苦了专门负责数据和模型转换的BIMer。
也正是因为各方需求不同,整装BIM的模型标准又涉及到底层的图形逻辑,不可能因为数据标准不同,要求设计师重新做,甚至有些转换是根本没办法做的。这也是为什么会去做「散装BIM」,目的就是既可以调整数据标准,也可以调整模型标准,提高灵活性,甚至顺带对有优势的方面进行内部集成,提高绘图效率。
4 案例操作展示我们谈到了绘图规则,进而说了模型标准和数据标准的关系。接下来说说今天的技术实现部分。
我面临的实际情况是:数据是标准化的(4D时间信息用序号表示),模型需要标准化(按图层安置各部分模型)。
然后就可以考虑可视化编程了。编程要解决下面几件事:
➤ 4D动画方式:制作下落式组装动画。
➤ 图层数量:根据构件动画顺序把图层分为48个,以此构造数列去实现表格的读取。
➤ 参数计算:除了时间参数以外,还要计算比如成本等数据。
最后,下面就是正式的可视化编程了,如果你对这部分具体的操作不感兴趣,可以粗略看一下我的思路,或者直接跳过看我的总结;如果你想尝试一下,也可以整体跟着做一遍。
我们要做的就是通过实际的案例了解Grasshopper附加信息的方式。
需要准备的条件:
一个已经完成建模的建筑模型✔
同一类族都放在同一图层中✔
Rhino6(或者带grasshopper的Rhino4/5)✔
Grasshopper的Lunchbox插件✔
整体的GH可视化编程结果如下图。
咱们分几部分说说。
➤ 读取模型区域。
由C:/路径、根据图层读取,以及片体三个电池组成。
目的是为了减少数据的Bug,同时使正确的数据持续地对准正确的模型图层。
➤ 读取表格区域。
由C:/路径、Toggle、来自Lunchbox的读取表格、梳理用的小树和去错几个电池组成。
利用Toggle进行数据更新,达到参数化实时的变化,比如:时间的变化、成本的变化。
利用小树和去错电池稳定数据,确保程序不会挡掉。
➤ 颜色附加区域。
由颜色块、合拢黑箭头和筛出电池组成。
通过多个颜色块按次序的筛出,对应读取表格内的具体序号,对不同模型部位上色。
➤ 动画控制区域。
由一些条件判断和红色区域中的移动电池组成。如果不满意下落式动画可更换电池,变成渐隐式或上升式。
数据的逻辑是总数不断变小或变大,减去需要下落/上升的固定数值,做一个最大值判断来达到逐步下落/上升的动画,以此呈现4D的时间流逝。这种数据逻辑是速度恒定的等节拍流水,其实不等节拍、异步流水、交叉流水等,都可以通过判断来实现。
➤ 速度控制区域。
由一些我们愿意在grasshopper内调整的数据组成。
这部分的作用是简化电池和表格数据。这些数据我们可以直接在Grasshopper里调整,而不需要每次都要在表格里去改速度然后用 布尔值按钮更新,减少了很多操作。
➤ 算量区域。
由一些数学运算电池组成。这部分的作用是从模型提取出的几何信息和附加上的非几何信息的运算,可以根据项目或行业不同的估价标准进行调整。
➤ 5D数据呈现和4D动画区域。
由一些表单,和视窗组成。作用是将4D、5D用可视化的方式呈现。
最后,总的梳理一下,共这6个部分,如图所示。
补充一下,这个案例中模型和数据的格式,如图所示。CAD中的模型根据图层进行分类,Excel中的右侧白色格子的数据代表成本或是其他需要添加的多维数据。
成本的信息通过算量区域以动态图表的方式展示出来了,具体可以看下面的动画。
最后附上一张我的思路图,帮助你理解。
BIM 4D 就是在模型上附加时间,而5D是在4D上附加成本。时间的变化需要动画去呈现,而利用 Grasshopper 的方式还可以实现多维数据的添加。
今天分享的散装BIM4D案例,主要是基于图层对模型进行分类,再根据分类附加信息。
我们还可以探索更好的解决方案,脱离图层作为数模途径的方式。比如在Grasshopper里利用 Human 和 HumanUI 插件完成正向BIM交互设计,并按照「族」分类生成模型,模型和数据连接途径会变成电池包。
通过电池任意 broke 模型,满足不同的标准化需求,按图层生成或是按族类别生成都可以。如果涉及到运维,则可以利用 API 或是 FireFly 插件对设备进行连接,输入位置等其他信息,再利用 GH 和 Revit 相关插件进行参数化联动,那可就真是打开了一扇大门。
今天的文章无论是从思想还是操作,都可以说是非常硬核了,如果你坚持读到这儿,相信一定能有些启发。
Jack 琢磨出的散装BIM思路,SketchUp 的那一套做法,已经能在网上查到相关的视频教程。而 Rhino GH 学习成本高,相对冷门些,今天的案例还可以衍生出一些功能,比如随工期变化模拟施工安全、随工期和估价的变化模拟风险等等。
未来BIM会带来更多的设备,也会带来更多的数据标准。借用图软公司的BIM理念:「不同专业的人,将用专属于自己的软件去解决效率和信息化的问题,然后通过开放的方式共享信息,来实现BIM。」
未来的 BIMer 可能需要具备灵活处理数据和模型的能力,同时对于只带几何信息的模型,多种多样的信息附加方式也值得我们去探索。
最后,BOX也对热情分享技术的 Jack 表达最衷心的谢意。
来自Jack的特别声明:
本文提供的技术方案仅供参考,在重大项目应用务必注意风险。
本期内容探讨人: @小耳朵猫酱 @VCTCN93 @老孙 @熊仔 @开开 @Duan本期内容赞赏金额全部归作者和参与讨论的小伙伴们所有,感谢大家支持