【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础

2022.10.15 更新注
2年时间不知不觉过去了,在此期间,Rhino也发布了第7个大版本(Rhino7),虽然Grasshopper2和Rhino8也传出了许多消息,但最终它将会成为什么样,目前作者也不清楚哈。

Rhino7的发布并未给Grasshopper带来大的变革,总体开发思路仍然与之前保持了一致。所以【Grasshopper基础】系列文章所有的概念仍然可以继续沿用(据说GH2会从底层有一些变革,那就到时候再肝啦)。不过有几处小的改动,比如.NET Framework版本从v4.7.2升到了v4.8,Visual Studio的插件版本略有变化等等。详细的就不罗列了,文章细节里会有标明
:)

本文旨在介绍如何使用C#编写一个Grasshopper内的Hello World电池,包括如何使用和安装Grasshopper电池模板,如何配置Visual Studio来生成.gha电池,如何配置Grasshopper以识别编译的电池,如何Debug等。

后续章节会讲到如何配合多个电池、多个项目、多个Rhino/Grasshopper SDK。

以下Grasshopper简称GH。

制作Grasshopper电池的主要步骤及准备工作

由于GH整个是以.NET为架构编写的,因此其原生支持的电池也是基于.NET架构。网络上许多流行的Python电池其实大部分是使用GH包含的IronPython电池再次包装而成的,可以通过右键解包看到源代码,其很多关于UI方面的拓展性并不强。

Rhino 6版本之后,由于官方在Visual Studio的拓展商店中上架了GH电池的项目模板,很多配置文件均包含在了模板中,所以用C#或者VB来创建一个自定义的GH电池就变得简单了许多。我们在这里就选用Visual Studio来作为IDE。

但是这并不是说不用模板就没法制作GH电池了,本文最后会提到如果是用非VS的IDE(比如VS Code等)如何构建一个GH电池。

需要用到的软件有:

  • Visual Studio 201720192022, Community/Professional/Enterprise 均可
    • 如果是第一次使用Visual Studio那选用Community版本(社区版本)就可以,这三个版本中只有Community版本是可以免费使用的;
    • 确保在Visual Studio安装时,在“工作负载”选项卡下选择了“桌面应用和移动应用”下的“.NET桌面开发”组件包,其组件包描述中有.NET Framework这个词的出现,因为这个是GH电池的依赖框架;
    • 如果在之前安装Visual Studio时未选择安装上述组件包,随时可以使用Visual Studio Installer额外加装上述组件包。
  • Rhino 6/7

安装GH电池项目模板并创建一个GH项目

启动Visual Studio(本文中使用的是Visual Studio 2019 Community版),由于我们仅仅是需要安装一个电池模板,此时不需要创建任何项目,所以我们这里需要选择那个最不起眼的选项“继续但无需代码”。

在这里插入图片描述

然后在窗口的最顶端的菜单栏中找到“扩展(X)”-“管理扩展(M)”,在选中左侧“联机”选项卡的前提下,找到右上角的搜索框,搜索Grasshopper。
在这里插入图片描述

现在,如果是使用 Visual Studio 2022 版本,对应 Rhino7 版本的二次开发,则可以直接点击下面的链接来下载最新版的插件:
RhinoCommon and Grasshopper templates for Rhino 7
同时,也考虑到下载速度的原因,可以在CSDN的文件共享中下载:
https://download.csdn.net/download/bwkair/86763074

如果网络不是太差的话,应该就可以出现如上图所示的搜索结果,直接点击下载。

下载完成之后,Visual Studio会提示这个插件的安装已经被安排在了这次Visual Studio关闭之后,所以此时我们需要关闭Visual Studio。在关闭之后等待一小段时间,应该就会弹出插件的安装界面了,如下图所示。我们直接选择接受更改(Modify),并等待安装完成即可。

在这里插入图片描述

发现有的读者反映在Visual Studio中下载插件似乎一直提示失败,这可能是Visual Studio默认连接到的是国外服务器,下载速度十分慢。所以这里提供几个直接下载插件文件的地址,读者可以手动下载并安装插件。

  1. 下载连接 https://marketplace.visualstudio.com/items?itemName=McNeel.GrasshopperAssemblyforv6

  2. 笔者在CSDN.NET上的文件共享 点我下载

安装完成之后我们再次打开Visual Studio,此时我们选择创建新项目之后,在上方搜索模板处输入Grasshopper就可以看到刚刚安装好的GH电池模板扩展,这里我们就可以选择 Grasshopper Add-On for v6 (C#) 开始创建我们的新电池了!如下图所示。

在这里插入图片描述

在接下来的配置新项目界面中:

  • 项目名称可以取一个自己喜欢的,也可以参考笔者的HelloGrasshopper。
  • 在填入项目名称之后,解决方案名称也会同步地改变,此时我们可以不管它。“将解决方案和项目放在同一目录中”这个选项会决定各个文件的存放的相对路径,虽然不会影响程序的运行,但这里不推荐勾选,不勾选这个选
### Grasshopper Python 二次开发教程 #### 安装与配置环境 为了在Grasshopper中利用Python进行二次开发,首先需要安装Rhino以及带有Python支持的Grasshopper插件。确保已正确安装IronPython库,这是使Python能够在.NET环境下运行所必需的[^1]。 #### 创建第一个Python脚本组件 打开Grasshopper后,在Canvas上右键点击并选择`Python Script`来添加一个新的Python节点。此操作会弹出一个编辑器窗口,其中可以编写Python代码。对于初学者来说,可以从简单的例子入手,比如生成随机数列表: ```python import random def generate_random_points(count, min_val, max_val): points = [] for i in range(count): x = random.uniform(min_val, max_val) y = random.uniform(min_val, max_val) z = random.uniform(min_val, max_val) point = (x,y,z) points.append(point) return points count = int(GHenv.Component.Params.Input[0].VolatileData.AllData(True)[0]) min_val = float(GHenv.Component.Params.Input[1].VolatileData.AllData(True)[0]) max_val = float(GHenv.Component.Params.Input[2].VolatileData.AllData(True)[0]) result = generate_random_points(count,min_val,max_val) GHenv.Component.Params.Output[0].VolatileData.SetDataList(result) ``` 这段代码展示了如何接收来自Grasshopper界面的输入参数,并返回由Python计算得出的结果给输出端口[^4]。 #### 数据交互与处理 Python组件不仅限于数值运算;还可以与其他类型的几何对象打交道,如点、线、曲面等。通过访问Grasshopper API,开发者可以直接操控这些图形元素,实现更加丰富的功能。例如,下面的例子说明了怎样读取一组点并将它们连接成一条折线: ```python from Rhino.Geometry import Polyline points_data = GHenv.Component.Params.Input[0].VolatileData.AllData(True) points = [point.Value for point in points_data] polyline = Polyline(points) GHenv.Component.Params.Output[0].VolatileData.SetData(polyline.ToPolyline()) ``` 上述实例体现了Python作为Glue Language的优势——它能轻松桥接不同领域之间的差距,无论是数学建模还是建筑设计都能得心应手[^3]。 #### 自定义UI控件 除了基本的数据流控制外,有时还需要向用户提供友好的界面来进行设置调整。借助Windows Forms或其他GUI框架,可以在Python内构建简易对话框,从而增强用户体验感。不过需要注意的是,这类高级特性可能会增加项目的复杂度,因此建议先掌握基础部分再逐步深入探索[^2]。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值