标签: grasshopper笔记

  • grasshopper浮点数转化为整数的方法-字符串分割法

    grasshopper浮点数转化为整数的方法-字符串分割法

    grasshopper浮点数(小数)转化为整数的方法

    有时候是需要把数据的浮点数转化为整数的,grasshopper也可以自动的把浮点数转化为整数的,它这种转化的方法是使用了四舍五入的方法,比如下图,0.25转整数后是0,2.938转化后是3

    在计算机编程语言里面还有一种转化整数浮点数的方法,这种方法是也广泛应用的,但是在grasshopper中我本人没有找到相关的运算器能直接转换,这种转化的方法就是割舍。割舍指的是把小数点后面的数据全部清除,只保留整数部分。那如果能够使用割舍的话,那我们能找到比较准确的寻找到物体ID(列表中的位置),下面的算法是一个比较简单的方式获取到整数部分。

    算法详解


    1. 把数据转化为字符串,字符串就是以A-Z,a-Z和0-9 或中文字等组成的文字列表
    2. 把字符用小数点分割,使用到运算器是Text Split,Text Split的C端口输入一个小数点即可,T端口输入数值或字符串形式的数据,如果是数值它会自动转换的,记住自动转化在grasshopper中大部分都是允许的。
    3. 获取小数点前面的数据

    算法如下图

    算法下载:

    Gets an integer.gh

    关键字:grasshopper算法,grasshopper教程

  • grasshopper按照曲线做排序的算法

    grasshopper按照曲线做排序的算法

    昨天的文章《grasshopper渐变的并且随机不等数量边数的多边形阵列算法》我这里写了一个算法是做边数逐渐增加的多边形阵列,它渐变是从下到上变化的,那如果我们要从上到下或者指定任意角度方向变化,那可不可以实现呢?那么我们今天就来说这个话题。

    其实从根本上说,多边形边数的变化归根结底是点的排序的变化,每个点的排序发生改变了,那生成的多边形的排序也就跟着改变了,那一个按顺序变化的值的列表(指的是边数值列表)赋予多边形数据列表的边数端口后,多边形的形态就发生改变了。(上个实例中随机边数的值的排列,这个排列是从小到大变化的)。

    ​简而言之就是一个列表变化了,那结果是发生改变。当然我们要做的就是定制改变列表顺序的规则。

    效果图如下图所示,曲线的端点位置是三角形,末端的位置的多边形的边数最多。

    Sort_Along_Curve这个运算器P端口输入点列表,C端口输入曲线,P输出端口输出点新的点阵列,I端口输出点的排序列表。

    算法下载

    sort_along_curve_list.gh

    关键字:grasshopper教程,grasshopper算法

  • grasshopper中删除指定边数的多边形

    grasshopper中删除指定边数的多边形

    grasshopper生成随机边数的多边形阵列,但是删除边数等于5的多边形。

    算法的思路

    1. 生成网格阵列
    2. 网格中心生成多边形
    3. 给多边形赋予随机的边数
    4. 判断边数是否等于5.在判断运算器中“不等于端口”中,如果不等于5,则返回ture,否则返回false。

    算法详解


    建立10×10的网格,C端口输出单个网格矩形,Area运算器计算网格中心,C是输出网格中心点,在C端口点击右键选择 Flatten将数据拍平,拍平后便于后面的数据组合。接着生成多边形阵列,给多边形赋予随机的“段数”值,算法如下图

    效果如下图

    判定Equality运算器用于判断A端口输入的值是否等于B端口值,“=”端口判断是否等于,“≠”判断AB参数是否不等于,不等于为True,等于为False,这两个端口是输出相反结果的。Cull  Pattern运算器是用于删除一个列表(List)数据的,删除的依据是判断P端口输入的布尔值(也就是True和False),如果输入True则不删除列表中的数据,如果输入False就是删除列表数据。

    删除边数等于5的多边形的结果

    ​草蜢算法下载

    equality_cull_Pattern.gh

    关键字:草蜢算法教程,grasshopper算法教程

  • grasshopper楼梯算法之二

    grasshopper楼梯算法之二

    较早之前也写过楼梯算法,大家可以到这里去查阅下《grasshopper参数化楼梯》,比较两者之间的不同之处,两个都能很快速的创建楼梯。今天分享的这个grasshopper楼梯生成的算法我个人觉得更加的快速,消耗资源更少,原因是这次的算法生成的楼梯都是直接生成点,在串联点生成楼梯轮廓的,在grasshopper中点这种对象并不是一种实体(显示在画面点的标示还是会占用显卡资源,但是不多),点仅仅是一种数据形态,也就是说点只是由XYZ三个坐标构成的,仅仅是数据的话,那计算当然是快的了。

    先看看这个楼梯效果图,可以看到楼梯都是点构成的。

    算法详解


    先定义楼梯踏步的长宽高和数量,让我们创建的这个楼梯具有可控制参数,高度等值传入 Series中生成等差数列,这个踏步的等高值就创建好了,这里要注意的有两个值,我这里称之为踏步根部点和踏步顶点。等高值输入Construct Point(构建点运算器)生成一系列的点。

    第二步,这里是对点做些添加和删减的操作

    1.Shift运算器是偏移作用,如果从最后的点往前面偏移布尔值为false时,删除最后一个点,

    2.List Length统计点的数量,输出数量值减去1,后面连接List Item刚好可以选择到最后一个点,再把这个点沿着曲线镜像,那这个点就跑到楼梯的下面去了,当然这个步骤可以用别的方法代替。

    第三步,串联做好的曲线

    算法文件下载

    stair_grasshopper.gh

  • grasshopper 两点绘制贝塞尔曲线

    grasshopper 两点绘制贝塞尔曲线

    grasshopper 两点绘制贝塞尔曲线

    算法详解

    1. 在犀牛视窗上绘制两个圆圈
    2. 等分点曲线
    3. 其中一个等分点的位置做偏移处理
    4. 等分点运算器的T端口输出等分点在曲线上位置的切线方向,如下图所示
    5. T端口输出的切线方法数值输入一个乘法运算器上,乘以B端口的值,可以随意调节切线向量的大小
    6. 贝塞尔曲线运算器,A和B输入两条曲线的等分点,At和Bt分别输入贝塞尔曲线,
    7. ​效果图如下图

     

  • grasshopper翻转曲线的用法flip_curve

    grasshopper翻转曲线的用法flip_curve

    grasshopper翻转曲线的用法

    有时绘制或者一些点串联生成的曲线方向会不一致,这样会导致在做批量偏移曲线的时偏移方向也会不一致,如下图所示,绿色圈是偏移后的曲线,有些向内,有些曲线向外偏移了。

    A曲线:可以随意绘制一段曲线,亦可以从原来的曲线拾取作用指定的曲线方向,把A曲线输入Flip Curve(曲线方向翻转运算器),FlipCurve的C端口输出翻转后的曲线,F端口输出判断曲线是否翻转的布尔值。

    最终结果,绿色的为偏移后的曲线,不再出现偏移方向不一致的情况了。

    本小节的模型和Gh算法文件

    Flip_curve.gh

    flip_curve.3dm

  • grasshopper钢架结构算法,桁架结构算法

    grasshopper钢架结构算法,桁架结构算法

    算法下载链接

    厂房屋顶.gh

    厂房屋顶.3dm

    如果不能下载,请评论区留言

    grasshopper钢架结构算法,桁架结构算法

    效果图

     

    带完整的桁架结构

    不带屋顶面桁架算法

    算法下载链接

    厂房屋顶.gh

    厂房屋顶.3dm

    如果不能下载,请评论区留言

    ​关键字:grasshopper算法,grasshopper教程,grasshopper钢架做法

  • 如何在grasshopper上找到真正的uv展开曲面

    如何在grasshopper上找到真正的uv展开曲面

    如何在grasshopper上找到真正的uv展开曲面

    grasshopper里Dimensions运算器是计算曲面的展开的uv值的,但是这个计算本身有比较大的误差,计算后的uv值根本不能如是反应到原来曲面上,如下图所示:计算出的uv值分别是26.5和25.2,但是把uv值转化为点在“映射”会曲面时就有问题了。

    箭头所指就是平面点(uv点)映射到曲面的情况,这时点并不在曲面上,而是飞出曲面。

    那除了这个在grasshopper里面还有一个运算器能够得到曲面的点的uv值:Divide Surface(等分点运算器),这个运算器输出曲面的等分点,同时还输出每个点的uv值,而且等分点的第一个点的值是从0坐标开始计算起,这样为我们做从原点开始绘制一个展开的矩形uv曲面提供极大便利。如下图

    整个uv值的“终点”就是等于最后一个点的uv坐标,我们只要能够获取该值就可以了。

    如下图所示,我把uv值“拍平”(Flatten Tree)让它形成线性数据,在Reverse List(翻转数据),翻转数据后点的最后一个数据会被排到一个位置上,最后List Item选出第一个数据,也就是曲面等分的最后一个点。如下图所示。

    用Deconstruct运算器得到UV值

     

  • 怎么找到曲面上任何一个点以及它在曲面上的法线方向

    怎么找到曲面上任何一个点以及它在曲面上的法线方向

    怎么找到曲面上任何一个点以及它在曲面上的法线方向

    p要实现这个效果其实也很简单,只要使用到这个运算器就可以的(右图),不过我们必须先找到曲面上任何的一个点。直接在曲面找点不太现实,我这里使用到方法是利用“UV映射”的原理,只要找到UV面上的任何一个点,那在把这个点“映射”到曲面上。

    p

    Domain²这个运算器是输出曲面的UV值,输出的UV值连到矩形运算器中生成矩形,这个矩形用于限定点的取值区域。

    grasshopper

     

  • 15-voronoi细胞平面制作

    15-voronoi细胞平面制作

    这一节讲解voronoi细胞曲面的做法

    关于voronoi我这里引用一段百度百科里面的文字,详细的内容大家可以自己百度一下。

    Voronoi图,又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。N个在平面上有区别的点,按照最邻近原则划分平面;每个点与它的最近邻区域相关联。Delaunay三角形是由与相邻Voronoi多边形共享一条边的相关点连接而成的三角形。Delaunay三角形的外接圆圆心是与三角形相关的Voronoi多边形的一个顶点。 Voronoi三角形是Delaunay图的偶图

    效果:

    制作的方法:

    1. 创建一个方块用于限定voronoi的区域
    2. 在方块区域内生成点。
    3. 连接voronoi运算器(3d或2d)

    算法下载