What is Rhino3dm?


Rhino3dm is a set of libraries based on the OpenNURBS geometry library. They provide the ability to access and manipulate geometry through .NET, Python or JavaScript applications independent of Rhino.

Functionality includes:

  • Create, interrogate, and store all geometry types supported in Rhino. This includes points, point clouds, NURBS curves and surfaces, polysurfaces (BReps), meshes, annotations, extrusions, and SubDs.
  • Work with non-geometry classes supported in Rhino like layers, object attributes, transforms and viewports.
  • Read and write all of the above information to and from the .3dm file format.
  • Use as a client to make calls into the Rhino.Compute cloud server for advanced manipulation of geometry objects.
  • Available on most platforms (Windows, macOS, Linux).

Rhino3dm is open source.

Explore all of the rhino3dm samples: rhino3dm samples


Rhino3dm is NOT meant for any Rhino plug-in development. You should only be using Rhino3dm if you are attempting to read/write 3dm files from an application other than Rhino!

Rhino3dm comes in three flavors.


Rhino3dm.py is a Python package that can be used on all current versions of CPython (3.7 - 3.11) and is available on all platforms (Windows, macOS, Linux).

Rhino3dm.pys packages are available on the Python Package Index (PyPI).

See our Python documentation for details.


Rhino3dm.js is a JavaScript library with an associated web assembly (rhino3dm.wasm). Rhino3dm.js should run on all major browsers as well as node.js.

Rhino3dm.js packages are available on npm.

See our JavaScript documentation for details.


Rhino3dm.NET, formerly known as Rhino3dmIO, allows you to write standalone .NET applications.

Rhino3dm.NET packages are available on NuGet.