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.post1.tar.gz (11.8 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.post1-cp312-abi3-win_amd64.whl (988.0 kB view details)

Uploaded CPython 3.12+Windows x86-64

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

File metadata

  • Download URL: compas_nest-0.1.1.post1.tar.gz
  • Upload date:
  • Size: 11.8 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.post1.tar.gz
Algorithm Hash digest
SHA256 e242d243bccf1c0be743e474a73efb30506b7f5090068f9fb6c7658ab009b854
MD5 195a9ea75c1e09c47326cd65b88e18ab
BLAKE2b-256 22b4dd49ff96ee7bda91e44700fb15fca59bf61861320ebe82ce945f67b1dd57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 dc926b64c21db47dbb75338d199214bf1a969a741de2faf2863a56a4192493bd
MD5 88157554aaf8a5514608ff386f2e1f17
BLAKE2b-256 dbfc3d442bb68534668766542695bb281bde4b83726a04c77b00afbf791a8401

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 82102a6c5adcf64fe4c6da8058f22bf02803c0f16c1c6524ddf7ce61e616deaa
MD5 81b4194a33126a7044a02874897de07d
BLAKE2b-256 5986e004ed4f613b66c26563ec40e5c60d60aac1f61a1d8dab7af1a6d9a7b369

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post1-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b9b5a7039856e5006ac85db302803583068c6331922c3f7cac72bdf3e01e96df
MD5 5a204ade7636d815c7a436ecf1ece724
BLAKE2b-256 580facfbdd76a59694c787d269d5de3364e48f9c63e29579a2f6f2a22e6985e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80c14a7cfcb2258118321a1c6ad238719ecd50c13b243b8b6be7638862522020
MD5 cc0a5d3d79e6631e49f3e11532d2e5f8
BLAKE2b-256 03090f70fe61faa2a4d71b2aef6461565a7a6c4619df15e42606f269d6eed90e

See more details on using hashes here.

Provenance

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