软件小讲堂 | Grasshopper函数图像扩展方法(2)- 函数组合
STEP 1
通过上一篇文章的讲解,大家应该已经知道了Graph Mapper运算器提供了数量众多的函数类型,并且对于每一种函数我们都可以进行手工的修改。
那么如果我们可以将Graph Mapper里面这些不同的函数图像如图Rhino曲线一样进行任意的拼接组合,构成复合函数图像,毋庸置疑就可以极大的丰富现有的函数库。
STEP 2
首先大家可以发现我们进行判断的临界值其实就是每一个函数图像对应的X区间端头数值,而对于Graph Mapper的X区间,借助C#我们可以非常快速的进行提取。
调入C#运算器,将graph mapper的输出端连接到x端。
将数据结构改为列表。
y连接一个slider表示函数图像的数量。数据类型为单个数据,int整数。
进入C#编程界面。
首先我们先获取一下Graph Mapper运算器对应的类型,因为默认是输出端叫A,使用代码——A = this.Component.Params.Input[0].Sources;
通过panel可以知道Graph Mapper对应的类型是Grasshopper.Kernel.Special.GH_
GraphMapper。了解了类型之后我们先创建一个区间的空列表用于存储数据,列表类型为区间 Interval.代码:List<Interval> n = new List<Interval>();
使用for循环遍历每一个图表,代码:for (int i = 0;i < y;i++)。
因为C#是一种强类型语言,加之后面需要调用GraphMapper一个特定的方法,使用我们之前获取的GraphMapper类型;
Grasshopper.Kernel.Special.GH_GraphMapper
进行变量的类型转换。代码:Grasshopper.Kernel.Special.GH_GraphMapper m =
(Grasshopper.Kernel.Special.GH_GraphMapper)this.Component.Params.Input[0].Sources[i];
使用container方法,获取区间,加入到之前的空domain列表n。
代码:n.Add(new Interval(m.Container.X0, m.Container.X1))
A端连接到panel,大家可以看到三个图像的X区间就出来了
有了区间之后可以使用includes运算器判断我们的输入端数值是否在对应的区间上,获取布尔值。
借助布尔值使用dispatch获取所有需要的函数数值
之后我们就可以把这样一个复合函数用于几何造型的控制了。
STEP 3
借助C#运算器完成修正之后,后续大家如果想再使用更多的函数图像组合的话只需要将新的函数图像连接到C#的X端以及entwine运算器新的端口,再把函数图像的数量改为4即可。
本次教程说到这就结束了,那各位小伙伴们下周见啦。