Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

2022年12月12日Rhino阅读模式

借助犀牛开发帮助文档,在grasshopper里面自定义运算器,可以达到事半功倍的效果。很多逻辑如果借用grasshopper原生运算器,一则效率低下,二则需要许多原生运算器的组合才能达到。而通过自定义运算器,可以大大提高效率。前提是在较为熟悉其底层逻辑的情况下。

下面是一个简单的关于偏移曲面的示例,通过两种方式(一种是借助grasshopper里面的C#或者Python运算器,另一种是借助VS IDE),介绍如何在grasshopper里面自定义运算器或者开发插件。

grasshopper里面有原生的偏移曲面运算器,其局限是功能比较基本,只能向一侧偏移曲面。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

当然如果需要向两侧偏移也可以在输入端输入正负两个同样的数,但如果需要输出为封闭实体,如果不借助插件,则还需要提取偏移后两曲面的边进行放样组合等一连串操作,无疑效率会比较低下。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

自定义运算器方式一:通过C#或者Python自定义。以下为grasshopper里面的代码编辑器。本文以C#为例。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

双击打开C#编辑界面,下图为C#主要代码区域。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

偏移曲面的代码如下:A = Brep.FromOffsetFace(Sur.Faces[0], Distance, 0.001, both, solid);

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

若不熟悉相关的代码,可以通过犀牛开发者帮助文档进行查阅相关代码。

里面有与各种编程语言相关的帮助文档可供查阅,这里主要查阅RhinoCommon 与Grasshopper (Rhino for Windows)

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

由于是对Surface进行操作,一般查阅Surface类,这里比较特殊,曲面偏移的方法并不能在Surface类里面找到。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

可以查阅与Surface类比较相近的Brep类,这里需要一些经验,在RhinoCommon里面,我们认为的属于对Surface进行操作的一些方法在Brep类里面。Brep类的FromSurface 正好可以对其进行操作。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

以下为其语法。其需要返回Brep值,所以前面需要有变量承接其值。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

故A为承接值的变量,键入以下代码,FromSurface 后键入括号(后会弹出以下消息,其中1为输入Brepface,即为输入的曲面,2为偏移距离,3为偏移误差,4为是否两侧偏移,5为是否为实体。其中BrepFace,Double,Boolean为输入物体或者数值的类型。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

根据括号内提示为运算器加上输入端。由于C#为强类型的编程语言,需要定义输入端的类型,根据括号内提示定义输入端类型。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

之后自定义运算器完成,在Rhino里面画一个曲面进行测试。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

使用Brep抓取曲面,距离输入20,both输入false,是否实体输入false ,得到向一侧偏移的曲面。与原生运算器功能一样。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

both输入true,是否实体输入false ,得到向两侧偏移的曲面。与原生运算器功能一样。较原生运算器简单。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

both输入true,是否实体输入true,得到向两侧偏移的曲面,曲面形成封闭实体。grasshopper原生的offsetsurface不能直接得到。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

测试完毕后可以将自定义运算器储存以便之后方便调用。储存过程如下图所示。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

1处键入运算器名字,2处键入笔名,3处键入其功能,4和5处键入其存放栏目。点击6处为其设置运算器图像。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

以下为运用Python自定义此运算器示例。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

自定义运算器方式二:通过VS Code进行定义,这也是grasshopper插件开发的主要方式。打开VS Code,选择grasshopper模板,对其进行编辑。以下为本段代码的全部。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

其中:

1处输入运算器名称,昵称,功能描述,插件名称等。

2处定义运算器的输入端;

3处定义运算器的输出端;

4处为该运算器主要代码;5为该段代码中最主要的实现功能的代码。

6处设置运算器图标。

7处为该运算器ID。

Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)

该案例为较为基础的grasshopper代码案例,以此作为记录。如需深入研究,需深入了解犀牛开发帮助文档以及C#编程语言。

  • BIM学习群
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信扫一扫
  • weinxin
  • 本文由 发表于 2022年12月12日
  • 1、BIM学习网为资源共享网站,大部分资源均可在线免费获取,少数资源可通过VIP会员方式获取权限。
    2、所有均资源来自于网络及网友供稿,仅作为学习研究之用,禁止用于任何商业用途。
    3、如本页侵犯到任何第三方权益,请联系QQ/微信:9-5-7-0-3-2-9-6提交相关证明后我们将及时删除。
    4、百度网盘分享内容难免有被取消情况发生,VIP会员可直接联系索取和谐内容。
    5、转载请务必保留本文链接:Grasshopper如何开发插件?这篇文章告诉你(grasshoppers)