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

Uploaded CPython 3.12+Windows x86-64

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

File metadata

  • Download URL: compas_nest-0.1.1.dev8.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.dev8.tar.gz
Algorithm Hash digest
SHA256 c249c2b7866012ad7c4479bc9f3098217740d524e6503c11f583607985399659
MD5 cf91bf6606581ed843bf46ada94fd4bc
BLAKE2b-256 ec7395a89a2eb2baebee74afa46daee0668e9221bef1cfdd87ca800c8170627d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev8-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4b053494530f1cfddeb99f1abde6b65a61923e69afc83fb309596400588e91e5
MD5 9808a15a8e0a547b7bb4db31ff54c052
BLAKE2b-256 6493d8a262cc5375331a3c1397c5db0577ad1cb46a0f4242f54917f7e8307b41

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev8-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c65b15cd88f56c0c686a1aaa3df4fb510226ffb062b7542d53300b1959140451
MD5 6030aa64d537fca8808605244b76d9c0
BLAKE2b-256 9f61d8f9a9003ca29c6bf481c83a8726a40d7741ca2534f0bdf79db03c022980

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev8-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ae9a0dab558b3a13dc4de9224fdf1203f8b79ef4bbcfb514f2c43ee6f16fbff4
MD5 55d2d17fa0193d8c14c60329d6fd18d9
BLAKE2b-256 a1de43783e644c3aa8c787e41c2f0bc2e0e685c7727779eae63835ceb995fab6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev8-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dec2a17465a2bf1b9bffa81cdc49bdc68f641c1d44279677f7c431704e61779e
MD5 6c20b06029e192156ff970837a82c17c
BLAKE2b-256 1fbbab4af5f7b458eefaf78b8aacd3f8eadc799ce693276227eb624509a62b9b

See more details on using hashes here.

Provenance

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