- A+
BIM普及的过程中碰到的一个很主要的矛盾在于投入的时间成本和人力成本大于项目中产生的回报。通过投入人力和时间在BIM中录入的大量的数据,如果不能被整理提取并直观表达,就无法对项目起到作用,产生实际的效益。
这一篇接着上一篇中立面金属板的例子,讨论在Dynamo中进行数据处理和表达的方法。
Dynamo中的数据流(Data Flow)和数据挖掘(Data Mining)
Dynamo脚本的流程基本上可以分成下面这几个部分:

BIM中的数据流可以看作一个输入数据 - 处理数据 - 输出数据的过程。输入和输出的数据类型都可以通过各种格式来表现。在这个过程中通过提取现有数据,分析转换,将其转化为可理解的结构,输出计算结果,这就是一个数据挖掘的过程。
用上一篇金属挂板的例子来看这个流程:
选中Revit中的金属挂板模型 - 读取高度,宽度,模型阶段等数据(提取现有数据) - 通过Python转换数据,得到新的数据(分析转换) - 将新的数据写入Revit到模型参数 - 通过明细表表现数据(输出计算结果)
方法一 :通过Dynamo创建Revit明细表
第一步:创建明细表,添加要显示的列

先挑出想要显示的参数。先从列表中搜索出参数的序号,再用序号列表从参数列表中挑出要显示的参数。
第二步:为明细表添加过滤条件

因为Generic Model这个类别包括了其他的模型,不只是金属挂板。添加一个过滤条件可以在明细表中筛除其他的模型,只显示金属挂板。
第三步:为明细表添加格式和排序

Model这个参数是前面用来作为过滤条件的,最后不需要显示在明细表中,所以隐藏这个参数。明细表按“Phase Created”和“Pieces”这两个参数来排序,并且每个Module之后要空一行,这都可以在Dynamo脚本中设置好。
明细表格式和排序的代码的主体部分来自著名的Archi-Lab插件,我在使用中加入了一点修改,使这个脚本可以同时对多个明细表运行。
运行以后就得到了最终的明细表:

方法二 :通过插件在Dynamo中创建图表
还是用金属挂板的例子来演示创建图表,用到Mandrill 插件。

第一步:选中模型组件,调整格式顺序

得到各个组件的阶段参数信息,在“所有阶段”列表中得到各阶段的序号,再根据这些序号进行排列。得到的结果是一个新的列表,所有的组件按照阶段顺序排列。
第二步:将组件按阶段分成几个子列表

分组后可以看到在一个大列表中增加了一个层级的字列表。如果跳过了第一步,也可以得到按阶段分的字列表,但是不一定是按照阶段的顺序排列的。
第三步:得到需要在图表中表达的数据列表

把挂板数量这个参数转化成数字,通过求和,得到各个字列表中数字的和。这个值就是每个阶段用到的挂板的总数。
List.FirstItem这个指令的作用是从列表中提取出第一个元素。当未设置层级时,提取出来的是列表中的第一个子列表,当层级设置为@L2时,提取出来的这个层级的各个子列表中的第一个元素。这个设置层级的方法是Dynamo数据结构的一个很重要的特点。
最后一步:通过Mandrill插件生成图表

Mandrill的Charts列表中可以看到各种类型的图表,这里演示的是其中的饼状图。将数据写入后点击运行,最后点击“Launch Window”就可以看到最终的结果。


对比一下这两种数据可视化的表达方法,Revit明细表是和Revit模型双向关联的,任何时间如果模型有变化,就会同步传达到明细表中,不需要手动修改。明细表的缺点则在于表格的方式不够直观,很难进行数据整理和统计。用Dyanmo插件生成的图表更加直观,在Dynamo中可以进行各种数据整理统计的工作,根据实际情况得到结果并生成图表。这种方法的缺点是这些图表最终会以图片的方式在图纸中表达。每当模型组件发生了改变,这些图表不会自行修改,必须要再运行一次Dynamo脚本,得到新的图表并手动替换才可以。
- 微信公众号:BIM免费自学
- 提供BIM自学攻略,学习资源,BIM技巧,行业最新趋势等,每天陪你一起进步。
-
- 站长微信
- 合作请扫码添加微信
-