概述
//
>>>>>>>>>> 更新至 7.5(热键第二章) <<<<<<<<<<<
用了很久很久的Grasshopper,就让我的首答也奉献给gh吧~
先来挖个坑,回头有空了继续填。
相信Ladybug、Kangaroo、Elk之类的主流的插件已经很多人讲过。但既然是奇技淫巧,便应当小而精巧。
因此想要以自己的经验给大家整理一些非常好用但是比较小众的插件和捷径。教大家用最懒的方法写出整齐易读的Script。
/ 热键篇 //
Slider
· 所有人都知道的:双击鼠标直接输入数字可以新建Slider,但不能精确控制Slider的值域
·有些人知道的:双击鼠标输入如 1<5<12,可以精确控制值域和当前值
· 很少人知道的:更懒的方法,双击鼠标输入如 1..12,也可以创建 1-12值域的Slider
· 关于精确度:根据输入的数值确定,如输入12.0精确到0.1位,输入12.000精确到0.001位
Panel
Panel 应该是gh中最常用最直观的一个运算器了,无论在输入数据或检查数据时都非常非常有用。多用Panel 检查数据类型或结构都可以快速debug事半功倍。
· 双击鼠标输入 “// ”可以快速创建Panel
· 双击鼠标输入 “//内容 ”可以快速创建Panel并输入内容(数字/文字/点/向量 等)
Scribble 标注
用流行话说 Scribble 就是一个年薪二十万程序员和年薪四十万程序员的差距之一
Scribble标注能让别人(放心吧没人看你的,主要是自己)更容易看懂写的代码。
· 双击鼠标输入 “~ 内容”可以快速创建Scribble标注
Ctrl+Q 快速切换 隐藏/显示 选中的电池内容
Ctrl+E 快速切换 停用/启用 选中的电池
/ 插件篇 //
ChopChopChopChopwww.food4rhino.com
首先当然是隆重安利我自己写的一个小插件了!^^是我写完一个很大很大的Script之后,被成千上万次拖动鼠标连线删线折磨鞭挞成鼠标手之后写的一个小插件。
ChopChop: 通过点击删除电池连线,免去按住Ctrl再拖线删除之苦。右键弹出菜单可以选择使用 Ctrl+鼠标左键 或 鼠标后退键。 双击切换功能开启或关闭。
BifocalsBifocalswww.food4rhino.com
Bifocals: 由marcsyp开发的小插件,以气泡的方式在每一个电池的上方显示其名称,能帮助快速熟悉电池组的名称及其功能,对gh新手尤其在教学中有很大帮助。
SnappingGeckoSnappingGeckowww.food4rhino.com
SnappingGecko: 由weArk开发的插件,强迫症患者福音。这个插件可以像用AI/ID一样在移动的时候标示并吸附到对齐参考线,吸附范围和力度也可以根据需要自行调节。电池再多也不用怕电池组混乱成一团。
05.31更新 !//
OpenNestOpenNestwww.food4rhino.com
OpenNest: 建筑学生激光切割排版神器神器神器(重要事情说三遍)。能自动解算最节省空间的排版方式。主要功能:拍平空间组件,展平曲面,生成/迭代解算最优排版,自动标号,曲线矢量文字转换(适合激光切割)等。
ps:用官网原生的Example文件加以修改就可以上手
排版迭代解算:(ps:OpenNest有迭代解算和一步解算两种方式。迭代解算可以通过不断迭代覆盖寻找最优的解,比一步到位的解算器花费更长的时间,但是更加节省材料)
间距控制(还可控制容差值,旋转等)(ps: 这个功能方便适配国内配置参差不齐的激光切割机,如果你使用的激光机能烧掉一条双向八车道,请适当调大间距:)pps: 也可以通过offset 板子尺寸调节留白边距):
PALETTEhttps://www.food4rhino.com/app/palettewww.food4rhino.com
今天有些忙讲个还挺有趣的小插件
Palette: 作者ekimroyrp,与Pufferfish(之后会讲)同一作者,可以修改Grasshopper的各种UI界面风格,包括各种属性的线和电池的填充颜色、边框颜色等等等等。(是我见过最长的单个电池,一个屏幕放不下。看清字看不全电池,看全电池看不清字这么长)
超长夜用的电池:
电池无敌爆炸长,用法却很简单,全都是Color Color Color:
至于我个人对这个插件的用法就相当精妙了,就是截图给别人的时候可以把爆红爆黄的电池和电线调成正常运行的颜色(手动笑脸:)All work perfectly.
比如,使用前:
使用后:
颇费!!
6.9更新 ///
Magnifier
Magnifierwww.food4rhino.com
我写的另外一个小插件,中文名叫放大镜。一般当GH的画布缩小之后,电池的图标文字会被隐藏,对长距离的连线十分不方便,要不只能摁着左键拖右键边滚滚轮放大缩小到右手抽风,要不只能靠“精湛”的gh技巧记着输入输出端口的位置。这个插件当识别到画布缩小时候,只要鼠标指着电池的输入或输出端就会弹出这个端口的 电池图标、参数图标和参数名字。
知乎视频www.zhihu.com
使用者可以根据需要设定图标的大小,文字的大小和颜色等参数(但建议维持默认)
Human
Humanwww.food4rhino.com
Human是由andheum写的插件,主要辅助在gh和rhino的交互和界面上。Human是由很多个插件组成的工具集,我这里挑出几个我比较常用的功能讲讲。
Custom Preview Lightweight
可以在Rhino里预览线条(你说这原生的gh也可以啊)对,但是它的强大之处在于可以自定义线条的粗细、颜色。这就提供了很多玩法了。
比如:
可以结合Rhino6新版gh里的 Make2D功能和 Dash 虚线功能,简单几个电池做一套全自动线稿图导出生产线,替代掉原来的 Grasshopper - Bake - Rhino - Intersect 求交线 - Make2D - Export Selection - Dwg - Illustrator - 分图层调线粗 - 复制 - Photoshop 的繁琐流程。
当然也可以开动小脑瓜发挥聪明才智配上其他插件功能实现自动导出、自动打印成图等等等等,一下子解决繁琐的工作流。
这不就快乐起来了吗!!?
再比如:
用这个功能实现数据实时可视化,加粗加亮实时监控超出材料极限的位置。
又或者:
监视一些不易察觉的碰撞点位(比如在机械臂模拟中)(这些如果大家有兴趣再细讲吧)
Render Text to Screen
Render Text to Screen功能可以在屏幕上实时显示文字内容,也是在数据实时监控中(特别是优化过程)(或者gh导动画的过程中)十分有用。可以立即在屏幕上显示数据方便筛选。而在导动画的过程中也可以摆出数据,方便对比。
比如:
实时数据监控和筛选:
又比如:
gh动画导出的数据显示对比(左上角)
Dynamic Geometry Pipeline
动态拾取Rhino里的物体进gh,实时更新。可以过滤需要拾取的图层名称、物件类型(曲线,多重曲面,Mesh网格,甚至灯光文字等)、和物件名称。
这样只要Rhino里有更新就会自动拾取进gh里进行进一步操作,免去了每次修改都要拾取然后点点点物件。深一层说其实某种程度上打破了rhino和gh的隔阂,进一步提升gh逻辑工作流的流畅性。
Bake Geometry 和 CreateAttributes
Bake Geometry和CreateAttributes这两个功能需要一起介绍。如果说上面介绍的pipeline是从Rhino到gh的隔阂,那这两个功能就是打破gh到rhino的隔阂。
Bake Geometry的Bake?端可以通过boolean值(True和False)控制是否bake到rhino中。
而Attributes(属性)端可以控制bake出rhino物体的包括 名称,图层,颜色,材质,线型,可见性等属性,甚至还可以通过UserData Keys & Values端口自建属性项(比如我说它“好吃度”,值是8)等等(扯远了)
更牛的是这是grasshopper,可以通过列表分别控制不同物件的不同属性。
举个栗子:
我有两个物件,分别命名叫 Box1 Box2, 它们要分别在 Layer1 和 Layer2 图层,分别要为黑色和蓝色 :)
想象有十万个各自属性不相同的定制部件,gh只要三张控制列表,而用手改的话。。。。。。
6.17更新 //
深夜快更,几个小技巧:
Loft 自动对齐
我们知道在Rhino里Loft(放样),根据你点的顺序和点的线的端头确定放样方向。而在Grasshopper里经常出现线的方向不同而Loft出扭曲的面,比如:
有一个快速省力的技巧是,Loft电池的Options (O端)右键打开放样属性,勾选Align Sections,就能自动放样线的对齐端头,避免放出扭曲的面,不用一个个选出来翻转。
其他形状也同样适用:
Align Section 前:
Align Section 后:
Flip Curve 参考线
不知道这个是不是很多人都知道,不过我自己知道还比较晚的
Flip Curve 电池的第二个输入端 Guide其实是可以输入参考曲线。如果G端留空,默认所有线都翻转,比如:
但是如果输入G端参考线,则所有线按照参考线的方向排列(相当于整理方向),比如这里给第一条曲线(序号0):
所有线段按0号曲线方向整理
隐式转换
这个已经有大神提到过了,刚刚写上面的电池时候想到,补充一些吧:
比如:
直线可以直接转换成起点到终点的向量(曲线不可以!)
连Number求出长度:
Surface曲面直接连Curve曲线得出边缘线:
Surface / Brep 直接连Mesh转换为网格(但是不如用Brep to Mesh转好):
甚至封闭的平面多重线可以直接求Boundary Srf:
等等等等,GH 在Rhino6 版本中已经比较智能,还有很多很多隐式转换各路大神已经提到过,就不一一叙述了。
Param Viewer 求 Branch Name(组号?)
Param Viewer 固然是非常强大的数据观察工具,但是还有一个作用可能比较少人知道是可以直接得到Branch Name,也就是组号(组名)
这个得出的组号可以很方便被之后的数据处理电池使用,比如 Split Tree:
今天就先更到这好了^^
6.19更新 //
今天想来更一个用 Grasshopper 导动画的方法:
知乎视频www.zhihu.com
节选一小段示例说明gh能导什么动画。这个动画全部的都是gh导的然后用Pr拼起来了,并不用渲染的。
本质论章:
** Grasshopper 导动画的根本方法是 : Slider - 右键 - Animate...
几个导出参数:名字 : 大括号前的名字可以随便命名(但是务必记得导完改名!!!不然会覆盖之前导出的),大括号里 是帧数,自己会变化基本不用动
视口 : 取Rhino里的哪个视口导出
分辨率 : 就是导出图片序列的分辨率了
帧数 : 意思是,把这个Slider分成多少帧导出 (比如我这里是 0.00 - 1.00 如果我设定是 100 帧,那每一帧 Slider 就自动跳 0.01;如果我设定为 50 帧,那每一帧 Slider 就跳 0.02;如果我设定为 2 帧,那一帧 Slider 就需要跳 0.5 了 ; 以此类推。。) PS: 一般每秒大概是25帧或者30帧,可以通过这个估算时间或者要导的帧类推。。) PS: 一般每秒大概是25帧或者30帧,可以通过这个估算时间或者要导的帧数。PPS:Slider的精度可以根据帧数适当调大些,如果是 0-1 那分一万帧也只有 0 和 1两个数了。。。
Slider 动画的产出本质就是: 自动拖动 Slider 并截屏出一序列图片(帧)!
按导出之后的结果是这样的。可以通过Pr导入序列直接成动画,这个一会儿讲
好的,本质讲完,奇技淫巧来了:
插件章:
一个控制镜头的插件:
HORSTER CAMERA CONTROL FOR GRASSHOPPER
https://www.food4rhino.com/app/horster-camera-control-grasshopperwww.food4rhino.com
通过Grasshopper控制Rhino视口的:相机位置(点)、目标点(点)、上方向(向量)等,控制导动画时镜头变化。
比如,控制镜头位置,但焦点不变:
控制焦点位置但镜头位置不变:
控制镜头“上方向”(旋转):
镜头控制具体在动效章再详细讲述。
那么要如何加特效呢?
(老年表情包)
动效章:
通过一个 Slider + 运算法则 / 电池 完成所有特效控制!!!
个人习惯用 0.00 - 1.00 的 Slider 作为总控制,其他部分控制通过这个 Slider 的 相乘值,相除值,Remap 值,Graph Mapper 值等控制运动。
比如,要做一条曲线从 0 - 20 变长:
复杂一些的,利用Remap将 0-1 Slider 的数值映射到对应区间,配合 Split List 做示例视频里逐渐出现的效果:
又或者再震荡一下,来些马赛克特效:
甚至用几个简单粗暴的 if 语句做出老年中二霓虹灯闪烁效果(当然用gh大小于或者区间判断电池加Stream Gate也可以):
发挥想象力,这不就骚气起来了吗!???
至于镜头移动主要靠这个电池:
画线确定轨迹,然后通过Evaluate Curve电池 t 端接入 Slider 得到 当前帧在轨迹线上位置的点,从而控制: 相机位置、 目标点位置
比如轨迹是个圆:
甚至可以用Graph Mapper接入贝塞尔曲线来映射数值,达到 缓进缓出 的效果:
更复杂一点比如示例视频中的 透视 - 顶视图切换 :
效果章:
GH的动画不用渲染,但是可以通过 Dot Display 预览点物件,通过Custom Preview预览 物体(如Brep, Surface, Mesh等),通过Custom Preview Lineweights(上文讲过在Human插件中的电池)预览 曲线 等等,不同组合创造丰富效果。
当然还有其他很多提供预览的插件电池可以慢慢摸索 ~
剩下需要的就是 —— 脑洞!
6.20更新 //
//
Grasshopper 的奇技淫巧(进阶版)—— 巧用Split Tree 与树型数据选择规则
今天讲一下Split Tree这个神奇的电池,树型数据筛选的利器,以及其背后运作的“树型数据选择规则”逻辑。
在学Grasshopper的过程中对树型数据的理解可以算是gh入门的瓶颈,当对树型数据的原理比较透彻地理解之后,你的gh水平可以算入门了;而对树型数据的处理则是从跨入中高阶用户的门槛。
今天的更新应该算稍稍有难度的一集,在聊树型数据选择规则的部分,需要你对树型数据有一些理解。
(瞎聊两句)为什么要写进阶版?
我其实也挺纠结的,进阶版相对受众或者感兴趣的人可能相对较少。但是在国内参数圈普遍都在吹嘘Ladybug、Kangaroo、表皮干扰一键直通名校的浮躁的风气下,或许需要注入点新的东西 —— 触及参数化本质的东西 —— 数据。
因此想借着进阶版对奇技淫巧系列进行一个小拔高,看看能否带来些许改变。
来吧!
难度 1 星部分 /
Split Tree
这个是今天聊的主角,GH的原生电池 —— Split Tree,主要用于 筛选/切分 树型数据
输入端:
** Data : 需要被处理的树型数据
** Masks :数据被 筛选/切分 的规则
输出端:
** Positive :符合筛选规则的数据出口
** Negative : 不符合筛选规则的数据出口
比如:
规则(Masks)输入端的数据结构格式需要和原数据的格式一致:
最基本的规则:
以大括号 {} 构造,分号 ; 区分不同层级的组号
直接输入组号,筛选出组,所见即所得
难度 2 星部分 /
那么,如果当数据更加复杂,变成了这样:
而我的要求也变得更加骚气,比如筛选出所有 第二层组号为2的数据 ??
{ 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 结尾的分支
以上的操作方式,都是因为规则符号的引入
可用的规则符号:
? = 任意的单个整数
* = 任意数量的整数
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的偶数,以及所有奇数“ 为例)
因此,玩法就变得多种多样了:
0开头的所有分支:
中间为非1或2,结尾为0的所有分支:
开头为0或奇数,中间为非1或2,结尾为0到2区间的所有分支:
希望还没晕 ^^
难度 3 星部分 /
除上面的规则符号外,树型数据选择规则还可以通过中括号 [] 筛选出组中的项值(item)
比如,末尾组号不为0或1的分支中 序号为3的 item:
但是在实际使用中发现,加上 item 筛选之后会出现空值null没有被筛选掉,可能是个小bug,因此我加上了一个 Clean Tree 将所有null空值 和所有 空分支清除
同时,[ ] 中括号内的 item 筛选也可以赋予规则符号,于是画风就会变得花里胡哨的。
比如,筛选开头为0或奇数,中间为非1或2,结尾为0到2区间的所有分支 中的 序号不为2、4、5的 item .......... :
想了想,还是补充一张图拆解一下讲讲人话:
然而,上限更高的来了......
可以用布尔运算组合多个规则,比如:
{ * }[ ( 0 , 1 ) or ( 3 , 4 , 5 ) ] = 筛选出所有分支的序号 0、1、3、4、5 的 item
所以也就可以根据自己的需要组合出千千万万种复杂到妈妈都认不得的筛选规则:
来,王炸!!
比如,筛选开头为0或4或6或奇数,中间为非1或2,结尾为0到2区间或4到6区间的所有分支 中的;序号为0或1或4到6区间的所有 item ................................................................ :
以上;
溜了溜了。。。
7.5更新 //
热键(二)
Ctrl + M 显示/关闭网格线
鼠标中键 – Zoom缩放Rhino视窗至选取物件
功能类似与Rhino里的“ZS”,将选取物件缩放至适配Rhino视窗,能重新集中目标点,在物件繁多的建模中非常非常有用
鼠标中键 – Navigate快速定位GH画布
通过鼠标中键弹出面板,选择Navigate可弹出GH画布缩略图,拖动其中视窗框可以快速移动GH视窗
鼠标中键 – Find 搜索定位电池
通过鼠标中间面板选择Find可以快速搜索并定位相关名称的电池
Zoom Selected 缩放画布至选取电池
和上文提到的Zoom Preview以及Rhino中的“ZS”有些类似,但Zoom Selected功能缩放的是GH画布,在电池很多的时候能救下你的鼠标滚轮
Named View 储存/切换至命名画布视图
之前有答主提到过Jump电池来完成画布远距离跳转。但在实际使用中发现Jump跳转速度相对还是较慢、有大概2、3秒的过场动画,在多次来回跳转的时候还挺烦 :(但使用Named View跳转的过场动画几乎可以忽略,而且在画布任何地方都可以立即跳转,不用受到用Jump必须成对出现的困扰,很适合体量较大的代码编写过程。
Alt + 鼠标拖动画布 电池向右整体推动分区
这个应该挺多人知道:
当想要在已有电池组中间再插入电池时,可以用 Alt + 鼠标 将电池组分隔整体往右移动。
Alt + 鼠标拖动画布 + Alt 电池向下整体推动分区
这个应该不太多人知道:
先按 Alt + 鼠标左键 + 再按一次 Alt ,可以将电池往下分隔移动
Shift + Ctrl + V 粘贴倒屏幕中间(超适合远距离复制粘贴)
写gh过程中很心塞的一个情况是:需要复制粘贴电池组到很远很远很远的地方,一般情况下我们是先复制,然后缩小缩小缩小,慢慢一点点拖拽过去。。。
然而,可以用 Shift + Ctrl + V 直接粘贴到屏幕中间,这样只需要配合Named View或Nagivate等快速移动,然后直接粘贴就可以省去远距离拖拽的烦恼。
左键拖拽 + Alt 复制电池
这个应该很多人都知道,就不详细说了(注意要先拖拽再按Alt)
Ctrl + Shift + 鼠标拖拽线 将线组直接换输入端
按住Shift可以增加线,按住Ctrl可以取消线,但按住Ctrl+Shift拖拽可以直接换输入端
这个应该是我觉得最最方便,最最日常有用的快捷操作了叭
Ctrl + ← / → 选择连线上游/下游的电池
Ctrl + Shift + ← / → 加选连线上游/下游的电池
Shift + Ctrl + Q 可框选代码和Rhino视窗的高分辨率截图
这个功能一般多用在给合作的同伴截取代码以及Rhino视窗,可以直接截取高清的GH画布,弹出的窗体中还可选择以相框形式插入Rhino视窗 或 框出关键电池组,以及修剪截图功能
以上;
打算做比较长期的更新,如果能帮助到你的话可以关注点赞和收藏哦^^
另外以上内容都分类整理进了我的知乎专栏 【Grasshopper 的奇技异巧】,以及大水牛参数化设计公众号的同名专辑推送下(主要是淫字出现在标题就会被微信404..... 手动叹气),欢迎关注!
Grasshopper中的奇技异巧zhuanlan.zhihu.com
/
最后
以上就是现代镜子为你收集整理的grasshopper python可以做什么_Grasshopper 有哪些奇技淫巧?的全部内容,希望文章能够帮你解决grasshopper python可以做什么_Grasshopper 有哪些奇技淫巧?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复