X
返回顶部
当前位置: 首页> BIM资讯> BIM技术

dynamo中如何找到碰撞?BIM案例:BMY033工业项目应用 -通过Dynamo在Revit中标记Navisworks的碰撞结果

发布:中文网小编3号 浏览:2111人 分享
发布于:2020-05-29 11:21

    文章来源:华筑建筑科学研究院

image.png

    BMY033工业项目是我公司本年度承接的工业类项目之一,钢框架结构,建筑主要用于汽车性能测试及研发。

    本项目在深化设计阶段,经常需要通过Navisworks的碰撞检测功能,来验证钢结构和工艺管道的空间关系。需要经常返回Revit中通过ID查找碰撞位置,再做分析优化,通过NavisworksSwichBack返回的视图不是很方便查看。

    为了解决效率问题,项目组通过Dynamo来实现将所有碰撞全部标记到Revit中,一步解决两个软件的交互问题。具体思路很简单,通过获取Navisworks的碰撞报告,提取坐标,通过Dynamo读取坐标,并在Revit中创建标记构件即可。

image.png

    首先:我们通过Navisworks导出碰撞报告,这里最好选择文本格式,再通过Excel将数据处理。

image.png

    第二步:数据处理我们删除无用数据,留下碰撞序号以及坐标位置,主要通过Excel的“查找替换”,“定位条件”来删除“空值”功能将数据处理。

image.png

    第三步:处理完列表后就可以运行Dynamo1.30进行节点的设计,我们先读取到表格里的数据导入到Dynamo中。

image.png    

    第四步:主要是处理数据,我们发现列表中的坐标是“-5.428,1.928,4.380”这种形式Dynamo是无法读取并生产坐标点的,我们需要单独提取出X、Y和Z的坐标,这里还要注意单位,表格是m为单位如果直接导入Dynamo中是按照mm计算,所以我们需要做单位换算。主要通过“String.Split”按照给定字符进行分割列表,生成的列表再通过“List.GetItemAtIndex”进行索引提取,然后将数据转换成数字也就是“String.ToNumber”,最后再换算单位即可。(注意最上方“List.GetItemAtIndex”是用来连接第七步中“Element.SetParameterByName”设置族类型注释的节点)

image.png

    第五步:将数据输入“Point.ByCoordinates”得到碰撞位置的坐标,得到坐标点后就可以任意玩耍了!

image.png

    第六步:通过坐标点生成楼板,通过坐标点生成多边形“Polygon.RegularPolygon”,再通过“Floor.ByOutlineTypeAndLevel”生成楼板,我们设置楼板类型为“常规-300mm”,参照标高为“首层”。

image.png

image.png

image.png

    第七步:我们可以获取到每一个碰撞位置,我们还可以通过将列表中的碰撞名称设置到楼板参数中这样更方便查看和对应(这里的碰撞是深化后的碰撞,每一处都是需要讨论解决的)。我们通过“Element.SetParameterByName”节点连入楼板,设置参数为“注释”,输入的数值详见第四步。最后,我们得到了每个楼板对应的碰撞编号。

image.png

image.png

image.png


    思考一

    有很多方式可以用来标记碰撞位置,可以通过坐标点在Dynamo生成任意形体再通过“ImportInstance.ByGeometry”导入到Revit中,即可标记清楚碰撞位置,此方法无法添加碰撞名称;也可通过在族中创建上述节点生成模型文字,再将模型文字导入到项目中,可以添加碰撞名称;也可以通过坐标点生成系统族(例如楼板)。

    思考二

    我们得到Navisworks的时候,如何不处理表格直接导入Dynamo生成标记构件?只是将处理表格的工作用过Dynamo来实现,“list”还是很强大的。我们的梦想是让软件解决所有工作,人工介入为零,这不就是VDC中的Automation。


BIM技术是未来的趋势,学习、了解掌握更多BIM前言技术是大势所趋,欢迎更多BIMer加入BIM中文网大家庭(http://www.wanbim.com),一起共同探讨学习BIM技术,了解BIM应用!