Grasshopper
2023-01-26 13:58:20 # 建筑学 # 软件

Grasshopper的本质是对数据层级逻辑的理解与处理

gh编程所得物体在rhino中无法编辑,如果需要映射到rhino中,则可以选中gh的模型后鼠标中键或者右键中的bake来拷贝出来,然后就可以被选中编辑了

Grasshopper常见运算器名称总结

Params - 参数

Params中大部分黑色图标都为拾取组件,即对应组件要在rhino中拾取后应用

Geometry - 几何体

  • point:点
  • curve:曲线
  • line:直线
  • vector:向量
  • rectangle:矩形
  • surface:表皮
  • ……
  • 黑色部分组件皆为拾取组件,初始需要在rhino中定义后拾取
  • 失去过后如果rhino中丢失拾取内容,gh中会出现报错

Input - 输入

  • number slider:拉杆、数字滑动条
    • 双击组件可以进一步调节数据
    • R:浮点数运算
    • N:整数运算
    • E:偶数
    • O:奇数
  • boolean toggle:布尔开关
  • MD slider:多维滑块。在默认0到1的区间取二维坐标值,可以双击修改自定义区间。多用于曲面归一化后找曲面上点的位置
  • graph mapper:函数映射器,右键可以选择不同的函数图表类型,用来改变数据趋势、控制曲线等,双击操作面板进入编辑
  • panel:数据显示面板(快捷键//)

Util

  • relay:中继器(双击电池线可快捷生成)
  • Param Viewer:树形数据结构查看器
  • Scribble:标注

Math

domain - 区间范围

  • construct domain:构造一维区间,用两个值组成一个区间。
  • deconstruct domain:分解一维区间,拆分得到区间的大小值。

Sets

gh的核心内容:处理数据

每组数据一一对应,组内数据计算也是一一对应,出现数据不对等情况会重复处理。

线形数据与线形数据计算会将两个列表中的数据一一对应计算。出现数据不对等情况会重复处理

线形数据与树形数据计算会将线形数据与树形数据中的每个列表来对应计算(本质上是因为出现单独的列表和多个列表造成的数据不对等情况而导致重复处理)

树形数据与树形数据计算会将两个树形数据中的每个列表来对应一一计算,出现数据不对等情况会重复处理

panel面板右上角会显示各组数据分支的路径,而表示分支的方法为等级制度 (层次结构) :

{0}(数据 A 列表)

{0;0}(数据 B 列表)

{0;0;0}(数据 C 列表)

{0;0;1}(数据 D 列表)

{0;0;2}(数据 E 列表)

{0;1}(数据 F 列表)

{0;1;0}(数据 G 列表)

{0;1;1}(数据列表 H)

       /==C
/==B ==D
==A \==E
\==F ==G
\==H

# 树形层级结构

如果合并一个带有路径 {0} 的列表、带有 {0;0} 的列表和另一个带有 {0;0;0} 的列表,实际上不会得到一组列表,而是得到的是一棵有三个分支的树。在这种情况下要加入这三个列表到同一个列表中,你要做的就是全部Flatten展平到 {0},然后当它们聚集在一起时,由于它们都有相同的路径 ({0}),数据将挂在同一个分支/列表中,所有分支的数据将被收集,而 {0}就是主干。

list - 线形数据

连接线为实线

列表是用于管理2个及以上的数据,每个数据有对应的编号(索引值),编号从0开始。

数据形式为一组数据

即每个数据都是唯一且不相同的

  • insert item:在指定列表的指定序号位置插入指定的数据(可以同时插入多个)。第三项包裹端为布尔值,决定如果序号打入列表总数量是否循环取值。
  • list item:取出列表中指定序列号(索引)的数据,第三项包裹端为布尔值,决定当输入的索引序列号大于列表中最大序列号时,是否循环取值
  • reverse list:使列表中的数据反向排列,在列表的右键中的反转是同样的作用
  • list length:输出列表长度值
  • shift list:按照设定的偏移值偏移列表中的数值,第三项包裹输入的布尔值决定是删除偏移的数据还是移动到最后
  • sort list: 将列表的数据按从小到大的顺序重新排列。很常用的运算器,比如我想将点按照高度排序,或者根据线长短进行排序等等。配合reverse list可实现倒序排列。
  • partition list:将列表按照指定的数量大小分组
  • weave:数据编织,根据编织模式设定的规则(0和1构成的数列),依次将数据流0和数据流1合并成一组,可以增加多组自定义数据流接口

Sequence - 序列集合

  • series:等差数列,根据设定初始值(默认为0)、步长(默认为1)、个数(默认为10),生成一组等差数列。默认生成的数列为0到9十个数字
  • cull index:删除指定序号位置的数据,第三项包裹输入布尔值,控制当序号大于列表总数时是否循环删除。
  • cull pattern: 剔除模式,与数据分流类似,通过剔除模式输入的布尔值列表删除输入列表的数据,不同的是这里false对应的数据直接被删除
  • duplicate data:按设定的次数复制数据,第三项的排序为布尔值,控制列表内容是整体循环复制还是逐个按次数复制
  • random reduce:根据设定的数量随机删除数据,随机种子(数字)可以切换不同的随机删除方式。
  • repeat data:循环复制列表数据,并根据设定的列表长度输出一组数据。比如数据输入123,长度为7,则输出1231231七个数字

set

  • create set:合并同类项,合并所有列表相同的数据,并返回相同数据的序号。注意列表端输入的数据类型可以是数字、矢量、布尔值等

tree - 树形数据

连接线为虚线

数据形式为多组数据

树形数据用于组织两个或两个以上的列表,每个列表的编号规则同列表,也是从0开始。

树形数据中的每个列表是一个树枝,等同于单个数据是一个列表中的元素。

树形数据中的每个树枝有一个路径,用于指定单个列表在树形数据中的位置,任何一个数都可以通过数据元素所在的树枝路径检索出来。

  • Clean Tree:根据设定的布尔值来决定是否删除树结构中的空项(null)、无效项(invalid)或空分支
  • split tree:分割数据结构,将指定路径名称的数据支和其他数据支分离出来。
  • graft tree:将现有数据结构中的每个数据再单独成组,会增加一级数据结构
  • flatten tree:拍平数据结构,去掉所有的数据结构,把数据放在一个组内
  • simplify tree:简化数据结构,把冗余的数据结构路径名称简化
  • flip matrix:翻转数据结构。把原来的3大组,每组4个数据,翻转成4大组,每组3个数据

Surface

analysis

  • m^2^ :一般多用于寻找形状的中心点

Intersect

shape

  • Region Intersection:计算两条曲线的交集
  • Region Difference: 计算曲线A减去与曲线B的重合部分
  • Region Union: 计算两条曲线的并集

Grasshopper插件运算器名称总结

Kangaroo

kangaroo运算前提为网格面,rhino里的Nurbs曲面要先用网格工具里的转化曲面为网格工具转换为网格面再进行操作(高级设置中密度参考参数:除最大边缘长度设置为20以外其余都设置为0,通过最大边缘长度来控制密度)

工作流程:创建几何体,并得到要作用的对象(点、直线、网格等),对点或直线施加对应的作用力,将物体接入KangarooPhysics工具来模拟重力、弹力、风力、压力、磁力、碰撞力等

Grasshopper便捷玩法

  • 点击上方菜单栏displaydraw icons将电池中的名称改为图标更方便识别
  • 初学者可勾选菜单栏displaydraw full name来显示运算的输入、出端的完整名称
  • 运算器工作栏白色状态下为显示,灰色状态下为隐藏

热键篇

  • number slider:双击鼠标直接输入数字可以新建Slider,但不能精确控制Slider的值域

    • 双击鼠标输入如 1<5<12,可以精确控制值域和当前值
    • 更懒的方法,双击鼠标输入如 1..12,也可以创建 1-12值域的Slider
    • 关于精确度:根据输入的数值确定,如输入12.0精确到0.1位,输入12.000精确到0.001位
  • Panel:双击鼠标输入 “// ”可以快速创建Panel

    • 双击鼠标输入 “//内容 ”可以快速创建Panel并输入内容(数字/文字/点/向量 等)
  • Scribble 标注:命令行输入 “~ 内容”可以快速创建Scribble标注

  • 鼠标中键

    • Zoom 缩放Rhino视窗至选取物件

    • Navigate 快速定位GH画布

      • 通过鼠标中键弹出面板,选择Navigate可弹出GH画布缩略图,拖动其中视窗框可以快速移动GH视窗
    • Find 搜索定位电池

      • 通过鼠标中间面板选择Find可以快速搜索并定位相关名称的电池
  • 鼠标右键

    • Eexpression键入表达式可快速处理数据
  • 画布

    • Alt + 鼠标 拖动画布 电池向右整体推动分区

      • 使用场景:当想要在已有电池组中间再插入电池时,可以用 Alt + 鼠标 将电池组分隔整体往右移动
    • Alt + 鼠标拖动画布 + Alt 电池向下整体推动分区

    • Shift + Ctrl + V 粘贴倒屏幕中间(超适合远距离复制粘贴)

  • 电池&线

    • Ctrl+Q 快速切换 隐藏/显示 选中的电池内容
    • Ctrl+E 快速切换 停用/启用 选中的电池(注意与显示隐藏的区别)
    • 左键拖拽 + Alt 复制电池 (注意要先拖拽再按Alt)
    • 按住Shift键可以增加多个电池输入端的连线,有些数据要注意连接的先后顺序;按住Ctrl键则是减少电池的连接线,也可以右键菜单里断开指定的连接线
    • Ctrl + Shift + 鼠标拖拽线线组直接换输入端
    • 同时按住Ctrl+Alt键+工作区的运算器 这个时候GH就会自动显示出运算器在工具列中的位置
    • Ctrl + ← / → 选择连线上游/下游的电池(配合shift 实现加选电池)
    • 框选所需要的电池在框选栏会出现小方向键,点击小方向键即可对齐
  • Shift + Ctrl + Q 可框选代码和 Rhino (犀牛) 视窗的高分辨率截图

    • 多用在截取代码以及Rhino视窗,可以直接截取高清的GH画布,弹出的窗体中还可选择以相框形式插入Rhino视窗 或 框出关键电池组,以及修剪截图功能
  • 中继器 - relay
    • grasshopper更新到了1.0版本,可以使用官方中继器:relay
    • 在任意连线上双击,即可创建一个中继器
    • 这个东西的主要用途就是把一根线分成好多根,把好多根线合并成一根

电池篇

Loft 自动对齐

在Rhino里Loft(放样),根据点的顺序和点的线的端头确定放样方向。而在Grasshopper里经常出现线的方向不同而Loft出扭曲的面,有一个快速省力的技巧是,Loft电池的Options (O端)右键打开放样属性,勾选Align Sections,就能自动放样线的对齐端头,避免放出扭曲的面,不用一个个选出来翻转

Flip Curve 参考线

Flip Curve 电池的第二个输入端 Guide其实是可以输入参考曲线。如果G端留空,默认所有线都翻转

但是如果输入G端参考线,则所有线按照参考线的方向排列(相当于整理方向)

Split Tree

Split Tree,主要用于 筛选/切分 树型数据

输入端:

  • Data : 需要被处理的树型数据

  • Masks :数据被 筛选/切分 的规则

    • 规则(Masks)输入端的数据结构格式需要和原数据的格式一致:

输出端:

  • Positive :符合筛选规则的数据出口

  • Negative : 不符合筛选规则的数据出口

最基本的规则:

  • 以大括号 { } 构造,分号 ; 区分不同层级的组号
  • 直接输入组号,筛选出组,所见即所得

进阶玩法:

  • { 0 ; ? } = 筛选出所有以 0 开头的分支
  • { 0 ; ( 0,3 )} = 筛选出所有以 0 开头,以 0 或 3 结尾的分支
  • { 0 ; ( 0 to 3 )} = 筛选出所有以 0 开头,以 0-3 数字结尾的分支
  • 相应地,这些规则符号可以运用在任何一个分支层级:
    • { 0 ; ? ; 0 } = 筛选出所有以 0 开头和结尾的分支
    • { 0 ; ( 0,3 ) ; 0 } = 筛选出所有以 0 开头,中间 0 或 3 ,并以 0 结尾的分支
    • { 0 ; ( 0 to 3 ) ; 0} = 筛选出所有以 0 开头,中间为 0-3 数字,并以 0 结尾的分支

上述例子则是通过规则符号配合Split Tree可用于筛选树形数据的数据

可用的规则符号:

  • ? = 任意的单个整数
  • * = 任意数量的整数
  • 3 = 特定的整数(这里以3为例)
  • !3 = 除特定整数外的所有整数(这里以“非3”的数为例)
  • ( 2, 4, 5 ) = 组内的任一整数(这里以 2、4、5为例)
  • ! ( 2, 4, 5 ) = 除组内任一整数的其他所有整数(这里以“非2、4、5”的数为例)
  • ( 2 to 10 ) = 区间内的所有整数(这里以2到10区间为例)(包含 2 和 10)
  • ! ( 2 to 10 ) = 区间外的所有整数(这里以 不在2到10区间 为例)(不包含 2 和 10 )
  • ( 0 , 2 , … ) = 无限序列中的任何整数(这里以 “偶数” 为例)
  • ! ( 2 , 4 , … ) = 不属于无限序列中的任何整数(这里以 “0以及其他奇数” 为例)
  • ( 0 , 2 , … , 30 ) = 有限序列中的任何整数(这里以 0到30中的所有偶数 为例)
  • ! ( 2 , 4 , … , 30 ) = 不属于有限序列中的任何整数(这里以 “0 和大于30的偶数,以及所有奇数“ 为例)

除上面的规则符号外,树型数据选择规则还可以通过中括号 [ ] 输入索引值(index)筛选出组中的项值(item):

  • { 0;(0,1)}[3]:即为末尾组号为0或1的分支中索引值为3的 item
  • 同时,[ ] 中括号内的 item 筛选也可以赋予规则符号,于是画风就会变得花里胡哨的
    • {!(2,4,…);!(1,2);(0 to2)}[!(2,4,5)]:筛选开头为0或奇数,中间为非1或2,结尾为0到2区间的所有分支 中的 索引值不为2、4、5的 item ……….

此外,可以用布尔运算组合多个规则。。。。。比如:

  • { * }[ ( 0 , 1 ) or ( 3 , 4 , 5 ) ] = 筛选出所有分支的索引值为 0、1、3、4、5 的 item

所以也就可以根据自己的需要组合出千千万万种复杂到亲妈都认不得的筛选规则:

  • {!(2,4,…)or(4,6);!(1,2);(0 to2)or(4 to 6)}[(0,1) or (4 to 6)]:筛选开头为0或4或6或奇数,中间为非1或2,结尾为0到2区间或4到6区间的所有分支 中的索引值为0或1或4到6区间的所有 item

Grasshopper扩展插件

扩展插件的安装

  • gha格式文件:进入gh页面 - file - Special Folders - Components Folder,将所需要的插件包粘贴进去(部分插件需要下载安装)

  • ghuser格式文件:有一些插件,例如honeybee插件,包含了gha和ghuser两种格式的文件,首先将绿色的gha格式文件还是放入上面讲的components folder,然后将ghuser格式文件放入下面的文件夹:file - Special Folders - User Object Folder

常用扩展的简介

GH的插件大都是按照动物名字来命名的,包括Grasshopper自身就是蝗虫的意思,还有承载它运行的Rhino,意为犀牛

  • Kangaroo(袋鼠)

    它是非常优秀的一款力学模拟插件。简单地说是用来进行力学仿真,而不是受力分析。比如推力、重力、共面力、风等等。据了解,最常用的功能是在曲面上均布点和让四点共面。当然,它的作用远远不止这些,可以在Kangaroo模拟行走都市,还有水流、星空,几乎任何与宏观力学有关的东西都可以。从Rhino6开始就已经将其内置与GH中,可以直接使用

  • WeaveBird(编制鸟)

    GH中最常用的网格编辑工具,包含细分、网格开洞、加厚等常用操作。可以对mesh进行细分、挖洞、加厚等等。

  • LunchBox(便当盒)

    功能如其名,一个便当盒,就是便利,没啥大的创新。创建表皮的利器,有矩形分割、三角形分割、菱形分割、六边形分割等网格划分形式,还可以翻转曲面的UV线。可直接创建如莫比乌斯环等独特造型,还蛮方便的一点是与Excel表进行联动。

  • Karamba

    个人觉得这个插件似乎是挺专业的有限元分析插件,可以把点和直线当作节点和梁柱输入,它就会算出每个点的受力情况。但是有个问题,就是面对复杂的模型它是要收费的。

  • Geco

    该插件负责将GH模型导入Ecotect中进行计算,并返回,结果显示在Rhino里。这些操作都是基于Mesh处理的,大家操作之前要理解Mesh。当然啦,它并不涵盖所有Ecotect的功能,只有两个主要的计算,一个是SolarCalculate,另一个是LightCalculate。

  • KuKa

    机器人插件,操纵德国KuKa,这个机器人还可以画肖像,还可以写字,挺好玩的。

  • Mosquito(蚊子)

    这个插件可以提取建筑、道路、地图数据、图片、媒体等信息。也可以一键模拟雨水径流分析,还可以提取电脑的音频文件做有趣的声音可视化效果。

  • Human

    Human主要与Rhino模型进行交互,可以提取模型材质、文字、图层、线型等信息,是最常用的文件和图形编辑器,有助于方案的可视化表达。它扩展Grasshopper创建和引用包括灯光、块和文本对象的几何图形的属性,比如线宽、颜色、材质、灯光等。它还可以访问Rhino文档的信息,在Grasshopper中读取Rhino图形的属性,比如分组,分层等等。

  • HoopSnake 、Anemone

    这两个工具的功能都是循环。循环可以完成迭代和递归两种控制结构。当然啦,这不重要,只要记得是循环即可。大家还记得分形吗?分形就是典型的不断循环。比如下图中的树枝不断地细分,但是细分逻辑都是相同的。Anemone这个工具是后出的,逻辑结构更清晰化,当然HoopSnake差别不大,有的人习惯了用Hoop。

  • Minimal Surface

    极小曲面插件

  • GHowl

    这是一个连接grasshopper和processing的关键插件。可以将processing中的代码拾取到grasshopper,根据代码变化自动生成模型。当然,它还可以跟XML、谷歌地图文件等多种格式文件联动,还有很多物理设备也可以进行联通,比如你的手机。

  • FabTools

    FabTools简称FT,FT是一个小工具,主要优点就是可以进行快速标注,而且可以bake很多属性。这在幕墙的编号和标注中起到了不少作用。小编在《丽泽SOHOI》里就有提到对幕墙的标注。可以快速标注和bake很多属性,主要是作用是模型信息化

  • Elk

    它可以通过在地图上截图,然后生成这个地方的CAD图。但是要注意哦,Elk支持的地图并不是谷歌地图,网址为(http://www.openstreetmap.org/),相对来说,大城市的还是 比较健全的,这一点以后还是需要不断完善

  • Galapagos、Octopus

    接下来介绍两个用来优化和筛选结果的工具。尤其是Galapagos,亲测非常有效!这个工具里面涉及到两种算法:遗传算法和退火算法。,Octpous又有什么不一样的呢?区别在于,前者只能优化一个参数,比如窗地比最小,而后者可以同时优化多个参数,比如在窗地比最小的基础上,还要体型系数最小,并且要保证容积率最低

  • BIM GeomGym IFC

    目前BIM大火,但是软件之间的格式兼容却不尽人意。最常见的格式就是IFC,这个插件就是实现互换格式的,在ArchiCAD、Revit、Bently、Tekla之间。不过,该插件是收费滴

  • Starling

    在处理网格的时候就能显现这个插件的厉害了。原理就是网格的拓补映射

  • Chop Chop

    Chop Chop通过点击删除电池连线,免去按足Ctrl再拖线删除之苦。右键弹出菜单可以选择使用Ctrl+鼠标左键或鼠标后退键,双击切换功能开启或关闭。

  • Bifocals

    这是由marcsyp开发的小插件,以气泡的方式在每一个电池的上方显示其名称,能帮助快速熟悉电池组的名称及其功能,对grasshopper新手,尤其是在教学中有很大帮助,置入Bifocals电池即可使用

  • Cocoon

    使用Marching Cubes算法将等值面转换为多边形网格,功能类似千足虫插件

  • Culebra

    可模拟集群行为,用于可视化与数据的交互

  • hummingbird(蜂鸟)

    主要功能是与Revit进行文件交互

  • nudibranch

    该插件可实现不同的粒子运动,同时记录粒子在吸引子定义的向量场中移动的轨迹,这些轨迹可以应用到动画模拟中。

  • Octopus

    根据遗传算法来优化和筛选结果,相比于GH自带的遗传算法运算器,该插件可同时优化多个参数,效率更高。

  • physarealm

    该插件的算法类似蚁群算法,通过模拟细菌在搜索事物过程中延伸卷须,找寻获得食物最有效的路径。它是一种类似于蚁群算法的stigmergy算法。Physarum polycephalum,字面意思是“多头粘液”,是一种粘液霉菌,栖息在阴凉、潮湿的区域,例如腐烂的树叶和原木。当在两个点有燕麦的迷宫中生长时,多头假单胞菌会从迷宫中的任何地方缩回,除了连接两个食物来源的最短路线。这个插件正是模拟这种生物学行为。它可以做一些非常有趣的设计或建筑

  • Rabbit

    可以直接在GH中直接构建元胞自动机和L-系统,具有模拟复杂系统时空演化过程的能力。

  • shortestwalk

    该插件只包含一个运算器,其作用是构建两点之间的最短路径。

  • starling

    网格处理工具,可对物体的网格结构进行重新拓扑映射。

  • Millipede

    主要用于结构分析与优化,可对框架结构与壳结构进行快速的线性与弹性分析。还可通过拓扑优化的方法来生成结构体,并以可视化的形式呈现结果。

  • IntraLattice

    用于在设计空间内生成晶格单元组合体 ,为结构的设计和优化提供了多种可能性。

  • Chromodoris

    其主要功能是可以非常快的进行体素采样、创建iso曲面、网格圆滑、网格分析。该插件创建网格的原理与千足虫插件类似,即通过矢量场来构建等值面。

  • Ladybug & Honeybee

    这两个插件可将气象数据加工为可视化的环境分析图形,并完成对日照、环境、人体舒适度等因素的可视化分析。

  • Quelea

    Quelea插件可以通过对自然界生物行为的分析,模拟鱼群、鸟群等的运动行为,进一步模拟建筑物中人流的疏散,从而达到优化建筑空间的目的

    Quelea插件与Physarealm插件的使用方法相似,都需要先确定粒子发射器以及模拟的环境,并由主模拟器驱动整个程序运行。

  • Bubalus_GH

    解决Rhino模型中添加代理树、车、人等模型的繁琐步骤。

  • Bison

    Bison是一款景观建筑插件。它具有地形网格创建、分析、编辑和注释的工具。有很全面的分析系统。

  • Sunflower

    简单好用的日照分析插件,上手快运行速度快,非常推荐

  • Vipers

    国产插件,好的一点是他的名称说明全部为中文,算是GH运算器的Plus版。

  • Pufferfish

    这个插件是一套专注于补间、混合、变形、平均、转换和插值的组件 - 本质上是形状变化

  • Culebra

    这个插件是一个 2D|3D 多对象行为库,专注于自定义可视化、数据和性能特征的混合系统交互。它包含用于创建动态多代理交互的对象和行为的集合。模拟对象的集群行为。动漫,游戏行业用的比较多

  • Shortest Walk Gh

    计算最短路径!

  • SnappingGecko

    挺喜欢的一个插件!!!简直是强迫症患者的福音,这个插件可以在移动的时候标示并吸附到对齐参考线,吸附范围和力度也可以根据需要自行调节。电池再多也不用怕电池组混乱成一团,再也不用担心GH排版乱啦!

  • SHIBAINU

    和Lunchbox很像,只不过Lunchbox是创建一些较规则的图案,而SHIBANU是创建日本传统图案。这个插件也很贴心的将输出的面按照不同的规格分开,省了筛选边缘的操作。做做铺装,立面还是杠杠滴

  • EvoMass

    这个插件可以用来生成各种各样的建筑体块,和做一些分析。在前期体块推敲时很有用!也可以用来做一些分析图,形体生成等等。用法也很简单,三种不同的体块组合形式,点击Setup设置参数,也可以随机调整,完成之后Bake出来需要的部分就好。设置界面可以调成中文