复杂形态钢结构设计培训班

首页 非解构-公众号 用袋鼠让犀牛(Rhinoceros)跳起来!

用袋鼠让犀牛(Rhinoceros)跳起来!

小编最近捕鱼之余,也在想办法不断地提升自己的Rhino技能,以实现在Rhino里参数化建立鱼竿的终极目标。在学习Rhino的过程中必不可少的就接触了Grasshopper这个神器。在五花八门的电池和连线中解决模型问题,实现鼠标一拉Slider,模型随之而变的感觉,那简直太开心了。

不过,在Grasshopper的学习过程中,小编发现有一个模块是现今学习资料都很少提到的,那就是那只神秘的袋鼠(Kangaroo)。

很多时候,Grasshopper的教材会完全忽略这只袋鼠,就仿佛它从未来过一般。

由于袋鼠身为第三方插件,犀牛的官网自然不会有任何关于袋鼠的文档,而袋鼠的插件官网更夸张,官方文档的版本已经远远落后于当前版本,袋鼠官方文档里的电池在目前的版本中甚至已经完全重做,已经没有参考价值了。

官方对于新版本的发布也只是在一个“不存在的”视频网站上发布了几个简单例子的视频来作为“教程”,没有基础的小编在看完那些“不存在的”视频之后,更是丈二和尚摸不着头脑。

相信很多人也与小编一样,尽管没有教材可以参考,但仍多次试图在Grasshopper里点开袋鼠标签页,拖出来几个kangaroo的电池,连一连它们,想要搞清楚这只跃动的袋鼠到底有啥本领能够让Grasshopper里给它预装的同时还单独开一个标签。

可惜大部分的时候,小编只能望着那些画风明显迥异与其他Grasshopper电池的图标和那些莫名其妙的电池名字捶胸顿足,悻悻而归。

However!!

小编我是那么轻易放弃的人吗??

某同事小声BB: 不是吗? 当然不是!

由于工作内容的原因,小编最近一直在学习有关于数学上最优化问题的求解方法,然后在某次看文献看烦了之后又开始着手研究这只在我脑海中一直蹦跶的袋鼠,这一次小编我换了个角度来看袋鼠…… 嘿嘿嘿,原来袋鼠是这样的

看着这个袋鼠的主力求解器电池的输入端,再加上小编之前看到早已过世的v0.99官方文档说明里面解释过的袋鼠基本原理——质点平衡,小编我茅塞顿开,这就是一个最优化问题求解器啊!求解的目标就是质点系坐标,约束条件就是平衡方程以及那一堆乱七八糟由我们自己连进求解器的电池。

于是……小编抱着试一试的态度,真的做出了一个悬链线!!

由此一发不可收拾地开始了探索

甚至在曲面找型的同时显示杆件内力

尽管结果不是100%精确,但是架不住它算的快啊!还能直接利用Rhino强大的可视化引擎,在概念上满足设计前期需求,总的来说大致看个型还是可以的。

那这么强大的袋鼠要怎么驯服它呢?!下面小编就以悬链线模型如何实现作为例子,来具体讲讲怎么把这只肥硕的袋鼠装到大家的武器库里。

Let’s Rock!!!

首先,先介绍一下袋鼠求解器的基本原理,用到的Rhino版本是6,袋鼠版本是2.42。就如同之前提到过的,袋鼠本质上是一个最优化求解器,因此,必须要有一个主要的“求解”过程,这个过程就是通过Solver电池实现的,这个电池可以在Kangaroo2下面的“Main”电池组里面找到。

我们要做的其实就是,把所有与需要解决的问题相关的电池都连入“GoalObjects”里,求解器就可以运行了,收敛条件和允许误差在大多数情况下是不需要额外给定值的,用默认设置就可以。关于重设按钮和求解器开关,可以分别用“button”模块和“Toggle”模块来连入,以实现对求解器的基本运行控制,比如暂停啊、开关啊等等。

那么,我们要怎么使用电池来定义一个悬链线问题呢?我们先来分析一下悬链线问题有哪些已知的条件:

  1. 悬链线的两端是固定的;

  2. 悬链线可以划分成无限个小线段且每个小线段有自己的质量,受重力影响下产生下垂;

  3. 小线段本身应该具有一定的刚度。

关于刚度问题,我们可以想象两根长度相同的绳子,一根“软”,另一根很“硬”,比如说尼龙绳和丝线,握住它们两端让它们自然下垂,它们的弧度会不一样,一方面是绳子本身质量不一样,另一方面就是刚度问题了,在受到相同力的情况下,不同材料的伸长量是不一样的,就是类比于弹簧的胡克系数。

所以,在我们使用袋鼠的时候,就需要把这三个方面的已知条件作为约束电池,连入求解器的GoalObjects输入端里。

Step 0 – 我们需要一根悬链线

那自然是需要用到两个点电池以及一个线电池了

这样我们就完成了一个长度是10的线的构造。

Step 1 – 悬链线两端固定条件

我们需要用到的是AnchorXYZ电池,它在Goals-Pt电池组里。Goals的意思不言自明,Pt就是Point,是代表与点相关的Goal。在袋鼠的定义里,Goals是求解目标,本质上是数学上的约束方程。Anyway,所有Goals都可以看成是一个物理上的约束条件就对了。

在Point端我们连入需要固定的点,也就是悬链线的两个端点,而X/Y/Z是一个布尔值输入,为True时就表明这个电池会阻止输入的点的该方向位移。由于悬链线的两端我们不希望它在任何一个方向上产生位移,所以我们需要把X, Y, Z三个值都设为True,可以直接右键赋值,也可以做成一个panel或者Boolean输入电池,然后连入这三个输入端。

Step 2 – 悬链线的重力赋值

之前提到过袋鼠是以质点系平衡作为基本方程的,所以重力需要加在质点上。虽然袋鼠提供了其他的加载力的方法,但是这个是最简单也是最容易的。需要用到的电池是在Goals-Pt电池组下的“Load”电池

这个电池的输入端简单明了,一个是输入加荷载的点,另一个就是加载的力的向量。鉴于我们的悬链线是个二维问题,重力是沿着Y轴的负方向,在Force Vector输入端我们可以用Unit Y Vector来实现,我们使用-0.01作为Factor。

那么point端的话,由于我们目前只画了根线,没有点,咋整呢?那当然是熟悉的divide curve电池了:

Curve端输入我们刚刚画的线,Count嘛,先来他个50个,CPU还有余力我们还可以再谈(老板,CPU的算力我全包了)。Kinks?那玩意儿不能吃,我们不用管它。然后输出端的Points我们连入Load电池,就做好了重力加载这一步了。

Step 3 – 线的刚度定义

线的刚度定义是使用Goals-Lin电池组下的Length(Line)电池来实现的。

看看这个电池的输入端,我们需要Line、Length以及Strength。Line就是要输入的线端,也就是我们的悬链线,Length是这个线的长度,Strength顾名思义就是刚度。电池输出端是Spring,也就是说,其实袋鼠内部就是把每个线段当作理想弹簧来处理的。

要实现悬链线效果且实现的刚度定义,我们首先需要得到一段一段的小线段才行,不然原始的线段只有一节,只有一个大的弹簧,那可没法形成悬链线的下垂效果,具体请参考“有限元”词条。正好我们之前用了divide curve电池生产出来一大堆点,就用这些点作为小线段的起始节点和结束节点吧!这里就需要用到shift list电池了

把我们用divide curve电池生成的点的list连入这个电池,shift端输入1,wrap设置为False,就可以得到小线段的起始点,再来一个shift list电池,shift端输入-1,wrap同样设置为False,我们就可以得到小线段的结束点。然后把它们连入line电池就能得到所有的小线段啦。

然后我们再把这个新生成的小线段连入我们的Length(Line)电池,线的刚度嘛,就先来个100吧。这样我们的线刚度定义就搞定了!

三个条件都完成,接下来就是袋鼠蹦跶的时刻了!

来人啊,上袋鼠……

Step Final – 连上袋鼠求解器求解

先使用前面提到的Button和Boolean Toggle连入Solver,做好准备,以防袋鼠可能出现的反抗不听话瞎蹦跶导致意想不到的结果。

然后我们把之前做好的三个约束方程连进来袋鼠的GoalObjects端(记得按住Shift一起加进来):

这个时候,当我们双击Boolean Toggle的按钮,让False变成True之后,袋鼠就开始蹦跶着帮你把问题解决了!

什么?速度太快没有看清?让我们先保存一下我们好不容易连上的电池,然后来把Divide Curve电池的Count端输入多一点,比如说来个500(请循序渐进,不然CPU容易冒烟)(and不要问小编我为什么先要保存这个电池,这都是小编我把Grasshopper玩死好多次之后的出来的教训,改Solver电池的输入端数据之前千万记得保存……)。

为什么悬链线好像曲率更大了?这是因为我们加载重力的时候是按单个质点加载的,我们divide curve数量多了,质点数量就增加了,相当于是增加了这根绳子的重量,所以曲率会增大。

解决方法?加大绳子刚度(提高Length(Line)电池力的Strength值)或者降低重力系数(减少Load电池里的Force Vector的绝对值)

好了,通过简单的悬链线问题,怎么让袋鼠跑起来的基本思路就介绍完毕啦。总结一下:袋鼠的求解器是一个质点系平衡方程,我们需要做的就是给这个平衡方程施加更多的约束方程和边界条件。

此外,除了静力学问题之外,我们还可以输入初始条件到这个求解器里,以实现更多的袋鼠动力学应用(如同最开始的第二个小球下坠例子)。

想要了解更多?下面是我们更多的文章

参数化设计实战:
当建筑师甩给我一个Rhino模型(一)
当建筑师甩给我一个Rhino模型(二)
参数化设计武器库:
Python爬虫实战——从太平洋地震工程研究中心数据库自动下载地震波时程
制作你的第一个grasshopper电池
DB Browser for SQlite-盈建科的另类解法
风萧萧兮——单点脉动风AR模型的实现
小软件怒刷存在感 —— Xtract应用实例
前沿概念解读:
暑假快到了,我是不是该找个设计院实习一下?
广东省标《建筑工程混凝土结构抗震性能设计规程》非权威阅读
上海结构师对抗地基沉降辛酸血泪史
论结构工程师的自我修养

小编今天的介绍就到这里了。意犹未尽?那么请关注我们的公众号吧!

更多的设计狮攻城利器正在填装中……(长按图片扫码)

另外,欢迎调戏我们可爱的公众号负责人:

本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2019/06/eab0b6e8eb/
上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部