博客

  • grasshopper系列文章-集合的运算

    grasshopper系列文章-集合的运算

    这节课我们来学习一下关于集合的Grasshopper的算法。在grasshopper中关于集合的概念的我在前面的几节课已经有提示提及过了,呃,大家可以去到这篇文章里面去看一下,《grasshopper数据结构的几个基础概念》

    计算集合的作用就是找到一些共有的元素或者找到一些有差异性的元素。

    image.png

    Create Set:创建集合,这个基本上用不上的,就算不接这个运算器也可以创建集合,我们来看下面的算法,一个等差数列输入到一个集合的运算器里面之后它输出了又是一个集合。

    image.png

    Set Difference:集合的差集运算。

    在下面的算法中,A的列表和b进行比较,最终输出的列表是减掉b共同拥有的项目。在B列表中和A列表共有的元素是0和1,所以在结果中他们都被减了。

    image.png

    Set Difference(s):集合的差集运算,这个差距运算和上一个不太一样的地方,就是它输出是多个列表的集合。

    我们从下面的算法可以看出来,输出端口输出的值是包含了a和b里面的元素的,列表里面是减掉了共有元素的。

    image.png

    Set Intersection:计算交集。

    在下面的算法中,我们可以看到a和b这两个列表输入到计算交集运算器中,最终输出的值是0和1。

    image.png

    Set Majority:Ab计算交集和c计算并集,最终输出的是ab的交集,加上c。

    在下面算法中,我们看到abb计算出来交集是0和1,c是4,最终结果是0 1 4

    image.png

    ​Set Union:计算列表的并集。

    image.png

    [elementor-template id=”7418″]

  • Rhino犀牛建模-电动滑板实例教程(二)

    Rhino犀牛建模-电动滑板实例教程(二)

    接下来我们把轮胎部分用Rhino犀牛做完

    切换至左视图,使用Circle画出几个圆形 和轮框的截面

    如下图所示

    image.png

    选择截面线使用Revolve旋转命令,做成轮框轮廓面

    再选取其中一个圆形,用pipe圆管命令,建成一圆管

    如下图所示

    image.png

    在左视图上,画出这两条圆形曲线

    image.png

    单独选取三条圆形曲线,其他隐藏

    切换至透视图 里面两条圆形曲线向外移动2MM

    再绘一条制截面线

    image.png

    同样用Revolve旋转命令,绘成一个曲面

    image.png

    使用Split切割命令,把中间的圆形曲面切割出来,

    再用OffsetSrf偏移面向内偏移0.5mm

    用Explode炸开这个多重曲面,表面曲面删除即可

    凹陷身效果如下图所示

    image.png

    DupEdge复制边缘线,然后拉伸出柱体面,

    漏斗跟轴心拉开点距离,如下图所示

    image.png

    在前视图用line线绘制以下图形

    image.png

    使用ExtrudeCrv拉伸命令,拉伸面如下图所示

    image.png

    放好位置后,切换到左视图

    用ArrayPolar环形阵型命令

    旋转复制5个,完成如下图

    image.png

    接下来我们用犀牛rhino画一下轮胎,在前视图上用Curve曲线勾出轮胎的轮廓线

    如下图所示

    image.png

    切换至透视图,用Revolve旋转命令,把曲线沿中心点旋转一周

    形成轮胎,如下图

    image.png

    使用 CreateUVCrv展开面的命令

    把轮胎曲面展开成一矩形

    image.png

    使用PlanarSrf平面曲线建立曲面的命令

    把矩形变成面,如下图所示

    image.png

    在上面绘出胎面花纹

    image.png

    使用拉伸命令,向上拉伸0.5mm左右的胎面花纹

    再用Array阵列命令,阵列如下图所示

    image.png

    接下来把这胎面花纹附在轮胎上

    使用FlowAlongSrf沿着曲面流动的命令

    选取胎面花纹空格键,再点选胎纹下曲面的角落一点

    如下图箭头处

    image.png

    再点选轮胎起初线的一角落,如下图红箭头所指那点

    胎纹如下图所示,如果附在上面的胎纹

    方向或反向了,认不清方向,可各个角落点试一遍。

    image.png

    绘制轮框的另一个面,用圆形绘出轮框外轮廓,前后距离拉开

    再用直接绘出横截面线

    image.png

    点选横截面线,用Revolve旋转命令,

    旋转点选取中心点旋转一周,形成轮框面

    image.png

    切换到左视图,绘出直径为10mm的圆形

    拉开距离为10mm,再选取中间空心的那个圈的曲线

    选择这两个圆形曲线其他隐藏

    切换至顶视图,绘出两圆间的连接曲线

    如下图所示

    image.png

    选择连接曲线,再用Revolve旋转命令

    把它旋转成一个曲面

    image.png

    完成如下图

    image.png

    现在做个轮框的细节部分,在左视图中绘出圆角矩形

    使用Project投影到轮框中心轴上

    再选择中心轴使用Split切割命令

    点选圆角矩形,在中心轴上切割出圆角矩形

    然后删除,用OffsetSrf偏移曲面命令

    向内偏移1mm厚度,再如下图所示

    image.png

    用DupEdge复制边缘线,拉伸成柱状

    再选择边缘线,使用pipe圆管命令

    把圆形曲线变成1mm径的圆管

    image.png

    使用Rectangle矩形命令,绘制一个圆角矩形

    ExtrudeCrv拉伸到一定高度,

    再用FilletEdge建立圆角边缘

    把这个物体底部边角变圆滑

    再放在位置上,如下图所示

    image.png

    轮框还有个小细节,选择轮框其他隐藏

    用Sphere球体命令绘制一个小球体

    放至该位置上,再用ArrayPolar环形阵列

    沿中心点陈列复制4 个,如下图

    image.png

    使用BooleanDifference布尔运算差集命令

    把球体剪掉,做出凹陷的效果

    image.png

    把做好的轮胎镜像到另一边

    image.png

    另外两个轮子一样的镜像过去,中间的轴承在概表达了一下

    image.png

    好了,滑板的大体结构就完成了,一些小的细节就交给你们独自完成了

    image.png

    以下图片可以作参考

    image.png

    image.png

    image.png

  • Rhino犀牛建模-电动滑板实例教程(一)

    Rhino犀牛建模-电动滑板实例教程(一)

    Rhino犀牛建模-滑板实例教程

    今天我们用Rhino犀牛建个滑板

    首先,按照惯例先把图层设置好

    过程中有需要添加图层再添加

    image.png

    把中线,结构线,滑板的尺寸先定好,

    在顶视图用Rectangle矩形绘制800*200(mm)的圆角矩形

    切换至左视图用BackgroundBitmap导入背景,对好位置尺寸

    绘制出滑板上层的外轮廓线

    image.png

    切换至透视图,选择圆角矩形使用sweep1单轨扫掠点选两边截面

    用单轨扫掠绘制滑板上层一曲面

    image.png

    再切换至左视图,把多余部分使用Trim剪切命令剪掉

    把这部分的曲面用Mirror镜像到另一边

    image.png

    接下来把这部分的底部做完

    在透视图中,使用RailRevolve沿着路径旋转命令做个底部

    image.png

    跟上述做法一样,切换至左视图,画出两边截面

    image.png

    使用DupEdge复制己做完曲面边缘线,用sweep1双轨扫掠命令绘制出上层曲面

    如下图所示

    image.png

    在两侧绘制曲面的截面线,再用DupEdge复制边缘线,复制的边缘线使用JOIN组成封闭曲线,

    再用sweep1单轨扫掠,侧面完成,如下图所示

    image.png

    下面我们把踏板做上,在透视图上,滑板中绘制一条直线,然后ExtrudeCrv拉伸成一个曲面

    切换至顶视图,选择上图的复制边缘线和现在拉伸的曲面进trim剪切,踏板完成

    注意:如在左视图在,出现多出的面可用剪切把它剪掉

    如下图所示

    image.png

    好,接下来我们用Rhino犀牛来画滑板的下壳部分

    把视图切换至左视图,把侧面的边线勾画出来

    定位绘出圆角矩形,一样用sweep1单轨扫掠,再镜像至另一侧

    下壳上侧曲面完成,再DupEdge复制边缘线使用JOIN组成封闭曲线,

    ExtrudeCrv拉伸成一个曲面板,顺便用Cylinder圆柱把上下壳连接的柱体画上

    完成如下图选择部分

    image.png

    下壳的下部分下是跟上述做法是一样的,先在左视图上绘出侧面轮廓曲线,

    同样使用DupEdge复制边缘线使用JOIN组成封闭曲线

    点选复制边缘圆角矩形,再用sweep1单轨扫掠

    选择侧面两条轮廓曲线,曲面形成

    再切换至左视图,勾画出侧面线,对形成曲面进行剪切

    如下完成图

    image.png

    接下来用上述同样的方法,绘制以下部分

    image.png

    切换至左视图绘制底部轮廓线,如下图所示

    image.png

    使用DupEdge复制边缘线,把边缘线join组成一条封闭曲线

    再把底部轮廓线用ExtrudeCrv命令拉伸成一个曲面板,

    选择复制的边缘线和曲面板用trim剪切,剪成如下图底板

    image.png

    好,上壳踏板部分完成,我们下节课再继续做轮胎部分

    下节课再见!

    以下图片可以作参考

    image.png

    image.png

    image.png

  • grasshopper系列教程-数据序列(等差数列,随机数列,斐波那契数列)

    grasshopper系列教程-数据序列(等差数列,随机数列,斐波那契数列)

    我们今天讲的Grasshopper的内容是非常常用的。这些运算器的作用大部分都是修改列表的顺序或者创造一些有序号的列表,比如等差数列,随机数列。

    image.png

    Cull Index:按照序号删除列表中的项目。

    image.png

    我们只要从a端口中输入序号,然后就可以删除指定的项目了。也可以输入多个序号。

    Cull Nth:删除空的项目。根据我们输入的个数,然后用来删除列表中空的项目。

    Cull Pattern:按照输入的规则来删除列表中的项目。这个这个运算器的作用有点类似于dispatch。只是dispatch,它是分为ab两个路的,这个运算器是删除项目后的列表。

    image.png

    Random Reduce:输出随机删除项目后的列表。我们在端口中输入要删除的个数。这个运算器会删除相应的个数而且原来的顺序也会被打乱。

    image.png

    image.png

    Create sequence:创建一个文本字符序列。

    Duplicate Data。复制列表的项目。

    比如说我们项目中需要输出100个1。那么我们在复制的列表中输入1,个数输入100个,这样列表输出的就是100个1了。

    image.png

    在上面的算法中,我们可以看出最后一个端口默认是Ture的,如果是false,他们输出的列表是不一样的,大家可以看一看它们之间的差别。

    Fibonacci:创建斐波那契数列。 斐波那契数列是一系列数字,其中每个值是前两个值的和。 由于前两个值没有设定,因此需要手动设置。 默认系列使用{0,1}或{1,1}作为初始值。

    Range:输出一个等差数列。

    Range的作用是根据我们设定的范围和等份的数量,输出一个等差数列。

    这个电池在我们平时grasshopper的使用中是非常常用的。

    image.png

    Repeat Data:重复数据。这个运算器的作用和Duplicate Data的作用差不多,都是输出重复的数据。

    image.png

    Sequence:生成数字序列,n端口输入一个计算公式,L端口输入计算的个数,这个运算器默认输出的数列是一个费波那切数列。

    image.png

    Series:等差数列。这个运算器我们在前面的课程已经反复使用多次了。它的作用其实和range也差不多。但它不是设定范围,而是设定公差和输出的个数。

    image.png

    Jitter:一个列表的顺序打乱,输出一个随机的列表。

    image.png

    这个运算器最后一个端口是一个随机因子,输入不同的整数,它会输出不同的数列。

    Random:输出随机数。根据我们设定的数值范围。个数和随机因子。最终输出一个或者多个随机数。

    image.png

    第一个端口是输入随机值的范围,第二个端口是输入随机的数量,第三个是一个随机因子。

    [elementor-template id=”7418″]

  • Grasshopper系列教程-数据列表匹配

    Grasshopper系列教程-数据列表匹配

    今天的Grasshopper的内容比较少。

    image.png

    Combine Data:合并多个输入中的非空项目,这个运算器在实际应用当中作用并没有体现,大家先看下下面的演示算法。

    image.png

    Sift Pattern:使用序号索引模式对列表中的元素进行筛选。从字面意思上比较难以理解的,但是我们可以它和【Dispatch】是比较类似的,Dispatch是分流,这个也可以分流,只不过它会把分流的项目转化为Null。

    image.png

    Cross Reference:交叉列表匹配数据 

    Longest List:长列表匹配数据

    Shortest List :短列表匹配数据

    这三个运算器的作用是改变数据的匹配模式和类型的,Grasshopper默认的匹配模式的Longest List。关于数据的匹配也是Grasshopper学习的重点内容,我会在后面专门来讲解这部分的内容,今天大家只要看下面的简单算法,对匹配数据有个大致了解就好了。

    image.png

    [elementor-template id=”7418″]

     

  • Grasshopper系列教程-Weave-dispatch等数列运算

    Grasshopper系列教程-Weave-dispatch等数列运算

    今天讲解的Grasshopper的几个常用的数据列表控制的电池,下面的这几个电池在分类元素有非常重要的意义。

    image.png

    Dispatch:分流运算器,这个相当常用的电池了,作用就是把一个长列表按照【规则】分流为两个子列表。

    image.png

    所谓的【规则】:就是在P端口输入【Ture】和【False】的数据,之后Dispatch按照Ture分到A列表,按照False分到B列表。

    image.png

    当然也可以输入F T T或F F T T或者更多的数据,如上图所示。

    Null Item:判断数据列表里是否存在【空数据】,所谓空数据就是指【Null】数据,也就是错误或者不存在的数据。如果判断有空数据则输出Ture,如果判断没有空数据,则输出False。

    image.png

    为了演示判断空数据的算法,我这里人为地制造了空数据,就是用两个等差数列相除,由于等差数列默认情况的第一个数为零,所以他们相除之后,第一个数必然是错误的。从上图我们可到序号(Index)0出现了一个Null,而N端口输出的序号0这里输出了TRUE

    Pick’n’Choose:这个不知道怎么翻译 ̄ω ̄=

    这个电池的意思就是P端口输入任意的整数数列,数列无限制,其默认参数是0 1,之后下面的0 1 端口分别输入两个数列,R端口输出有0和1组成的新数列。

    但是结果为什么输出的是0和8呢??

    原因是这样的,输入0那个数列获取的该数列的序号0的数字,那也就是0了;输入1那个数列获取的该数列的序号1的数字,那也就是8了(1那里把等差数列反转序号)

    image.png

    Replace Null:替换Null数据。

    这个简单,就是把数列里存在Null的数据替换掉,这适用于把无意义的Null数据替换成有意义的数据。

    image.png

    Weave:混合,这个电池就很有用了,它可以把多个数列直接【搅合】到一起组合成新的数据

    算法看下图,关于这个运算器的运用,我们以后会在Grasshopper教程里提出一个小案例来专门讲解它的用法

    image.png

    [elementor-template id=”7418″]

  • 如何在Grasshopper中找到曲面的任一点在平面的上映射点

    如何在Grasshopper中找到曲面的任一点在平面的上映射点

    如何在Grasshopper中找到曲面的任一点在平面的上映射点。

    我们先来看看算法

    image.png

    算法上来说还比较简单的,在曲面上画几个点,当然这几个点也不一定是在曲面上的,靠近曲面也是可以的,然后使用今天讲的重点运算器:Surface Closest Point ,直接翻译就是【最靠近曲面的点】,其最终输出的就是曲面的上的点和平面上的映射点。就如上图所示。

    image.png

    【曲面上的点(红点)和平面上的映射点(绿点)】

    那么同学会问了:找到这些点有什么用啊??

    这个问题问得好啊,那我下面就说说它的几个大用处。

    首先找映射点,上面提到了的。一般只找到映射点是没什么用的,有用的下面这个操作。

    image.png

    去曲面上绘制曲线,上面算法不是得到平面映射点了吗?我们把映射点连起来后再映射会曲面上,这样在曲面上就得到一条曲线了。

    第二是通过映射点能得到曲面的结构线。有了曲面结构线后我们就可以用分割曲面、创建曲面的框架构件等等。

    image.png

    【曲面的结构线】

    第二,找到曲面的映射点,可以【摊平曲面】

    image.png

    经过上图的算法,能把任何曲面【摊平】成矩形,其实正确的说法应该是【建立UV曲线】,这操作在Rhino上也是有的啊,其命令就是【Create UV Curve】。

    我们只要能够把曲面的UV曲线找到,那么下一步就能够对这个曲面【为所欲为】了,你想干嘛够行。

    比如:

    image.png

    经过以上一顿骚操作,其大致原理就是去UV曲线内绘制任何实体,最终用【Surface Morph】流动到曲面上。

    image.png

    其他的任何曲线或者实体都可以用这个方法来做的,比如蜂巢样式表皮,鸟巢,水立方等等都可以,同学们自己发挥下聪明才智了。

    好了我们今天的Grasshopper的课程就到这里的,如果有什么疑问的话,请到下方的留言窗口留言。

    [elementor-template id=”7418″]

  • Grasshopper系列教程-数据列表的相关操作运算器

    Grasshopper系列教程-数据列表的相关操作运算器

    我们今天来说说Grasshopper的数据列表的知识点,数据列表就是包含多个数据的列表了,当然也可以只有一个数据,我们平时所说处理往往是多个数据的列表。数据列表在Grasshopper的使用过程当中是占有相当大的比重的,其实我们也可以这么说,我们用Grasshopper做设计,80%以上是在做数据的组合排列,就是在堆砌组合删除各式各样的数据,所以要会用Grasshopper就必须学会怎么灵活的操作数据列表了。

    不过我们今天的课程不太难,大家跟着我的节奏,这节课先把Grasshopper这些数据列表的运算器的名称和大致用法搞清楚。

    image.png

    Insert Items:插入列表,这个运算器的作用是当我们想要一把一个或几个元素加入到一个大的数列里去的时候使用的。

    image.png

    在上图当中,数列aa,bb,cc插入1,2,3,4,5,6的数列当中,插入的起始位置为序号(Index)3,结果输出的数列为1,2,3,aa,bb,cc,4,5,6

    Item Index:搜索Item的序号,如果搜索不到输出-1,但是下面的实验不管怎么做的都是输出-1,不知道是方法问题还是软件BUG,如果有找到问题解决方法的同学可以在下方给我留个言。

    image.png

    List Item:筛选指定项,这个运算器是我们Grasshopper设计过程中最常用的运算器之一了,参数化设计过程只要是选择物件的话,基本都要用这个,其用法也非常简单,只要输入指定的整数就可以了。

    image.png

    上图中输入1,输出序号为1的项目bb,List Item放大只有可以加增加或减少端口。

    image.png

    List Length:清单的长度,计算输入的列表的数据个数,这个也是非常之常用的。

    image.png

    Partition List:把数据列表分组,这里涉及到分组的概念,我这里先简单的说明一下,在grasshopper中如果没有分支的的数据,我们称之为线型数据,也就是不分组的数据,但如果数据一旦有了分支,我们则称分支(或者分组)数据为“树形数据”,其路径的表现形式为{0;0},{0;1}…..,我们在Panel中也能明显看出分组和不分组的表现样式。

    image.png

    就上图的算法,Partition List的S端口可以输入一个数据或者多个数据。当输入2时,一个List被分为每两个数据为一组,当输入1,3时,则被分为1个数据1组,3个数据3组,然后重复这样的规律分组,知道List被分割干净为止。

    Replace Items:替换数据,当我们要用新的数据去替换原来列表的某些元素的时候,就要用到Replace Items,其用法和插入Item类似

    image.png

    上图的算法中,i端口输入2,则在原数列的序号2开始替换。

    Reverse:反转数列,这个没什么好说的,大家看下面的算法吧。

    image.png

    Shift List:偏移数列的编号,这个运算器是运用好Grasshopper的重点工具,我们要让建筑表面发生错位,偏转等效果一般都会用到这个运算器。

    image.png

    就上图的算法,原数列是3 1 bb aa,当S端口(偏移位数)输入1时,整个列表就偏移了一位,成为新的数列(1 bb aa 3).

    Sort List:重新排列数据,让杂乱的数据(特指数值)安装从小到大的顺序排列,算法看下图。

    image.png

    Split List:分割数据列表,把一个长数据列表分割为短的列表,使用方法如下

    image.png

    Sub List:获取列表中的子列表,这怎么理解呢?打个比方吧,一个班有60人,一天老师要分配个任务,他说我们班里20-40座位号的同学去打扫操场,大概就怎么一个意思了。

    image.png

    上图的算法中,D(区间)端口输入2(就是指区间【0,2】),那么获取序号在0-2范围内的元素,得到子列表aa bb cc

    [elementor-template id=”7418″]

  • 塞巴斯蒂安·埃拉祖里兹(Sebastian Errazuriz)说,人工智能的兴起意味着建筑师已经“消亡”

    塞巴斯蒂安·埃拉祖里兹(Sebastian Errazuriz)说,人工智能的兴起意味着建筑师已经“消亡”

    设计师塞巴斯蒂安·埃拉祖里兹(Sebastian Errazuriz)表示,随着人工智能接管设计过程,百分之九十的建筑师将失业。 这位纽约设计师在其Instagram帐户上发布的个人Vlog视频中提出了有争议的主张。 他说:“我认为,必须尽快警告建筑师90%的工作处于危险之中,这一点很重要。” 他说:“您几乎不可能与算法竞争。”他补充说:“事情并不那么特别。”

    image.png

    这位艺术家和设计师出生于智利,在伦敦长大,之前曾引起争议,最近一次是通过提议将遭到火灾破坏的巴黎圣母院大教堂改造成火箭发射台。 在他的最新言论中,他预测了人工智能将使建筑专业的衰落。 在一个Instagram帖子中,Errazuriz发布了由Wallgren Arkitekter和BOX Bygg开发的可自动生成计划的参数化工具的动画。 “今天是今天,”埃拉祖里兹写道。“现在试想一下,这项技术和十年将对行业产生1000倍的影响。”

    Wallgren Arkitekter和BOX Bygg创建了一个可生成自适应计划的工具

    他预测,机器学习很快将使软件应用程序在几秒钟内综合大量的架构知识。相比之下,建筑师需要花费数年的时间来获取设计建筑物所需的技能和经验,从而使他们无法竞争。

    Errazuriz预测,客户很快就能告诉应用程序他们想要哪种建筑,描述预算,位置,大小和其他偏好,并在几秒钟内获得一系列选择。

    他说,很快,客户就可以“移动分布,在增强现实中看到它,检查我的家具将如何放置在内部,并批准适合我预算的家具”。然后,该应用将推荐当地承包商来构建项目。

    他预测,只有极少数的建筑师能够生存。“作为一种艺术实践,建筑是唯一可以生存的方法,它将由一个很小的精英来开发。我们说的是百分之五,占建筑师最多的百分之一。其余的都完成了,他们注定要失败。 ,他们不见了。Finito。这就是结局。Muerte。”

    他建议建筑师改为成为软件开发人员。

    他说:“进入技术领域。” “理解那些相同的空间功能可以以更抽象的方式来使用,以便能够与其他类型的工程师合作,协调大型系统并开发未来的系统。不是那些会灌输水泥的人,而是会写代码的人。请立即进行切换。不要失去工作。”

    Errazuriz的其他挑衅包括他2017年的项目破坏了Jeff Koons的增强现实艺术品,并为他的十几位前恋人设计了一系列鞋子

    [b2_index_module key=jifen]

     

  • grasshopper数据结构的几个基础概念

    grasshopper数据结构的几个基础概念

    在学习Grasshopper的数据结构之前,我们先来了解怎么几个词的意义

    清单(List)、集(Sets)、字符串(String)、树木(Tree)、路径(Patch)

    清单(List):列表是有序(但不一定排序)的数据集合。列表可以包含零个元素,单个元素或(最多) 2,147,483,647个元素。此外,同一元素在同一列表中可能出现不止一次,而具有相同值的不同元素可能会出现不止一次。同样,列表可能缺少元素,称为“空”。

    集(Sets):严格来说,集合是一种数学构造 遵守严格的规则和限制。基本上,一个Set与一个List相同,不同之处在于它不能多次包含同一元素,或者实际上不能包含两个或更多个具有相同值的不同元素。您会发现,在数学中,值和该值的实例之间没有区别,它们是同一回事。但是,在编程中,可以将数字7存储在RAM的多个位置中。但是,Grasshopper不会非常严格地执行此规则,您可以在具有多个相同值的列表上使用很多Set组件。Grasshopper中“列表”和“集”之间的最大区别在于,“集”仅针对具有简单相等性比较的简单数据类型进行定义。基本上是:布尔值,整数,数字,复数,字符串,点,向量,颜色和间隔。列表可以包含各种数据。

    字符串(String):字符串是文本。没什么了。我不知道为什么早期的程序员选择将它们称为字符串,但是我想这是对它们的内存表示的更好描述。字符串本质上是各个字符的序列。

    树木(Tree):树是所有数据存储在Grasshopper中的方式。即使只有一个项目,它仍将存储在树中。树是列表的排序集合,其中每个列表由路径标识。一条特定的路径只能在一棵树中出现一次,当您将两棵树合并在一起时,具有相同路径的列表会相互附加。树不仅试图无损地表示数据本身,而且还表示该数据的历史。假设您有4条曲线{A,B,C,D},然后将它们分为3个点{X,Y,Z}。然后,为每个点创建一个新的线段{X’,Y’,Z’},然后将每个线段再次分为5个点,每个{K,L,M,N,O}。数据存储在树中的方式,应该可以确定点M是属于X’还是Z’,以及该X’或Z’。

    路径(Patch):路径不过是一个整数列表。用花括号和分号表示: {A; B; …; Z}。路径绝对不能为空 {}或具有负整数 {0; -1},但可以创建这样的路径,并且它甚至不会让Grasshopper崩溃。路径由可能为单个输入值创建多个输出值的组件“增长”。例如,划分曲线。它为每条输入曲线创建N个点。在这种情况下,新的整数会附加到路径的末尾。

    image.png

    关于数据面板(Panel)的构成

    1:序号(Index),指明数据元素的标号,这串数据系列号是从0开始递增的自然数数列。

    2:数据(Data),Panel内部会显示数据的具体类型,名称,参数等。我们观察数据的规律主要是看这里的。

    3:路径(Path),Data在整个列表(List)所处的位置。默认位置为{0;0},当有分支时其数值也会递增,比如{0;1}

    好了,今天讲的是Grasshopper有关数据列表的一些小知识,算是一种科普性质的,接下的课程我们会详细的讲解Grasshopper关于数据列表的相关操作,敬请期待吧。