grasshopper python多个参数输出_树形结构


在对参数化的学习中,grasshopper已是最常见的工具。在刚开始接触时,相信很多人能找到复杂形态的建模思路,但却在形式语言的数据结构转化过程中花费许多脑筋。在参数化设计中,树形结构带来了极大的自由性与可能性,但随之而来也增添了一定的学习成本。现在总结一些平时会较为常用的数据处理方式,为数据处理的学习提供一些便利。


grasshopper python多个参数输出_树形结构_02


首先上一个简单的树形结构,例如数据长度为9,公差为1的等差数列Graft后得到的一组树形数据。

可以看到数据结构分为三级,由0,0,1-0,0,9递增。对数据结构进行分析,P端输出每个数据对应的数据结构名,L端输出每一级数据的个数,C端输出数据结构的级数。

那么首先对这个树形结构进行一个基本的处理。


grasshopper python多个参数输出_凹入表形式打印树形结构_03


我们将数据结构分析的P端输出到Cull Pattern,在Cull Pattern的P端设置(1;0),即将数据结构的第一级保留,第二级去掉,依次类推。这样即可对数据的结构进行编辑。从L端的输出结构可以看到,对应cull pattern中P段的设置,原结构的第2、4、6、8级的数据结构被抹去,生成了一个从0-4的新的数据结构层级。要注意,这里只是对数据的层级进行了编辑而不是数据信息本身。然后将这个数据层级的结果输入Tree Branch中的P端,而将原有的树形结构输入T端,我们可以发现,在Cull Pattern中被抹去的层级(第2、第4、第6、第8)所对应的数据(1、3、5、7)也被抹去了,剩下的数据重新排列出新的层级。


grasshopper python多个参数输出_数据_04


同理,将Cull Pattern换成Dispatch,同样的通过对P端进行设置,可以分流出我们所需要的数据结构。现在树形数据每级只有一个数据,那如果想将相等个数的多个数据分在一组,那又如何处理呢?一个简单的思路是,先将数据拍平然后通过Partition List,通过在S端设置每组数据的个数来达到。


grasshopper python多个参数输出_凹入表形式打印树形结构_05


当然,除了用运算器还有更好的办法,就是利用强大的工具Path Mapper。刚开始接触这个运算器的时候很容易感到头大,因为作为空间艺术家的我们{狗头}毕竟我们不是程序员,面对这种呆板的电脑语言开始感到很不适应{狗头}。

例如,如果想将树形数据里的数据按相等的个数重新分组,只需要一个公式就能解决。


grasshopper python多个参数输出_数据_06


原来的数据结构分为三级,数据层级依次可以用{A;B;C}来代替,(i)则代替数据层级上信息的序号。现在对数据末级C级进行int(C/n),n为等分的个数,例如图中的3,即可达到Partition List相同的效果,对树形数据进行重新分组,即C级的层级中按3个进行均分并重新分组。

有人看到数据层级上从头到尾一直显示{0;0;N},那么可能会觉得前两级明显多余。一般我们可以直接在运算器上进行Simplify,进行数据结构上的精简。其实运用Path Mapper也可以做到。


grasshopper python多个参数输出_凹入表形式打印树形结构_07


直接将{A;B;C}(i)变为{C}就好了,简单粗暴。还有人觉得每一级只有一个数据太浪费了,不如把这些数据都合到一级来。这里我们同样可以利用Path Mapper将每一级上的同样位置数据单独拎出来分在一组。例如我们将上述得出的数据每一级的0号数据都分在一组:


grasshopper python多个参数输出_树形结构_08


可以看到原有树形数据的每一级的第0号数据都被分到了一组,按照原有树形数据的顺序依次往下排。这样原有的8级现在由于数据单独拎出来分成了一组就变成了一级,相当于被拍平。然后我们对生成的数据进行相同的操作,我们发现原来的每一级的相同序号的数据同样都被拎出来分成了一组,恢复到了原有的状态。这就很有意思。如果不好理解的话,我们可以再进行一个操作。我们对之前两两分组的树形数据进行一次操作。


grasshopper python多个参数输出_树形结构_09


可以看到,每一级数据上,相同序号的数据被单独拎出来,分成了一组,如0序号上的1,2,4,6,8,1序号上的1,3,5,7,都被单独拿出来,分成了两组。然后再进行一次操作,数据结构又复原了。这就是Path Mapper的作用,平时在找形的过程中,许多点位于线条分别属于不同的层级,有时需要跨越复杂层级来对形态进行调整。上文距离的等差数列只是一个最简单的树形结构,平时遇到的树形结构无疑要比这复杂得多。这时候Path Mapper就使这个过程变得异常方便。无论结构多么复杂,只要真正理清了,就可以通过数据结构的处理使得空间形态得到更为自由与便捷的编辑。