Python library based on OpenNURBS with a RhinoCommon style

javascript-library, opennurbs, python, python3, rhino3d, rhinocommon, wasm
pip install rhino3dm==0.4.0



CircleCI Build status Discourse users YouTrack issues

PyPI NuGet npm

rhino3dm is a set of standalone libraries based on the OpenNURBS geometry library with a "RhinoCommon" style. This provides 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 (B-Reps), meshes, annotations, and extrusions.
  • 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)

For bug reports or feature requests see the contributing guide (Python) is a python package that can be used on all current versions of CPython (both 2.7 and 3.7) and is available on all platforms (Windows, macOS, Linux) through

pip install rhino3dm

See our python documentation for details

rhino3dm.js (Javascript/web assembly)

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.

  <!-- stuff -->
    <script type="text/javascript" src=""></script>
      rhino3dm.then((Module) => {
        sphere = new Module.Sphere([1,2,3], 12)
        // more stuff
    <!-- even more stuff -->

See our javascript documentation for details


Rhino3dm.NET (a.k.a. Rhino3dmIO) allows you to write standalone .NET applications.

See the documentation on installing and using Rhino3dmIO packages on nuget

How to Participate

The libraries are still very new and changing rapidly (with the exception of Rhino3dm.NET). Give them a try or get involved.

Up to date technical information can also be found on Steve Baer's Blog