前不久做土建的模型,由于我一直做机电设备专业,土建专业涉猎较少,便出现了这个问题:先画墙体并没有在意墙体的底部偏移问题,默认值均为0。后画楼板的时候发现楼板偏移量并不是0,而是-150,还有多处降板。墙体悬浮在楼板上,要再逐个墙去修改它的底部偏移至楼板表面,工作量何其大!
如此机械,枯燥,巨大而又有规律可循的工作还是交给计算机去完成比较靠谱,下面是基于Dynamo的解决方案:
总体思路:找到墙体所要附着到的楼板,获取到楼板的底部偏移值并将其赋值到墙体的底部偏移即可。后面的步骤很容易,使用Element.GetParameterValueByName和Element.SetParameterByName
即解决,问题的症结就在如何找到每面墙体所对应的楼板。
获取到项目中所有的墙和楼板,并获取到他们的几何实体:
墙体要附着的楼板在Z轴负方向上均可相交,利用这一规律找到与之对应的楼板。构造出墙体的几何体在Z轴与楼板集合体相交的几何体并做交集判断是否相交。由于墙体要逐一与所有楼板求交集,在做交集时连缀方式选择叉积:
在做交集的时候墙体与其相邻的楼板侧面是共面的,其交集是线,并不是想要的结果,只需要得到的是相交的交集是实体的对象:
一共有11面墙体,分别与三块楼板构造交集得到一个12*3的多维列表,并筛选出交集为实体的对象,获取到一系列的布尔值。
再看其是否包含“true”,得到36个布尔值:
由于12面墙体都与3块楼板做交集,那么只需将楼板重复墙体的次数,并结合上一步得到的布尔值就可筛选出墙体所对应的所要附着的楼板:
找到对应的楼板后,获取楼板的底部偏移,并将此值赋值给墙体的底部偏移:
来看一下运行效果:
可以发现,所有墙体均已附着到其对应的楼板。
推而广之,此方法可解决将柱子附着到基础上;找到门,窗所对应的墙体等一系列问题,当然也会有更多的应用场景去值得探索发现。
- BIM学习群
- 微信扫一扫
- 微信公众号
- 微信扫一扫