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: 脚本节点生成, 代码生成, 抄粘贴脚本, 持久化规则, 插件开发替代, 本地环境检测, 渗透测试工具, 版本检测, 脚本节点, 自动化标记, 自定义规则, 节点行为, 逆向工具, 高危几何语义