Revit剪切墙创建方法:Revit + Dynamo 实现梁自动剪切墙
在Revit中,混凝土结构的梁并不能自动剪切墙。墙的修改命令中有一个附着于底/顶部的命令,但是这个命令并不能用于将墙附着于梁底,因为我们在选择附着的主体时无法选中梁。如果不进行梁剪切墙的操作,又会导致墙的工程量出现错误。
一般情况下,实现梁剪切墙的做法是用“修改”菜单中的“连接”命令,手动将墙与梁连接,这时梁会剪切墙,如果出现墙剪切梁,使用交换连接顺序功能进行修改。这样的方法缺点是一次只能实现一堵墙和一道梁的剪切,如果墙和梁的数量特别多,在视图中图元较多不容易选中的情况下比较容易出现漏选的情况,且操作量巨大。
当然,很多的插件也可以做到梁自动剪切墙的操作。不在安装插件的情况下,仅仅利用Revit自带的可视化编程工具Dynamo,我们也可以做到,并且通过Dynamo与Revit的交互,希望可以给读者一些启发。
1.在项目中启动Dynamo并安装Clockwork库
在这里,我新建了一个新项目作为演示(项目可在文后下载),一个很简单的项目。通过下面的截图,我们可以发现梁并没有自动剪切墙(设置的墙顶标高是标高2,梁顶标高也是标高2)。
梁墙剪切前
接下来打开Dynamo,我们先安装一下需要用到的库。在Dynamo中找到“软件包”菜单,打开菜单后选择“搜索软件包”,搜索“Clockwork”,结果如下图所示。根据Dynamo的版本安装1.x或2.x。
安装Clockwork库
2.选择所有需要剪切的墙和梁
选择Revit中元素的方法有很多,我们可以使用“ModelElement”或“ModelElements”节点手动选择元素,也可以通过族类别(categories)或族类型(familytype)来进行选择。
这里我们使用族类别来选择,可以一次性自动选择所有墙和梁。
选择所有墙和梁
3.判断梁和墙的相交情况
方法:使用“Geometry.DoesIntersect”节点判断相交。
我们知道Revit中的元素图形和Dynamo中的图形是不互通的,所以我们使用上面的节点进行操作,需要先把Revit中的元素转化为Dynamo中的图元,使用的节点为“Element.Geometry”。
在“Geometry.DoesIntersect”中我们运用列表的层级并选择“连缀”为“叉积”,这样我们将每一堵墙与所有的梁进行比较,得到6个子列表,每个子列表都是一堵墙与所有梁比较的结果。这一堵墙与所有梁比较后,存在相交为ture,否则为false,若存在多个ture表示该墙有多道梁与它相交。
判断梁和墙是否相交
4.筛选出与墙相交的梁
从上图中最后一个节点可以看出。一堵墙可能与一道梁相交,结果为ture(如0list);也可能与多道梁相交,有多个判断结果为ture(如1list)。那么我们只需要使用“List.FilterByBoolMask”节点筛选出每道墙与哪些梁相交,然后用“连接”功能将它们连接即可实现梁自动剪切墙,如下图所示。
完成剪切的所有节点
完成剪切
其中“Element.Geometry”节点来自于我们之前安装的“Clockwork”库,其实这个库中还有许多好用的节点,特别是直接对Revit进行操作的节点,读者可以好好探索一番。
BIM技术是未来的趋势,学习、了解掌握更多BIM前言技术是大势所趋,欢迎更多BIMer加入BIM中文网大家庭(http://www.wanbim.com),一起共同探讨学习BIM技术,了解BIM应用!
相关培训