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
rhino3dm.py 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 PyPi.org.
pip install rhino3dm
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.
<html>
<!-- stuff -->
<body>
<script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script>
<script>
rhino3dm.then((Module) => {
sphere = new Module.Sphere([1,2,3], 12)
// more stuff
})
</script>
<!-- even more stuff -->
</body>
</html>
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
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