DariyXYZ/grasshopper-script-nodes
GitHub: DariyXYZ/grasshopper-script-nodes
为 Rhino/Grasshopper 脚本节点提供本地环境感知与规则驱动的自动化代码生成能力。
Stars: 0 | Forks: 0
# Grasshopper 脚本节点
编写可直接复制粘贴的 Rhino/Grasshopper 节点脚本,适用于 `C# Script`、`Python 3 Script` 和遗留的 `IronPython 2` 工作流,无需进入插件开发。
本仓库包含一个 Codex 原生技能,可辅助:
- 在编写代码前检测本地安装的 Rhino 和 Grasshopper 版本
- 检测机器上可用的 Python 和 C# 脚本运行时
- 生成与 `GH_ScriptInstance` 兼容的 Rhino 8 脚本组件 C# 代码
- 生成与检测环境匹配的 Python 3 或 IronPython 2 节点代码
- 保持脚本节点在空或未连接的可选输入时保持中立
- 塑造 `RunScript(...)` 签名,使 Grasshopper 能创建有用的输入与输出
- 保持节点行为稳定,例如在空闲输入时不显示红色或橙色状态
- 验证含糊的 RhinoCommon API 与本地 `RhinoCommon.xml`
- 使用精选的高风险几何语义故障清单
- 在 `references/custom-rules.md` 中累积持久化用户规则
- 全程在脚本节点内完成工作,而非编译的 `.gha` 插件
## 自动 Grasshopper 标记
当用户请求 Grasshopper 脚本节点代码时,该技能应自动使用,即使他们未明确提及技能名称。
强标记包括:
- `Grasshopper`、`GH`、`Rhino node`、`script node`、`C# Script`、`Python Script`
- 请求如“写一个 Grasshopper 节点的脚本”
- 请求可直接粘贴到 Rhino 或 Grasshopper 节点中的代码
- 请求通过 `RunScript(...)` 签名自动创建输入与输出
- 请求阻止节点在空输入时变红或变橙
- 请求记住未来的生成偏好作为规则
预期行为:
- 首先检测本地 Rhino 环境
- 读取默认规则、故障模式、自定义规则与故障清单
- 根据请求选择 C# 或 Python
- 仅在兼容性需要时选择 Python 3 或 IronPython 2
- 验证含糊的几何 API 与本地 RhinoCommon 文档
- 返回可直接粘贴到节点中的代码
## 可靠性策略
本仓库有意不依赖内存单独保存 RhinoCommon 几何语义。
信任层级如下:
1. 本地 `RhinoCommon.xml`
2. 官方 Rhino 开发者文档
3. 官方 McNeel 示例代码
4. 本仓库中的精选故障清单
5. 社区论坛线程
这是使该技能在处理修剪曲面、等参曲线、域和面方向等几何密集型任务时更稳定的设计选择。
## 该技能当前防护的常见故障领域
- `Surface` 与 `BrepFace` 与 `Brep`
- 考虑修剪行为及其底层曲面
- `IsoCurve` 方向语义
- `TrimAwareIsoCurve` 返回 `Curve[]`
- `DivideByCount` 返回参数
- 面方向与法线
- 边界、接缝与奇点问题
- 意外使用 `Item`、`List` 或 `Tree` 访问
## 内容结构
- `SKILL.md`:主技能文档
- `agents/openai.yaml`:Codex UI 元数据
- `references/default-rules.md`:Grasshopper 节点生成的默认行为
- `references/common-failure-modes.md`:脚本生成常见故障类别
- `references/custom-rules.md`:持久化用户生成规则
- `references/official-rhino-notes.md`:官方文档衍生的 Rhino 与 Grasshopper 笔记
- `references/rhinocommon-gotchas.json`:机器可读的高风险 API 事实与提醒
- `scripts/check_gotcha_registry.py`:验证故障清单模式
- `scripts/detect_rhino_environment.py`:本地 Rhino/Grasshopper/运行时检测器
- `scripts/lookup_rhinocommon_docs.py`:本地 RhinoCommon XML 查找以获取精确 API 语义
- `scripts/update_custom_rules.py`:将新规则追加到自定义规则文件
- `scripts/install_skill.py`:将仓库复制到可发现的 Codex 技能路径
- `scripts/check_skill_md.py`:验证技能前置元数据与正文存在
- `scripts/inspect_skill_repo.py`:快速仓库结构验证
- `scripts/run_python.ps1`:适用于 Windows 环境的稳健 Python 启动器,可处理损坏的 `python` 别名
## 在 Codex 中安装
将该文件夹复制或克隆到本地 Codex 技能目录:
- Windows:`C:\Users\\.codex\skills\grasshopper-script-nodes`
- 或任何 Codex 索引的技能路径
然后重启 Codex。
你也可以使用以下命令安装当前仓库副本:
```
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\install_skill.py --source . --target "$env:USERPROFILE\.codex\skills"
```
## 典型使用场景
- “写一个 Grasshopper C# 脚本,实现……”
- “Напиши скрипт для ноды Grasshopper”
- “为 Rhino 8 Grasshopper 节点提供 Python 3 代码”
- “使该 GH 节点在未连接网格时保持中立”
- “根据 RunScript 签名创建输入与输出”
- “使用 IronPython 2,因为必须与旧环境兼容”
- “这条规则请记住,用于后续节点生成”
## 本地检查
```
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\check_skill_md.py SKILL.md
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\check_gotcha_registry.py .\references\rhinocommon-gotchas.json
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\inspect_skill_repo.py .
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\detect_rhino_environment.py --pretty
powershell -ExecutionPolicy Bypass -File .\scripts\run_python.ps1 .\scripts\lookup_rhinocommon_docs.py --member Surface.IsoCurve --member BrepFace.TrimAwareIsoCurve --pretty
```
## 环境检测工作流
该仓库包含一个本地环境检测器,可从 Windows 读取 Rhino 安装元数据并检查 Rhino 侧脚本程序集。
在该仓库准备机器上检测到:
- `Rhino 8.27.26019.16021`
- `Grasshopper 8.27.26019.16021`
- `Python 3.9` 在 Rhino 8 中可用
- `IronPython` 程序集也存在
- `C# 9.0` 作为生成 C# 节点代码的安全兼容性建议
有关打包方法请参见 `install-flow-report.md`,示例环境报告请参见 `install-report-sample.md`。
## 许可证
MIT。详见 `LICENSE.txt`。
标签:C# Script, geometry语义, GH_ScriptInstance, Grasshopper, IronPython, Python Script, Rhino, RhinoCommon, RunScript签名, SEO: Grasshopper脚本, SEO: Rhino节点, SEO: 脚本节点生成, 代码生成, 抄粘贴脚本, 持久化规则, 插件开发替代, 本地环境检测, 渗透测试工具, 版本检测, 脚本节点, 自动化标记, 自定义规则, 节点行为, 逆向工具, 高危几何语义