Skip to content

OpenNest

2D polygonal nesting for Rhino — pack irregular parts onto sheets with minimal waste, fast. Parts and sheets can have holes, small parts nest inside larger parts' holes, and sheets can be non‑rectangular. The engines are native C++.

Get started View on GitHub

OpenNest nesting result

Rhino3D

  •   Rhino Grasshopper


    A full set of components with a live on‑canvas preview, for Grasshopper 1 and 2 — identical inputs, outputs and tutorials in both editors, each with a downloadable example.

    OpenNest2

  •   Rhino Command


    The OpenNest command nests directly in the viewport — select sheets and parts, then bake to layers, carrying each part's markings, colours and object data.

    Rhino command

  •   From code


    Call the same engines directly through a plain C ABI — from C++, C# or Python — with a runnable example for every function.

    APIs

C++, C# & Python

  •   C++


    Two native engines through a plain C ABI; build from source with CMake. Eight self‑contained examples.

    C++ examples

  •   C#


    P/Invoke the same engines from .NET, no Rhino required. The eight examples mirror the C++ set.

    C# examples

  •   Python


    Drive the engines from Python, including the Rhino 8 Script Editor, via compas_nest (pip install compas_nest).

    Python examples

Why OpenNest

  • Any sheet shape

    Sheets don't have to be rectangles — nest into non‑rectangular offcuts and remnants, holes and all.

  • Native C++ speed

    Two self‑contained C++ engines — NFP + genetic algorithm, and a physics/collision solver — with no heavy dependencies.

  • Carries your data

    Markings, colours, text and object attributes travel with each part through placement and baking.

Install

  •   Grasshopper + Rhino command


    In Rhino: run _PackageManager → search OpenNest → Install, then restart Rhino.

    Works on Rhino 8 and 9, Windows and macOS — delivers the Grasshopper 1 components and the OpenNest command.

  •   Grasshopper 2 (Rhino 9 WIP)


    Grasshopper 2 loads manually: after the install above, open Grasshopper 2 and load opennest_gh2.rhp from the package's grasshopper2/ folder.

    Step‑by‑step with screenshots

  •   Python


    Run pip install compas_nest — the same C++ engines from Python, including the Rhino 8 Script Editor.

    Python examples

Installing OpenNest from the Rhino Package Manager

Rhino Package Manager — search “OpenNest”, then Install.

OpenNest in numbers

211'434downloads
50'647users
100+countries
405 289 2018 4'765 2'892 2019 9'644 4'931 2020 23'348 6'754 2021 39'440 8'993 2022 34'332 6'754 2023 42'600 7'786 2024 38'991 8'397 2025 17'909 3'851 2026* downloads / year users / year
Downloads (solid) versus active users (light) each year (food4Rhino, Nov 2018 – Jun 2026; 2026* is a partial year). The gap between the bars is repeat downloading — about four downloads per user.
OpenNest downloads by country
Downloads by country, inferred from each user's email domain. About a third of users have a country‑specific domain; global webmail (Gmail, Outlook…) is country‑agnostic and isn't shown, so some countries — the US especially — are undercounted. Most: China, Germany, Canada, Russia, Italy, Australia, UK, South Korea, Peru.