Rhino拾遗(十九):Grasshopper小程序从等高线信息自动拟合地形
发布于 2021-09-08 12:28 ,所属分类:数学资料学习库
Rhino拾遗(十九):
Grasshopper小程序从等高线信息自动拟合地形
本篇教程主要针对景观设计。请不相关专业读者酌情选择阅读。
从等高线平面图自动拟合地形
在已绘制完成闭合等高线平面图,且该平面图中等高线未出现复杂的多处相互嵌套的的情况下,可利用Grasshopper小程序自动抬升相邻等高线间的高度,从而快速建立地形曲面。
实现自动抬升平面等高线并生成曲面的Grasshopper程序如下:
此Grasshopper程序的原理在于:以Length运算器提取出每根曲线的长度,用Sort List运算器筛选出等高线长度信息的列表。以Series运算器生成以指定等高距为公差的等差数列,并将相应位置的等高线与等差数列中相应的项数配对,分别沿着UnitZ运算器指定的Z轴方向,以Move运算器抬升不同的距离。注意Move运算器的Geometry输入端的数据结构需要设为Reverse. 最后,以patch运算器生成曲面。
从三维等高线信息图自动拟合地形
Step1:
首先,将带有三维等高线信息的AutoCAD (或DXF等) 图纸导入Rhino.
切换到Perspective视图选取待生成地形的等高线范围。
编写如下Grasshopper程序,可依据提取出的三维等高线信息,拟合出适合的地形。
此Grasshopper程序的原理在于:先按照指定距离提取出三维等高线上每隔相应距离的地形标高特征点,构成点云,然后依据点云生成拟合地形的mesh曲面。
首先,将这些三维等高线拾取进Curve对象。将Curve对象与Devide Curve运算器的Curve输入端相连。再将Curve对象与Length运算器相连,将Length运算器的输出结果输入Division运算器的A输入端,B输入端则输入一个距离数值,这个数值决定了在原有等高线上提取的相邻点之间的距离。然后,将Division运算器输出结果赋予Divide Curve运算器的Count输入端。将Divide Curve运算器输出端的数据结构拍平,输入至Delaunay Mesh 运算器的Points输入端,拟合出曲面。
Step2:
Bake出所得mesh曲面。
在TOP视图键入_DrapePt(生成幕帘点)命令,提取mesh曲面外接矩形范围内的曲面表面特征点。
在任一侧视图选中并删去冗余点。
将地形特征点_Patch成面,即可拟合出所求地形的nurbs曲面。
效果展示:
内容恕仅供技术交流、参考,作者恕不对原文中任何内容承担任何责任。
如有疏漏,恳请斧正。©2021,闲渊斋,非盈利个人gongzhong号.
相关资源