×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

[软件教程] 【GH-LLitbai 笔记.03】几种常见的数据分组方法

发布于 2016-9-14 2 点赞 11 评论 31597 浏览

本人是grasshopper的新手,理解上面没有什么深度,只能将近几天学习到得尽可能总结出来,以供交流共勉~
推荐同为新手的同伴们先花三四天将《Grasshopper完全自学手册V1.0》粗略过一遍,对基本运算器有个了解~再去学习一点数据结构的知识,这样比较能够独立思考起来,光是看案例教程个人感觉会有点摸不着头脑~
********************************************************************************************************************************************************
咳咳,开始正题~
数据结构是grasshopper中的一个核心问题,在复杂的模型处理中更是需要注意数据结构的正确性,否则软件很容易崩。
接下来就摘抄总结《参数化建模》中介绍的几种常见分支处理方法。可以看看加粗字体部分和截图,步骤说的繁琐了一点,截图不清楚的可以看看步骤

【1】规律分支
(规律分支大多与数据本身属性无关,而与数据所在的位置及其序号(专业一点说是路径)有关,为操作者强行制定某种规则进行分支的操作
如:将这组数据分成两组,前五个为一组,后五个为一组)
【1.1】规律分支 之 真假分拨
(真假分拨不会改变数据的树状结构,分发之后的数据仍然在它原来的位置上)
**:常用的是dispatch运算器和weave运算器,前者用于分拨,后者用于整合分拨后的数据
例子:生成一个20*20的点阵,并以点为中心形成“一排矩形+三排圆形”的规律形状阵列,所有形状均挤出4高度。

  • 调用SqGrid运算器,
  • 调用dispatch运算器,SqGrid运算器的p(point)连入dispatch的L输入端(list);以“Truth False False False ”的法则来对格点进行分支
  • dispatch运算器 的A端和B端分别连入Rectangle的p输入端,Circle 的c输入端
  • ******************形成“一排矩形+三排圆形”的规律形状阵列**********************
  • 调用weave运算器,将dispatch运算器 的 A端连入0输入端,B端连入1输入端。
  • 调用panel运算器,双击输入0,1,1,1 并且连入weave运算器的p输入端
  • ******************将分拨之后的数据整合,便于一同挤出高度**********************
  • 调用extrude运算器,将weave运算器的w输出端连入其B(base)输入端,并在其D输入端(direction)连入值为4的z向量即可 03-01.png
  • 03-02.png
file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/J@(Q8%5BEGY%60~LZ9B%606DQ%2%5BK.png

file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/WZ%5BCN5P%60%6006R4P)$DFXWKKU.png
【1.2】规律分支 之 等分分组
(等分分组是将原数据再等分成几组,会对数据结构产生一定的改变,会增加一层枝条,在形式上会从{a;b;...;n}变成{a;b;...;n;u} ,多出u层出来)
**:用的是Path Mapper运算器,个人感觉是个很棒的运算器,与graft运算器一同使用可以由自己意愿对数据进行分组
例子:生成一个20*20的点阵,并将点分成每三个点为一组

1.将SqGrid生成的布局点数据连入Graft运算器,让每个点生成各自的枝条(全局数据)
2.连入Path Mapper运算器,右键点击运算器选择第一项“Create Null Mapping”,自动识别树状数据结构
3.双击Path Mapper运算器,编辑左侧填入{a;b;c;d},右侧填入{a;b;c;d/3}。
03-03.png
******************初步形成“每三个为一组的等分分组”的阵列**********************
file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/LCJ6KCZDUX%5D23$R%5DUS%7D6TWB.png
4.连入panel运算器,检查发现并没有每三个为一组,原因是第三个数序号为2,2/3为0.666667,四舍五入为1。故而第三个数据会被算入第二组中,所以需要对Path Mapper运算器修正一下
5.双击Path Mapper运算器,右侧修正为{a;b;c;d/3-0.17}即可
03-04.png
******************修正完成“每三个为一组的等分分组”的阵列**********************
file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/MUCKT2L%5B9%5DX4KND)OO%5DHSGG.png

6.连入Pline运算器检查如下,完成每三个为一组的等分分组
03-05.png
03-06.png

file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/%5BROUDZ826PPYVF%5DRQ()~(5H.pngfile:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/_S345PQ9VOLD@JPJ)1E4MKS.png
******************************************************************************************************************************************************
【2】条件分支
(条件分支与数据本身属性相关,而与与数据所在的位置及其序号无关
如:将这组数据分成两组,大于5的为一组,小于等于5的为一组)
【2.1】条件分支 之“是否”分支
(给出条件对数据进行判断,满足条件的为一组,不满足条件的为一组)
**:常用math工具栏里面的比较大小运算器
例子:生成一个20*20的矩形阵,将矩形挤出形成柱体,挤出长度由参考点与矩形中心点距离决定,并限制矩形向下挤出最大值,让方块挤出不超过40m。(使用到math中的Smaller Than运算器)
1.SqGrid生成20*20的点阵, 将SqGrid生成的布局点数据连入Rectangle运算器形成矩形阵
2.set one point指定一个参考点,
3.将SqGrid生成的布局点数据及参考点连入Distance运算器
4.Distance运算器结果及数字40连入Smaller Than 运算器
******************判断大于40m与否**********************
5.将“<=”结果及Rectangle运算器结果连入连入Dispatch运算器
6.将Dispatch A端结果与数值为40的Z(Z1) 向量连入Extrude运算器
******************Distance大于40m的设定为10m**********************
7.将“<=”结果及Distance运算器结果连入连入Dispatch运算器
8.以Distance运算器结果为值新建另一个Z向量(Z2)
9.将Dispatch B端结果与Z2向量连入Extrude运算器即可
******************Distance小于40m的设定为Distance**********************
03-07.png 03-08.png

file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/R6F~~@9AGM$EEX4_%60B4(%5B%5D4.pngfile:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/%60Z9@PE0GZ_%5BD%7DR8WA9%60UZ)K.png
【2.2】条件分支 之 比例分支
(对数据进行排序并给出比例,比例内的为一组,比例外的为一组)
**:常用Sort List运算器
例子:生成一个20*20的矩形阵,将矩形挤出形成柱体,挤出长度由参考点与矩形中心点距离决定, 选出挤出长度值排在前70%的柱体附上不透光材质,剩余附上透光材质
(**: 这是需要考虑全局数据的命题,所以将数据使用Flatten模式转换成线性数据进行处理)

1.SqGrid生成20*20的点阵, 将SqGrid生成的布局点数据连入Rectangle运算器形成矩形阵
2.set one point指定一个参考点,
3.将SqGrid生成的布局点数据及参考点连入Distance运算器
4.将Distance运算器结果作为挤出长度,挤出Rectangle (之后再Flatten!)
******************普通的点的干扰**********************
5.调用Complex Modulus求出所有长度的绝对值
6.调用Sort List运算器(输入端K输入列表1、A输入列表2。运算器会将列表1中的数据按照数值大小排序并输出在参数K中,同时列表2中的元素会跟随列表1中同序号的元素移动)
7.长度绝对值连入输入端K,而输入端A则连入与挤出长度值长度相同的等差数列(起始值为0,等差数为1)
8.Sort List输出端A得到按数据大小排序后的序号列
******************重新排列数据**********************
9.挤出长度的列表元素个数乘以0.3,再输入Split List运算器将序号列一分为二
10.调用List Item将挤出的柱体列一分为二
******************分出长度值前70%和后30%**********************
11.调用Custom Preview分别给两组柱体附上不同颜色即完成
03-09.png
03-10.png
file:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/%60MA%5BL4@~%5B%7DH2KPC1V44OROM.pngfile:///C:/Users/ZSJ/AppData/Local/Temp/enhtmlclip/A38KUMLAHOLA0905A(%N%5D_X.png

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

乌龙 | 设计总监 | 发表于 2016-9-14 16:05:28
楼主,你的贴子,很多的图片都丢失啦!
0 回复

举报

LLitbai · 发表于 2016-9-14 20:35 点评

啊啊?新手发帖不太懂,请问需要怎么解决呢?

帝豪 | 实习生 | 发表于 2016-9-14 16:37:17
有心+1
0 回复

举报

LLitbai | 实习生 | 发表于 2016-9-14 20:35:49
乌龙 发表于 2016-9-14 16:05
楼主,你的贴子,很多的图片都丢失啦!

啊啊?新手发帖不太懂,请问需要怎么解决呢?
0 回复

举报

NicoBear | 实习生 | 发表于 2016-9-15 09:28:14
看了楼主前几个帖子学到了,看来woye要去买本书了,光看视频实在有点带不动(我也是刚接触2个月这样小白)
0 回复

举报

LLitbai · 发表于 2016-9-15 14:22 点评

恩,我之前也看视频,但是感觉光做案例容易忘,看看一些理论好一点

LLitbai | 实习生 | 发表于 2016-9-15 14:22:19
NicoBear 发表于 2016-9-15 09:28
看了楼主前几个帖子学到了,看来woye要去买本书了,光看视频实在有点带不动(我也是刚接触2个月这样小白) ...

恩,我之前也看视频,但是感觉光做案例容易忘,看看一些理论好一点
0 回复

举报

jingxiaoyan | 实习生 | 发表于 2016-9-17 09:16:40
:dizzy::dizzy:
回复

举报

乌龙 | 设计总监 | 发表于 2016-9-18 08:53:22
LLitbai 发表于 2016-9-14 20:35
啊啊?新手发帖不太懂,请问需要怎么解决呢?

啊啊,楼主你只需要重新上传就可以啦
0 回复

举报

wordspace | 实习生 | 发表于 2016-9-22 07:02:53
王大川老师这本书在当当特意买的纸质书,也正在学习中,与楼主共勉。
0 回复

举报

dxrnrlongyang | 实习生 | 发表于 2016-10-9 08:49:02
这个好,但不知道咋搞
0 回复

举报

NIKI小璐 | 实习生 | 发表于 2017-9-20 07:27:41
谢谢。
0 回复

举报

D1D | 实习生 | 发表于 2017-11-8 21:30:05
请问最左边的单独的数值是怎么输入的呢?
0 回复

举报

推荐学习