本文源自公众号:ACND STUDIOS
简述
根据CAD高程点及高程信息在Grasshopper中快速生成地形模型。
所需文件:CAD地形文件
所需软件:Rhino, Grasshopper
( 插件:Human, Weaverbird,Meshtools,Meshedit 可自行前往Food4Rhino网站或者插件官网下载 )
1.前期整理
Step1:
将CAD地形文件拖入Rhino中,(注:如果无法导入或者信息缺失,请转低版本CAD或者天正转T3进入Rhino)在此我们只需要高程点和高程数据(text),所以我们将其数字和点选取分别利用group命令成组,个人建议将这两组物件拷入另外一个Rhino文件,以免之后拾取text出现冲突。注意检查一个高程信息对应一个高程点,有些信息不完善的CAD图纸可能会出现信息不匹配或者有重复信息的问题。检测重复物件可以用犀牛命令:SelDup , 快速拾取文字和点分别可用:Selpt和Seltext,如果有分图层则可按图层选取:selLayer .
2.制作部分
2.1 拾取
Step2.1:
由于我的CAD高程点形成是个圆形状,所以我们需要把所有的圆形曲线拾取到Grasshopper里,并且求出其圆心。(注:一般来说CAD里会把高程点或者数字打成组块,抓紧GH之前记住要把组块explode)
Step2.1:
利用Human插件中的Dynamic Geometry Pipeline拾取犀牛中的text文件进入GH,这个电池可以根据图层名称,物件类型及物件名称拾取犀牛内的物件进入GH。我们这里利用拾取类别这一项。拾取进来之后发现输出的Geometry是没有任何数据的text,从而我们需要利用Text Object Info将其解析,该电池会输出text的平面,内容,大小等。
2.2 高程点的匹配
Step2.2:
细心的朋友应该可以发现,在上一步拾取圆圈和text的时候并没有什么顺序可言,就是 “一把抓" ,这样盲目的去用点对应数据move是不能够匹配的。所以我们在此用closest point运算器去求得每个圆圈中心点附近离它自身最近的text。对于此运算器的理解对于小白来说可能得停顿半分钟,圆圈的中心点得Graft升组,让每个点都放到一个单独的袋子和下面text的平面点进行运算,这样就确保每个点都到下面的大袋子里找到一个合适自己的最近点。 如果上下两个数据列表都是大袋子,那就没办法确保每个点能和下边的大袋子每个数据都过一遍。
Step2.2:
通过Closest Point运算器我们就可以得出,圆圈中心点在下边大袋子里找到自己最近点的序号(CP Index) . 那就可以利用这些序号去一一从下边大袋子里抽取text,最后别忘了flatten还是让它们一起在一个大袋子里玩耍吧。(注意这里list item的输入端list是text而不是一开始的plane了,因为plane的排序和text的排序是一毛一样的,而我们需要的最终结果也是text,这一步其实可以统称为将text顺着圆圈中心点重新排序)
Step2.2:
如果对结果不放心,可以进行检验,利用List Item对点进行随机抽取,然后鼠标中键点击List Item运算器Zoom缩放一下,可以看到对应的数据是否和我们再大袋子的数据是匹配的。
2.3 成面
Step2.3:
利用Move结合Z轴向量将高程点依据高程信息抬高。
Step2.3:
用Delaunay Mesh将点生成面,如果觉得面过于尖锐可以利用Weaverbird插件的Subdivision将其柔化。
3.细节调整
3.1 等高线
Step3.1:
和犀牛内的Contour命令一样,要想Contour首先得有起始点。首先给上一步建立好的地形用Boundingbox 套上一层外接BOX,然后把BOX炸开求得每个面的中心点,再将中心点拆解成X,Y,Z坐标。通过Sort List 将Z坐标排序,Value端接入一开始的面积中心点,这样面积中心点就会跟着Z坐标的大小一样由小到大排序。所以List Item从ValueA抽取出来的第一个点就是最低点。
Step3.1:
利用contour将面按照自己设定的高程分割生成等高线,以便于观察坡度大小。
3.2 着色
Step3.2:
将之前subudivison的结果炸开可以用Face Boundaries查看细分mesh。
Step3.2:
利用mesh面的面积中心点的Z轴坐标进行渐变着色,从而分析整个高程地块的高度分布情况。
评论前必须登录!
注册