Hops 把一个外部 Grasshopper 定义变成当前画布上的“函数组件”。这个外部定义可以保存在本地、网络路径、远程服务器,也可以是 REST 端点。
在教学中可以把 Hops 理解成:
外部 .gh 文件 = 函数定义 Context Get = 函数输入 Context Print / Context Bake = 函数输出 Hops 组件 = 函数调用 RhinoCompute = 执行函数的服务器
在 Rhino 命令行输入:
PackageManager
搜索 Hops 并安装。安装后,在 Grasshopper 的 Params > Util 中可找到 Hops 相关组件。
一个可被 Hops 调用的 Grasshopper 定义通常分三段:
命名规则很关键:
width、height、floor_count。目标:输入半径,输出圆面积。
Get Number,命名为 radius。Context Print,输入命名为 area。circle_area.gh。Path,指向 circle_area.gh。radius 输入和 area 输出。在 Grasshopper 中打开:
File -> Preferences -> Solver
配置:
| 配置项 | 说明 |
|---|---|
| Hops-Compute server URL | 本地或远程 Compute URL,例如 http://localhost:6500/ 或 http://server-ip:80/。 |
| API Key | 与服务器 RHINO_COMPUTE_KEY 匹配的 key。 |
| Max Concurrent requests | 异步时的最大并发请求数。 |
| Hide Rhino.Compute Console Window | 本地排错时建议取消勾选,方便看控制台日志。 |
| Launch Local Rhino.Compute at Start | 本地 Hops 自动启动 Compute 时使用。 |
| Child Process Count | 远程或本地 Compute 子进程数量。 |
右键 Hops 组件可看到常用选项:
| 选项 | 用途 |
|---|---|
| Path | 设置 GH 文件、网络路径或 REST URL。 |
| Show Input: Path | 把 Path 暴露成输入,便于动态选择定义。 |
| Show Input: Enabled | 用布尔值控制是否求解。 |
| Asynchronous | 异步求解,不阻塞 Rhino/Grasshopper UI。 |
| Parallel Computing | 对列表项尝试并行求解。 |
| Cache In Memory | 本地缓存相同输入的结果。 |
| Cache On Server | 服务端缓存,具体可用性取决于部署和服务能力。 |
适合:
不适合:
对于 DWG base64 上传场景,Hops 更适合接收 job_id、dwg_path 或 3dm_path 这类短参数,而不是直接传超长 base64 字符串。推荐先由自定义 Compute 插件端点完成 DWG 解码、校验和导入,再由 Hops 定义中的自定义 GH 电池继续处理。详细方案见 11 DWG Base64 与自定义插件/Hops 集成方案。
练习 1:把“输入长宽高,输出盒子体积和 Brep”的定义封装成 Hops 函数。
练习 2:把同一 Hops 函数分别指向本地 Compute 和远程 Compute,比较第一次求解和第二次求解耗时。
练习 3:关闭 API Key 或输入错误 API Key,观察 Hops 组件和 Compute 日志中的错误表现。
RHINO_COMPUTE_KEY 一致?