/rhino3dm

Libraries based on OpenNURBS with a RhinoCommon style

Primary LanguageC#MIT LicenseMIT

rhino3dm

workflow ci Discourse users PyPI NuGet NuGet npm

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 (Python)

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.js packages are available on pypi: https://pypi.org/project/rhino3dm/

pip install --user rhino3dm

See our python documentation for details

rhino3dm.js (JavaScript and node.js)

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: https://www.npmjs.com/package/rhino3dm

<!DOCTYPE html>

<body>

  <!-- Import maps polyfill -->
  <!-- Remove this when import maps will be widely supported -->
  <script async src="https://unpkg.com/es-module-shims@1.8.0/dist/es-module-shims.js"></script>

  <script type="importmap">
      {
          "imports": {
            "rhino3dm":"https://cdn.jsdelivr.net/npm/rhino3dm@8.0.0-beta2/rhino3dm.module.min.js"
          }
      }
  </script>

  <script type="module">

    import rhino3dm from 'rhino3dm'
    const rhino = await rhino3dm()
    const sphere = new rhino.Sphere( [1,2,3,], 12 )
    console.log(sphere.diameter)

  </script>

</body>

</html>

See our javascript documentation for details

Rhino3dm.NET

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

rhino3dm.net packages are available on nuget: https://www.nuget.org/packages/Rhino3dm/

From this repository we build macOS, windows, and linux packages in various runtimes which all all delivered via the nuget package.

More

Some more details and discussions can be found at: