一键放置柱子护角,你get了吗?
今天写个番外篇,给柱子添加护角。
记得几年前刚开始做BIM的时候,有次做车库导视方案模型,记得好像是鼎伦设计的车库一体化方案,当时柱子护角就给了两种方案,而且基本上每颗柱子上都要放护角,然后甲方竟然要求把护角模型都放进去,当时只是刚入门,没有啥简便方法,就做了个护角的族,一个一个柱子的放,现在想想真是脑残啊当时,地下三层几千个柱子,挨个摆。。。。。。
image当时好像是这样一个护角,几千个柱子,求心理阴影面积。。。。。
image现在,有了Dynamo插件,情况就不一样了,可以解决很多重复性工作,于是,我就想写个小程序,一键放置柱子护角,说干就干:
第一步:将所有柱子变成Dynamo图元,然后获取柱子的BoundingBox。
image第二步:我们主需要柱子的底部轮廓即可,这里用到Clockwork里的节点,获取BoudingBox在指定平面上的曲线。
image由下图我们可以看出,我们得到的曲线是柱子的四条边线,然后我们获取曲线的起点或者终点,这里任选其一即可。这样我们就将四条边线转换成了四个顶点,当然这个点就是我们放置族所需的点。
image第三步:接下来要分两步走,一个是在点的位置放置族,另一个是旋转族。
首先,放置族:
然后,我们思考下族的旋转角度,由于我之前选择的是曲线的终点,所以通过点击点的列表,我们得出护角族的顺序以及应该旋转多大的角度。
image由上图我们可以看出,左下角的点是第一四个,那么我们的顺序就是由左下角开始,顺时针计数,分别是0-1-2-3,所以我简单做个护角族,对应旋转的角度是0-90-180-270度。
这样就很明了了,我们只需要创建对应数量的一个列表,分别是0-90-180-270度的循环即可。
于是,我们将点列表降低一个维度,然后获取项数,再用codeblock创建一个角度的列表,然后通过List.OfRepeateditem来匹配列表长度,这样就得到一个对应的角度列表:
image第四步:将列表拍平,然后将放置的护角族旋转对应角度即可。
image好了,今天的教程就到这里了~~,来看下效果:
image image有时候思考思考以前做过的项目,会发现当年用的方法是多么的低级,用好插件,让工作效率翻倍吧~~