Skip to main content

2D irregular nesting (OpenNest) for COMPAS.

Project description

compas_nest

Documentation: https://petrasvestartas.github.io/compas_nest/

2D irregular nesting for the COMPAS framework — Python bindings for the OpenNest C++ engines, built with nanobind.

Nest polylines with holes into sheets with holes, with live terminal progress and compas_viewer visualization.

compas_nest

Two engines

Class Engine Notes
opennest_collision physics / overlap-relaxation (np_nest) dependency-free; iteration-budget driven; nests parts into holes
opennest NFP + genetic algorithm (nfp_nest) bundled Clipper2; generation/fitness driven; carries part attributes through placement

Install

pip install compas_nest

From source (editable)

One-step (uv, macOS + Windows Git Bash + Linux): creates a local .venv, installs every dependency, and builds the package:

git clone --recurse-submodules https://github.com/petrasvestartas/compas_nest.git
cd compas_nest
bash bash/install.sh

After editing C++ sources, rebuild without recreating the env: bash bash/build.sh --test.

conda:

conda env create -f environment.yml
conda activate compas_nest
pip install --no-build-isolation -ve .

plain pip:

pip install nanobind "scikit-build-core[pyproject]"
pip install --no-build-isolation -ve .

The C++ engine sources live under external/nest/ (nest_physics_cpp/ + opennest_cpp/, the latter bundling Clipper2 and a minimal Boost subset). They are self-contained — no CGAL/Boost/Eigen download is needed.

Quick start

from compas.geometry import Polyline
from compas_nest import nest_geo, nest_sheets, opennest_collision

def rect(x0, y0, w, h):
    return Polyline([[x0, y0, 0], [x0+w, y0, 0], [x0+w, y0+h, 0], [x0, y0+h, 0], [x0, y0, 0]])

geo = nest_geo()
geo.add_part(rect(0, 0, 20, 10), copies=3)
geo.add_part(rect(0, 0, 15, 15), holes=[rect(5, 5, 5, 5)], copies=2)

sheets = nest_sheets()
sheets.add_sheet(rect(0, 0, 100, 100), holes=[rect(40, 40, 10, 10)])

result = opennest_collision(iterations=2000, num_rotations=64).solve(geo, sheets)

for group in result.placed_polylines():
    print("sheet", group["sheet_id"], "->", len(group["parts"]), "parts")

# serialize placed polylines (with holes) + transformations to COMPAS JSON
result.to_json("data/output/quickstart.json")

See the examples/ folder for the viewer workflows, and the documentation for examples, API reference and credits.

License & credits

MIT — see LICENSE. Attributions for the underlying work are in CREDITS.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compas_nest-0.1.1.dev7.tar.gz (11.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

compas_nest-0.1.1.dev7-cp312-abi3-win_amd64.whl (987.9 kB view details)

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.dev7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (856.8 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_x86_64.whl (734.9 kB view details)

Uploaded CPython 3.12+macOS 11.0+ x86-64

compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_arm64.whl (672.1 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

Details for the file compas_nest-0.1.1.dev7.tar.gz.

File metadata

  • Download URL: compas_nest-0.1.1.dev7.tar.gz
  • Upload date:
  • Size: 11.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for compas_nest-0.1.1.dev7.tar.gz
Algorithm Hash digest
SHA256 28488e1b8566ce4c7ca7bb28e21e43e515ee248c72eebc02df7fede214e3ff0a
MD5 07ac7e68fd987646c8f6dd2d19937158
BLAKE2b-256 8d522d623726d3b7e9f905d441e06d001a4a383b171d5c38ce641bf5fc6261d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev7.tar.gz:

Publisher: build.yml on petrasvestartas/compas_nest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file compas_nest-0.1.1.dev7-cp312-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev7-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b58d89e812abf4c2101baf5360f8cfb0779c4eafdebf9a4aa8123264e8413a6a
MD5 c41b82ed046cb2dfcd472633a54c5bf1
BLAKE2b-256 0b7e46373446db267a341ce20818e4df627da1619341c90b6cabde1b8a5c8569

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev7-cp312-abi3-win_amd64.whl:

Publisher: build.yml on petrasvestartas/compas_nest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file compas_nest-0.1.1.dev7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4cb7ac5489f6cc63d2163d1cfe9e8512d88addc8a6003fa0810ba2d4004e9bc
MD5 0ee0c6c4328ba96d7159407eeab1435e
BLAKE2b-256 d2bc6ef5a47c21228d47698e40d7ffb0e1f611342ed5f603991dbae7d7baeab9

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on petrasvestartas/compas_nest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 29b75529849ce3f7f3fec5e60cca70bba0f77ab79b689da7feae0eef83174785
MD5 ae08a895735113e274defc910748fe52
BLAKE2b-256 0e1cb5f88c9131900982c6f051b0f21557a813af1f3303a919a24ba8d3cceb87

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_x86_64.whl:

Publisher: build.yml on petrasvestartas/compas_nest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4907f7673cf786a15a282091f1d077860143db4b580359917c852422cf47baae
MD5 0e5fa3c95b9e2766ad73c40366ee1138
BLAKE2b-256 0f3fdf3216c3ec56727f4e680892e9d5d8548a9c1b6c791eefee13c7878ae7f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev7-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: build.yml on petrasvestartas/compas_nest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page