rhino3dm is a set of 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, 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.py is a python package that can be used on all current versions of CPython (2.7 and 3.7+) and is available on all platforms (Windows, macOS, Linux) through PyPi.org.
pip install --user 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.
<!DOCTYPE html>
<html>
<!-- stuff -->
<body>
<script src="https://cdn.jsdelivr.net/npm/rhino3dm@0.12.0/rhino3dm.min.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 (formerly known as Rhino3dmIO) allows you to write standalone .NET applications.
We are in transition from compiling Rhino3dm using internal tools to use the code in this repo. If you are not interested in compiling Rhino3dm.NET, then check out the documentation on installing and using Rhino3dmIO packages on nuget
For compiling Rhino3dm.NET from source, see our .NET documentation for details
Some more details and discussions can be found at: