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

Grasshopper如何快速生成地形?点进来告诉你!

发布:中文网小编4号 浏览:5278人 分享
发布于:2022-04-06 16:55

本文源自公众号:ACND STUDIOS


简述

根据CAD高程点及高程信息在Grasshopper中快速生成地形模型。

所需文件:CAD地形文件

所需软件:Rhino, Grasshopper

( 插件:Human, Weaverbird,Meshtools,Meshedit 可自行前往Food4Rhino网站或者插件官网下载 )

1.前期整理

782f785046b05e281a5e6a4964f109e0.png

Step1:

将CAD地形文件拖入Rhino中,(注:如果无法导入或者信息缺失,请转低版本CAD或者天正转T3进入Rhino)在此我们只需要高程点和高程数据(text),所以我们将其数字和点选取分别利用group命令成组,个人建议将这两组物件拷入另外一个Rhino文件,以免之后拾取text出现冲突。注意检查一个高程信息对应一个高程点,有些信息不完善的CAD图纸可能会出现信息不匹配或者有重复信息的问题。检测重复物件可以用犀牛命令:SelDup , 快速拾取文字和点分别可用:Selpt和Seltext,如果有分图层则可按图层选取:selLayer .

7a0f1fb20f153652518560e12fd622c3.png

2.制作部分

2.1 拾取

fec2d6d3d4edf51fc2b31b6c18e95eec.png

Step2.1:

由于我的CAD高程点形成是个圆形状,所以我们需要把所有的圆形曲线拾取到Grasshopper里,并且求出其圆心。(注:一般来说CAD里会把高程点或者数字打成组块,抓紧GH之前记住要把组块explode)

4d01693c41ffaeb5f92258a17716e1d9.png

Step2.1:

利用Human插件中的Dynamic Geometry Pipeline拾取犀牛中的text文件进入GH,这个电池可以根据图层名称,物件类型及物件名称拾取犀牛内的物件进入GH。我们这里利用拾取类别这一项。拾取进来之后发现输出的Geometry是没有任何数据的text,从而我们需要利用Text Object Info将其解析,该电池会输出text的平面,内容,大小等。

2.2 高程点的匹配

b0228c9fb751cb0b6237a8c50ed3a7a9.png

Step2.2:

细心的朋友应该可以发现,在上一步拾取圆圈和text的时候并没有什么顺序可言,就是 “一把抓" ,这样盲目的去用点对应数据move是不能够匹配的。所以我们在此用closest point运算器去求得每个圆圈中心点附近离它自身最近的text。对于此运算器的理解对于小白来说可能得停顿半分钟,圆圈的中心点得Graft升组,让每个点都放到一个单独的袋子和下面text的平面点进行运算,这样就确保每个点都到下面的大袋子里找到一个合适自己的最近点。  如果上下两个数据列表都是大袋子,那就没办法确保每个点能和下边的大袋子每个数据都过一遍。

96b2974409bc17adc2c48a96d93eb211.png

Step2.2:

通过Closest Point运算器我们就可以得出,圆圈中心点在下边大袋子里找到自己最近点的序号(CP Index) . 那就可以利用这些序号去一一从下边大袋子里抽取text,最后别忘了flatten还是让它们一起在一个大袋子里玩耍吧。(注意这里list item的输入端list是text而不是一开始的plane了,因为plane的排序和text的排序是一毛一样的,而我们需要的最终结果也是text,这一步其实可以统称为将text顺着圆圈中心点重新排序)

6b738713491070505ff8ccd93d2549b1.png

Step2.2:

如果对结果不放心,可以进行检验,利用List Item对点进行随机抽取,然后鼠标中键点击List Item运算器Zoom缩放一下,可以看到对应的数据是否和我们再大袋子的数据是匹配的。

2.3 成面

d91c610f3b0a3b41c72a2865d4069a8f.png

Step2.3:

利用Move结合Z轴向量将高程点依据高程信息抬高。

d450f8916b314ff653f0b75a2a4f5ed8.png

Step2.3:

用Delaunay Mesh将点生成面,如果觉得面过于尖锐可以利用Weaverbird插件的Subdivision将其柔化。

3.细节调整

3.1 等高线

0a8fde6475424785ecffad23542942b9.png

Step3.1:

和犀牛内的Contour命令一样,要想Contour首先得有起始点。首先给上一步建立好的地形用Boundingbox 套上一层外接BOX,然后把BOX炸开求得每个面的中心点,再将中心点拆解成X,Y,Z坐标。通过Sort List 将Z坐标排序,Value端接入一开始的面积中心点,这样面积中心点就会跟着Z坐标的大小一样由小到大排序。所以List Item从ValueA抽取出来的第一个点就是最低点。

6bb97c169c578d1a7293c3427074fbc8.png

Step3.1:

利用contour将面按照自己设定的高程分割生成等高线,以便于观察坡度大小。

3.2 着色

a1828d35e70a9160865f16011817be0e.png

Step3.2:

将之前subudivison的结果炸开可以用Face Boundaries查看细分mesh。

c1486d3a1250027c1494198e6b65bea3.png

Step3.2:

利用mesh面的面积中心点的Z轴坐标进行渐变着色,从而分析整个高程地块的高度分布情况。

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