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.dev10.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.dev10-cp312-abi3-win_amd64.whl (988.0 kB view details)

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.dev10-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (856.9 kB view details)

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

compas_nest-0.1.1.dev10-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.dev10-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.dev10.tar.gz.

File metadata

  • Download URL: compas_nest-0.1.1.dev10.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.dev10.tar.gz
Algorithm Hash digest
SHA256 563e8a02180ceb7fdb72b9efb043cd16f8669bbfe3f283514ffbf846f9a619f9
MD5 753b30a9f880b6ca309190a2a7c81196
BLAKE2b-256 6752d34f145655e11b47005ca2124d90eea97d3da35746418c4357bc620473af

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev10.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.dev10-cp312-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev10-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 94a37ee9444b66928884cd47f77b9ab350b293bcb9bb10592d83ca1a50e4e071
MD5 c9cde878fe102865b5895e7a9431885a
BLAKE2b-256 76c535d587e9639c49a6641e0331249c5f3b551a87440e501dead3b6a53561c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev10-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.dev10-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev10-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e7b2256baadac0d62760973e14201aa6d96a2500d9cb581c83845a266bdede0
MD5 212ac9de916cd19f77721156e67ade2b
BLAKE2b-256 00b62b112a0c832024bddf5920b534e659ab38d43766ce7f3b925310e59680cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev10-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.dev10-cp312-abi3-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev10-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 3c72fcd6b8090c96e2a2371583d2ca67805bd5f7098050332d1bd571b5cc131c
MD5 b84f65b34aa19941fd0ee22e0dbf4187
BLAKE2b-256 96bb2cd99b230af75f9f1454cb005dc47cacddb85378117c72f796ee2f31a6f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev10-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.dev10-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev10-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5eb6d3b1400dcf3336b5fa51ef9b29af478660703275586a6cc19498e3318326
MD5 af657c20801e979349c47a0c972668aa
BLAKE2b-256 15fc1a3146a21b3df9eeb8d95bf70eb2ffd4ca2faed4bce44cbc7840bab4bd72

See more details on using hashes here.

Provenance

The following attestation bundles were made for compas_nest-0.1.1.dev10-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