dynamo python 通过循环修改参数_Revit-Dynamo 数据流 数据挖掘 数据可视化 (二)

上一篇中提到了Dynamo进行数据处理的基本流程和数据可视化的两种方法。

在BIM的整个过程中,有各个专业的参与,将数据转化成通用格式是非常重要的一步。通过Dynamo可以将数据转化成Excel / XML / JSON 以及其他数据库格式,可以让其他专业的合作者在他们更熟悉的软件中进行数据的统计处理。

有了这些格式的数据后,可以脱离Revit的限制,通过其他的平台快速实现数据可视化。Excel本身就带有生成图表的功能,也可以用Tableau / Power BI这些工具快速生成各种图表和报告。

5c7c274060c6b816dc6a9a405d76725e.png
图片来自Autodesk论坛

这里用一个项目墙体的材料清单的例子。目标是通过Dynamo快速导出Excel / XML / JSON 格式的数据。最终得到的Excel表格,其中包含项目模型中每一个墙面的材料信息:

e81eea94c0a9e0f5ca9594aa485cc27b.png

第一步:筛选出需要统计的墙面模型

从庞大的原始数据中筛选出需要统计的数据是很重要的一步。在这个例子中,我们仅仅要统计在工厂中安装的墙面,即各个装配式模组中的墙面。而整个项目模型中除了工厂中安装的墙面,还有很多在现场浇筑的墙面(比如基础墙)。第一步就是要从属于墙类别的模型中在挑选出工厂中安装的墙。

6acf36b10149bb59ab6ef302425579a3.png

这里用到了墙体的创建阶段(Phase Created)这个参数作为筛选条件,如果各模型实例的这个参数名字中包含“Module”,就会返回“true”的结果,如果没有则返回“false”。然后我们就得到了这个结果的列表,这样的列表可以作为一个“滤网”来过滤模型实例。最后所有得到“true”和“false”的模型实例会分别被放入到两个列表中。这里可以看到,223个墙体的模型实例中,有60个实例是在工厂中被安装的。

第二步:组织数据顺序,进一步筛选

在最终的导出结果中,需要按阶段(Phase)顺序给墙面进行排列。这里用到的方法是先得到各实例的阶段参数,通过List.IndexOf这个节点得到阶段在所有模型阶段列表中的顺序,通过得到的数字来排列前面获得的模型实例列表的顺序。实际操作中发现,由于Revit本身的一些特性或者是建模过程中的操作不当,会导致整个模型中出现一些并不存在的模型实例。在下图的右半部分可以看到,有一些墙面长度参数不存在的实例,需要在通过一个Mask来筛掉这些模型实例。

5c65000f95c073d3d8d8a84a20f811d7.png

第三步:获取已有的模型实例数据、通过公式得到新的数据

在上面的Excel中,最后的结果包括了墙面的面积、长度、高度、模型实例标号(element ID)这些数据。这些数据都是Revit中已有的,可以直接获取。

有些数据则需要通过计算来获得。拿石膏板计算为例。有的墙面只有一面石膏板,另一面可能是外表皮,有的墙面两面都有石膏板,也有墙面没有石膏板。通过一个简单的数学公式就可以得到各个墙板需要的石膏板面积:

墙面面积 X 有石膏板的层数 = 石膏板面积

在Dynamo中可以这样表达:

26ea77ff494a328f901f550a6d806601.png

先得到各个墙体的类型,用FamilyType.CompoundStructureLayers这个节点(来自clockwork插件)来炸开墙体的结构层,得到各层所用的材料。这个墙体的结构层以及材料的信息来自Revit中的模型信息。

8bcd0c0043c796f8c0f232fc56aed9aa.png

通过和之前一样的方法筛选出每个墙面的石膏板。这里用材料的厚度作为筛选列表,可以看到结果中,所有的石膏板厚度都是0.5英寸。通过一个简单的Python节点得到各个子列表的长度,即为每个墙面的石膏板的层数。有了这个数据我们就可以通过上面的公式来计算各个墙体需要的石膏板的面积。

35efcf49cbd7f4b9eced5174da7628e1.png

还有一些材料的数据,比如钉子的数量、木材的数量都可以通过已有的数据估算。

第四步:整理数据格式,导出数据

现在这些数据都已经就位,然后把这些数据列表整合到一起。要注意导出数据时,每个子列表会是单独的一行,而不是一列,这与大多数情况下需要的数据格式不符。这里用到List.Transpose这个节点,它可以将所有子列表的数据依次组合,生成新的子列表。这样一来导出数据时的格式就变成了每个墙体是单独的一行,依次显示各个材料的信息。

2257d496342ef0e22bcf2c42b013a376.png

导出之前加上各个数据列的名称,作为第一个子列表。根据Excel导出节点的需要,输入保存路径、表格名称等信息。点击运行后,会看到Excel自动运行,所有数据都被写入。

除此之外也可以通过Dynamo把这些数据导出为XML或者JSON格式:

1cc76397bb43f47e004f4d785191bd11.png

点击运行后会看到文件目录下自动保存了这个格式的数据文件。


根据各专业处理数据的习惯可以用不同格式的数据文件。Excel本身就已经是非常强大的数据处理和表现的软件。Microsoft Power BI 是一个更加强大,并且完全免费的数据可视化软件,可以直接导入Excel数据。

abb8ae4c13fb10802e2f025a9655396d.png

还可以直接提问:

17522dc7e4535f36e04c5b6df8445203.png

Power BI 作为一款新兴的交互式可视化数据处理软件,在面对大批量的BIM数据时显然比Revit本身强大的多。通过Dynamo处理导出数据,放到这样的智能商业软件中,就可以很轻松的得到更加专业详细的项目报告。

这样的软件更多的被非建筑专业的人使用,通过Dynamo处理并导出数据为这样的跨专业合作提供了方法。


在Dynamo中通过自带节点和自定义节点的组合,将Revit中的数据收集、处理,并根据实际需求推导出更多的数据,在通过通用的数据库格式导出。这个过程就是一个较为典型的BIM数据流。将Revit中的数据以通用数据库格式导出意味着项目过程中的所有参与者都可以直接得到项目中各种细节的信息,不需要由建筑师来转述各个细节,从而各个专业之间的合作效率,减少各个环节之间的信息流失。

欢迎各位私信我探讨上述问题的更优解 / 指出文中的错误和不足 / 分享在BIM工作中碰到的实际问题和思路。

我会继续更新Dynamo应用的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值