当前课程知识点:Grasshopper参数化设计与建模 >  第四章 Grasshopper数据结构(一) >  4.1 Grasshopper数据结构基础 >  4.1

返回《Grasshopper参数化设计与建模》慕课在线视频课程列表

4.1在线视频

下一节:4.2

返回《Grasshopper参数化设计与建模》慕课在线视频列表

4.1课程教案、知识点、字幕

本节我们将给大家介绍

grasshopper当中一种基本的数据结构

也就是列表的基本操作

作为学习数据结构的开始

我们首先需要学习一下

如何生成或者获取多个数据

如何在grasshopper里面

生成或获取多个数据

比如说我们已经用过的

这个叫做range的这个运算器

我们把它放大看一下

Range左面输入的是一个domain

一个范围
Range左面输入的是一个domain

一个范围

和一个steps

就是我把这个范围切分成多少份

右边就会相应得到多个数据点

比如说我们在这里输入3

将0到1的这个范围切分成3份

我们在右边就会得到

这样的三个数据点

我们可以把它可视化出来

可以用xyz的方式

把这样一个Xyz的点的坐标的方式

把这个切分的数据

作为x的坐标输入进去

这样的话我们就得到了Range

它能够对一个区间进行切分的可视化

我们可以增加它的数据量

或者减少它的数据量

那么与range相似的

有一个叫做series的运算器

Series

那么Series呢

它是需要我们给定一个start

就是起点

然后一个Steps

指的它得到步长以及它的count

就是有多少个点

我们也可以做一下 演示一下

我们有四个点 步长是0.1

那么它的起点是0.3

同样我们把这些复制过来看一下

两个数据列重在一起了

我们把这儿的y值给它set成1

那么这个就是

我们在这里用series生成的数据点

它是从0.3开始

间距0.1然后有4个点

我们可以增加这个点的数量
间距0.1然后有4个点

我们可以增加这个点的数量

可以改变它的起点

包括这里我们也可以设定它比较大

或者比较小 都可以

这儿就不调了

那么我们还可以用一种什么方式呢

就是比如说如果

在rhino里我有若干个点

这种方式我们以前使用过

Pt

我们可以set multiple points

可以框选

这样可以获得多个点

我们也可以用panel来输入多个数据

至于Panel输入多个数据的时候

我们前面用过比如说

我们输入1

回车3 4 2 5

这个时候虽然我们输入多个数字

但是其实grasshopper认为这是一个

多行的数据是一个文本数据

所以这里我们要改变它的一个设置

在这里multiline data

这个现在已经是选中的状态把它取消

取消以后呢

每一行都会变成一个单独的数据

就变成了5个数字
每一行都会变成一个单独的数据

就变成了5个数字

那么除了这种方式我们还可以用random

随机的方式

那么可以生成一系列的随机数

在这里可以输入多少个随机数

比如说4个随机数

在右面就得到了

4个从0到1之间这个区间内的随机数

那么这些都是我们获取

各种数据列的一种方式

或者叫做列表的方式

在rhino里面多个数据

我们一般叫做list

就是在Sets里面我们看到这儿

有专门的针对List做操作的

一系列的这个电池
有专门的针对List做操作的

一系列的这个电池

一会儿我们会做介绍

那么对于List来讲

比如说我在这里拾取了5个点

我可能是框选的

但是我其实并不知道

有的时候你会选择很多个点

也不知道它到底有多少个点

所以当我们有一个List以后

可能马上会想到需要做一个运算就是

知道比如说这个地方这个List有多长

有多少个数据

所以有一个电池叫做List Length

我们输入Length 长度

这里有很多个长度

我们选择List Length

是一个列表它的长度

我们把这个接上去

看看List Length是多少

鼠标放在这儿就可以看到是5个

因为我刚才选了5个点

这样就可以求出来

List Length是5个

好 然后当然我们可以去做其他的

比如说这边都可以做List Length

有了这个长度以后我们就会想到的是

那我能不能提取其中的某一个元素

比如说在这里头
那我能不能提取其中的某一个元素

比如说在这里头

我想提取其中的第3个

可不可以呢

有一个电池叫做List Item

也是在List这个相关的这些type里头

我们把这个List输入进去

把这个List输入进去然后

在这里输入一个Slider

刚才说的第3个 第3个是多少

就是这个2 编号3的

在这里头编号3的这个是2

注意在grasshopper里面

List的顺序号是从0开始

这个大家如果对编程比较熟悉

在很多的编程语言里头

一个序列或者一个List或者一个数组

它的标号都是从0开始

那么这样我们就可以比如说改变滑动条

就可以得到List里面任意一个数据

提取它的任意一个数据

当然如果我们已经有了比如说这个3

这边的这个3

我们又想知道这个3

它在这个list的里面的位置

实际上是跟List Item做一个运算

那我们就有一个叫做Index

这个叫Item Index的运算器

我们把刚才的这个List

这是我们的List

把List输入到这边

然后把Item从这里放进去

我们就会得到Item它的编号

Item的编号是1

注意在这里有一点是需要大家注意的

有可能你会想

我在用这样一个List Item的运算器的时候
有可能你会想

我在用这样一个List Item的运算器的时候

我不是这种使用方式

而是比如说我想知道3在这里面排第几

所以我可能会输入一个Panel

然后输入3

所以我想看看3在这个List里面是第几个

但是这个结果其实并不是我们想要的

大家看到它显示-1

-1的意思是没找到

为什么没找到呢

这不是3吗应该是一样的呀

这个意思是说

这个List Index它其实是找的

我们通过这种List Item的方式

提取出来的一个数据

它在Index里面的位置

所以如果你输入一个数字

虽然跟它大小一样

它依然不可能在List里面找到

实际上是说

如果我们用List Item的方式

提取出来这个元素

那么它在内存里头是有一个位置的

是有一个惟一的位置

那么我们再去找这个惟一的数据

它在这个List里面的顺序号

就可以找到

同样你也可以这样去想

如果我这个List里面

如果还有一个3的话

那么照理说我会用这种方式找到

两个序列号 这样就有矛盾

所以其实它不是这样使用的

这个List Index不是这样使用的

对于一个List来讲

我们也可以对它进行一个排序的工作

比如说对于像这样和这样的

顺序混乱的这种List

我们可以去做一个排序的工作

sort sort list

把这个list从这儿输入进去

我们看一下右边得到的结果

那么就是由小到大的排序的一个list

那么可以排序就可以颠倒顺序

reverse reverse list

可以把一个list的顺序

给它颠倒过来

这是经过颠倒的从大到小的这个list

所以实际上对于

像reverse这样的操作呢

我们是可以在很多的电池的

输入或者输出的地方都可以

鼠标右键可以找到reverse

这里我们就可以需要reverse

跟这个reverse的模块

它的作用是一样的
跟这个reverse的模块

它的作用是一样的

大家可以回去试一下

好 那么对一个list来讲

我们还可以做一些调整它的顺序的事

比如说我们有一个series

这里得到了一个list

是0,1,2,3,4
这里得到了一个list

是0,1,2,3,4

我们可以做一个叫shift的操作

shift是什么意思呢

就是对list让它做一个偏移

我们看一下偏移以后的结果

变成了1,2,3,4,0

它的意思是把这个list向前推移一个

向前推移多少呢

在这个地方我们可以输入2

用一个slider去改变shift的幅度

现在如果我偏移2的话

那么就会跨过两个数据以后

从第三个数据开始2,3,4

完了以后呢会把前面两个0,1呢

补在最后

2,3,4,0,1

就是从这个0,1,2,3,4变成2,3,4,0,1

shift如果是1的话就是这种情况

shift这有一个叫wrap的选项

wrap的意思是说如果我经过shift以后
shift这有一个叫wrap的选项

wrap的意思是说如果我经过shift以后

那么我需不需要把原来前面那个

比如说把0,1补到这个list的后面去
那么我需不需要把原来前面那个

比如说把0,1补到这个list的后面去

这个就是wrap

我们可以在这设定false

我们看一下它的结果就是

当我们shift越多

这个列表就会越来越短

这个是shift

我们也可以对这个list做一个叫

replace的操作

replace items

这是一个list 2,3,4

我们可以比如说
这是一个list 2,3,4

我们可以比如说

我们想把中间这个3替换成别的

那么在这我们就要首先输入一个1

输入一个位置

这里输入它的位置在这里 在indices

这里输入它的位置

以及我们要把它换掉的

比如想把3换成5

经过替换以后

2,5,4

变成这样一个结果

我们也可以做insert

插入一个item

对这个list

同样我们把这边的slider拷贝过来

我们要在这个位置上插入一个6

看一下插入的结果

注意到这里这个indices太大

它比这个序列的长度还大

所以我们把它拖小一点

我们把它插入到第一个位置上

6就插入到了这个list的第一个位置上

得到这个结果
6就插入到了这个list的第一个位置上

得到这个结果

接下来我们还可以做

就是把这样一个list进行切分

比如说我们有split
就是把这样一个list进行切分

比如说我们有split

split一个list

有各种各样的split

我们split一个list
有各种各样的split

我们split一个list

把这个list给它

然后我们给它一个位置

比如说这里输入2

slider

我们看一下这边就会得到两个list

它们分别是

这样一个list和这样一个list

就在2的位置上把它切分开

这是split

我们还可以做一个事情就是sub list

所谓子list

我们可以从这个list上面去取一个范围

这里我们要构造一个domain

一个范围

construct domain

构造一个范围

在这边输入2

上面是缺省的0

所以0到2

我们就会得到一个sub list

2,6,5

就是这个子list

我们可以调整上下界

得到它的子list

有了sub list或者有了这些list以后

我们还可以把list合并在一起

比如说用merge

merge是一个非常强大的运算器

或者说是非常有用的运算器

我们把3个list merge在一起

然后看一下最后的结果

它把3个list都接在一起了

按这个顺序

按我们接入的顺序

2,6,5,2,6,5,4

好我们来总结以下

这以节的学习内容

首先我们学习了如何

获取多个数据的不同方式

这里包括使用range

sries等

这样的模块
sries等

这样的模块

来生产多个数据的方式

我们也以Set multiple points这种操作为例

介绍了从reverse当中

输入多个集合物体的方式

还有如何Panel当中设定多个数据的方式

以及使用Random的方式

来得到多个随机数

接下来我们也学习了列表当中的常用操作

包括如何计算列表的长度

如何提取特定数据

如何对数据进行偏移

替换数据、插入数据

以及合并列表等

Grasshopper参数化设计与建模课程列表:

第一章 参数化设计简介

-1.1 参数化设计简介

--1.1

--模型文件

第二章 Grasshopper简介

-2.1 Grasshopper简介

--2.1

-2.2 Grasshopper界面与基本操作

--2.2

-2.3 Bake与Internalize Data操作

--2.3

-第二章习题--作业

第三章 Grasshopper基本数据类型

-3.1 Math运算器

--3.1.1

-3.2 点与向量

--3.2.1

--3.2.2

-3.3 Grasshopper曲线运算器

--3.3.1

--3.3.2

-3.4 Grasshopper曲面运算器

--3.4.1

--3.4.2

-3.5 案例:水波

--3.5

-3.6 案例:螺旋曲面

--3.6

-第三章习题--作业

第四章 Grasshopper数据结构(一)

-4.1 Grasshopper数据结构基础

--4.1

-4.2 数据流匹配

--4.2

-4.3 Dispatch运算器

--4.3.1

--4.3.2

-4.4 案例:项链

--4.4.1

--4.4.2

--4.4.3

-第四章 Grasshopper数据结构(一)--第四章习题

第五章 Nurbs曲线与曲面建模

-5.1 Nurbs原理简介

--5.1

-5.2 Nurbs建模演示

--5.2

-5.3 Evaluate操作

--5.3

-5.4 由点建立曲线

--5.4

-5.5 Nurbs与向量

--5.5.1

--5.5.2

-5.6 案例:凤凰中心曲线环廊

--5.6.1

--5.6.2

-5.7 案例:鸟巢表皮钢结构

--5.7.1

--5.7.2

-第五章习题(一)--作业

-第五章 Nurbs曲线与曲面建模-- 第五章习题(二)

期中大作业

-期中作业:工艺品设计

--期中作业

第六章 Grasshopper数据结构(二)

-6.1 Grasshopper树状数据结构(1)

--6.1.1

--6.1.2

--6.1.3

-6.2 案例:2016年BIG事务所蛇形画廊

--6.2.1

--6.2.2

-6.3 Grasshopper参数化表皮

--6.3.1

--6.3.2

-6.4 案例:凤凰中心表皮结构

--6.4.1

--6.4.2

-第六章 Grasshopper数据结构(二)--第六章习题

第七章 Grasshopper建模技巧

-7.1 Image Sampler

--7.1.1

--7.1.2

-7.2 案例:望京soho表皮

--7.2

-7.3 Vironoi运算器

--7.3

-7.4 Metaball运算器

--7.4

-7.5 参数化设计在大型项目中的应用案例-“红飘带”景观装置

--7.5

--第七章 Grasshopper建模技巧--第七章习题

第八章 Mesh建模基础

-8.1 Mesh原理

--8.1

-8.2 SubDivision与银河Soho案例

--8.2

-8.3 地形建模

--8.3

-8.4 面板划分:以银河soho为例

--8.4.1

--8.4.2

-第八章 Mesh建模基础--第八章习题

第九章 Kangaroo物理模拟

-9.1 Kangaroo插件简介

--9.1

-9.2 悬链线

--9.2.1

--9.2.2

--9.2.3

--9.2.4

-9.3 张拉膜,充气膜与可受弯面

--9.3.1

--9.3.2

-9.4 CirclePacking

--9.4

-结语

--9.5

-第九章 Kangaroo物理模拟--第九章习题

期末作业

-期末作业: 综合运用

--期末大作业

4.1笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。