下载app免费领取会员
今天的案例非常简单,但是会分别在Grasshopper和Dynamo上进行实例演示。两者在实现参数化墙体的过程中还是存在一定差别的。往往Grasshopper中一个简单的电池在Dynamo中就需要多个电池组合完成,或者改变思路,尝试其他途径。Dynamo中电池的功能还有待完善和提高~
1.基本思路讲解
2.Grasshopper实例
3.Dynamo实例
4.整体连接
由图片可以很直观的看出墙体的生成逻辑。大致可分为三步:基础墙体建模、指定图形区域内砖块筛选、区域内砖块旋转。
看过前两辑参数化墙体推送的同学应该很熟悉基础墙体的建模方式了,即先生成墙体四边形网格,在进行奇偶数分层,将奇数层错位半个砖块的位置后与原偶数层砖宽合流形成基础墙体的母线
第二部需要自己在Rhino中画一条想要旋转区域的图形边界曲线,拾取的Grasshopper中,curve必须为闭合的曲线。继续寻找每个砖块的中心点是否在curve中,通过布尔值将curve内部砖块分流出来。
第三部即可分流出来的砖块进行旋转,非常简单。
(一)
A基础砖块网格,240×53mm
B通过0、1交替分流砖块,形成奇数层砖块和偶数层砖块。
(二)
A将分流出的奇数层砖块向x方向移动半个砖块的距离
B将移动后的奇数层砖块与未移动的偶数层砖块按原0、1逻辑合并
(三)
A砖块母线封面
B将曲面沿z轴方向挤出砖块实体
C得到每个砖块母线的中心点
D想要旋转区域的边界curve。如下图
E计算砖块母线的中心点是否在上一步curve中,输出布尔值
F通过布尔值将砖块分流,得到在区域内的砖块和不在区域内的砖块
(四)
A上一步分流出来的curve内砖块
B用同样的布尔值分流出来curve内的砖宽的中心点
C生成中心点出的xz平面
Dcurve内旋转砖块
E将旋转后的砖块与curve外的砖块合并
Dynamo的逻辑与Grasshopper相差无几,但是Dy中的电池并不完善,有些功能需要多个电池组合来实现,所以整体电池相对GH较多。
(一)
A生成一个以0为起点,240为公差,38项数的等差数,代表了墙的长度方向有多少个砖块。下部相同运算器代表了墙体高度方向有多少个砖块
B通过输入x、y坐标点生成了砖墙每个砖块中心点的点阵。注意连缀状态为交叉运算。
(二)
A通过中心点以及z轴方向生成每个砖块中心点对应的平面
B由长、宽、中心点平面生成矩形,即每个砖块轮廓线
C将每个砖块轮廓线patch封面
(三)
A拍平list
B输出list中的项数
C此运算器可以计算大于输入值的最小整数,防止前半部除法运算生成小数
(四)
A以0为起点,2为公差,生成偶数列等差数列。项数即为前部除法运算结果对应的最小整数。此步骤为了提取墙体的偶数层砖块
B同理以1为起点,2为公差,生成奇数列等差数列
C提取偶数层的砖块
D提取奇数层的砖块
E将奇数层的砖块向右移动半个砖块长度的距离
(五)
A列表整合,即将移动后的奇数层砖块与偶数层砖块合并与一个list中
B寻找每个surfae的中心点,通过u,v输入值0.5
C拾取revit中的样条曲线,如下图
D将样条曲线转化为dynamo中的curve
E输出每个curve的终点
F由点生成polygon。此步骤是因为dy中只能判断点是否在polygon中,所以必须把curve转化为polygon
G判断每个砖块的中心点是否在polygon中,输出布尔值
(六)
A通过上一步的布尔值将砖块进行分流,得到位于curve内的砖块
B输出位于curve内部砖块的中心点
C通过中心点、y轴方向、旋转度数将curve内部的砖块旋转
(七)
A将旋转后的砖块和curve外的砖块合并于一个list中
B给所有砖块一个进深方向的厚度,生成砖块体(之前一直为surfae)
C后两步只是为了显示每个砖块的边线,便于观察。因为dy中没有显示solid框线的功能,所以只能先炸开再提取每个面的边线
D提取每个面的边线
文章来源:CaelumLab
仅作分享交流,文章著作权归原作者所有。
转载请注明来源本文地址:https://www.tuituisoft/bim/20097.html
上一篇:没有了
下一篇:没有了