NexoRhino — Rhino Python IntelliSense
Educational Python type stubs for Rhino 8 / RhinoCommon, with a focus on
Rhino.Geometry. Get completions, signatures, hover documentation, and geometry
learning notes in VS Code. The stubs are bundled: no pip command is required.
Quick start
Install this extension, along with its Python and Pylance dependencies.
Open your Python project folder in a trusted VS Code window. NexoRhino
configures Pylance automatically, including each folder in a multi-root workspace.
Open a .py file and try:
import Rhino.Geometry as rg
point = rg.Point3d(1.0, 2.0, 3.0)
point. # Request completion here; remove the trailing dot before execution.
Hover over Point3d for documentation. If completion does not refresh, run
Python: Restart Language Server or Developer: Reload Window.
How it works
On startup and when folders are added, NexoRhino sets python.analysis.stubPath
using VS Code's Configuration API. It never edits the settings file directly.
In a single-folder window this is a workspace setting; in a .code-workspace
window it is a separate folder setting, leaving the workspace-wide value alone.
If you already have a custom stub path, automatic setup preserves it and displays
a notice. Run NexoRhino: Repair IntelliSense Configuration from the Command
Palette to replace it after confirmation. This command also restores configuration
after Disable. VS Code supports one stubPath, so replacing a custom path may make
other custom stubs unavailable. The old nexorhino.enable command ID remains an alias.
NexoRhino: Disable Rhino IntelliSense restores the previous folder setting.
It also opts that folder out of automatic configuration, including after reloads.
Run this command before uninstalling the extension. Manually changed settings
are preserved. On extension upgrades, managed paths are refreshed automatically.
The configured path is machine-specific and appears in .vscode/settings.json;
avoid sharing that absolute path with other machines. No manual JSON edit or pip
installation is needed. For SSH/WSL/containers, install the extension
in the remote workspace. Virtual workspaces are not supported.
Import diagnostics
reportMissingImports means the import could not be resolved: check that Python
and Pylance are enabled, open a folder, and use Repair if a custom stub path
prevented automatic setup.
reportMissingModuleSource ("could not be resolved from source") means the stub
was found but the corresponding runtime source was not. This is expected when
editing Rhino scripts outside their runtime. Starting with 0.1.3, NexoRhino sets
python.analysis.diagnosticSeverityOverrides.reportMissingModuleSource to none
in each folder it configures, so this warning does not require a per-file comment.
Pylance applies this rule to the whole folder, not just Rhino imports: missing
runtime-source warnings for other packages in that folder are also silenced.
reportMissingImports and all unrelated diagnostic rules are left unchanged.
Disable restores the original local value, preserving other rules and later user
edits. If you change this severity yourself, automatic refresh respects it;
Repair explicitly reapplies NexoRhino's configuration.
A separate Python interpreter is not required to install the extension or read
its bundled stubs. Select one when you need execution or analysis of other packages.
Scope
This is version 0.1.4 (stable), bundling the NexoRhino-py-stubs 0.1.0a1 baseline.
Coverage of RhinoCommon is partial. Generated signatures and .NET interop details
may need validation inside Rhino. This extension provides editor assistance;
execute your scripts in a compatible Rhino environment. It does not install Rhino
or provide a Python runtime implementation of RhinoCommon.
Links
This is an independent community project. See the
NexoRhino proprietary license.