用途:为 Rhinoceros 3D 编写、编辑和调试脚本,覆盖 RhinoScript(VBScript,.rvb/.vbs)、RhinoPython(.py)与通过脚本编辑器直接使用 RhinoCommon(C#/.NET)三种方式,也涉及命令宏。新脚本默认推荐 Python。
主要能力:操作几何体、图层、图块、材质、视口与标注;拾取对象、提示输入、在 Rhino 内构建小型 UI;编写命令宏以自动化命令序列;加载、运行与分发脚本(启动脚本、别名、工具栏按钮)。
使用方式:Rhino 7 及以上(强烈建议 Rhino 8,统一脚本编辑器支持 Python 3、VB 与 C#)。在命令行输入 _ScriptEditor(Rhino 8)或 _EditPythonScript / _EditScript(旧版)。运行已保存文件可用 _-RunPythonScript 或 _LoadScript + _RunScript。分发脚本需将目录加入 Options → Files → Search paths,并创建工具栏按钮或别名,例如 Python 用 ! _-RunPythonScript "MyScript.py",RhinoScript 用 ! _-LoadScript "MyScript.rvb" _-RunScript MySubName。启动脚本可放入 Tools → Options 的 RhinoScript/Python 启动列表。
适用场景:批量修改大量对象(关闭重绘、用 BeginUndoRecord/EndUndoRecord 包裹、循环内直接用 RhinoCommon)、自定义对象拾取过滤器、性能敏感循环与复杂几何、维护旧版 VBScript 脚本。
限制与注意:rhinoscriptsyntax 返回 GUID,RhinoCommon 返回对象,可用 doc.Objects.Find(guid) 桥接;容差按文档读取 doc.ModelAbsoluteTolerance,不要硬编码;长循环应轮询 Rhino.RhinoApp.EscapeKeyPressed;不要在紧循环内调用 doc.Views.Redraw();VBScript 默认未开启 Option Explicit,且无块作用域,Nothing/Empty/Null 含义不同;脚本文件名不得与 Python 标准库模块同名(IronPython 2.7 会优先解析脚本目录);IronPython 2.7 下非 ASCII 字符(如长破折号)会静默导致 _-RunPythonScript 失败,建议首行加 # -- coding: utf-8 -- 并改用 ASCII 字符;Rhino.RhinoApp.IsHeadless 在部分 Rhino 8 版本可能不存在,需用 getattr 判断;RhinoMath 位于 Rhino.RhinoMath;doc.Objects.AddBrep() 失败返回 System.Guid.Empty;rhinoscriptsyntax 无类型存根,静态分析器会报无法解析导入。
参考资料:技能内含 rhinoscriptsyntax 速查、RhinoCommon 命名空间映射、宏与加载、VBScript 陷阱等参考文档,以及 McNeel 官方 RhinoScript 文档、开发者中心、RhinoCommon API 索引与示例脚本仓库。