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.post3.tar.gz (11.9 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.post3-cp312-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.post3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (965.9 kB view details)

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

compas_nest-0.1.1.post3-cp312-abi3-macosx_11_0_x86_64.whl (843.3 kB view details)

Uploaded CPython 3.12+macOS 11.0+ x86-64

compas_nest-0.1.1.post3-cp312-abi3-macosx_11_0_arm64.whl (781.7 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: compas_nest-0.1.1.post3.tar.gz
  • Upload date:
  • Size: 11.9 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.post3.tar.gz
Algorithm Hash digest
SHA256 53095df22472762a4c44e98af09a17e175b71bd1b048531b5b7b2d066ab1cdb6
MD5 c13d8f468f3971a6cd54c5703e213f34
BLAKE2b-256 0d05b6866c2817bcc979729ffd994fdb74c889c0cc84a53dd3f79a63e0fc785e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post3-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 513e7e0643a260e44572c3cb3640868e194a6bda33beed66f7f1a427aefcb4e8
MD5 0982283fe7dcf3f3e29fe7dcb6b01f5e
BLAKE2b-256 7e6a5a788e0cfa5c3136c688d4b3153605c10b6473e31eca72122639aaface4c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 512cf62a31a22af6b62a7fe2595c2b4b960a3b6f1ce004502d959f7b64ede05b
MD5 a25e5db7874c5b2fecde10bf4ae721bb
BLAKE2b-256 612deddf298a72ae3d0e3c30a77424a51e7023650dcae6cdcb87cc3714a816b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post3-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 22e955005b51617525d5fe465db8018240f788ede78b341406e30822725b6d20
MD5 f53e14e4a028a29a74ee7e53cc8ffe70
BLAKE2b-256 b3c925730d393f7e1f7a9422360e7f0e8e4e7d3250ac6aedb904f9d1676c49d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post3-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a1009800c5be72467cde5b6599f210161e08352cc3796d2271704a280067ddb
MD5 8ca4fa0a6bf83d026733dde245c51738
BLAKE2b-256 18b617b913f72278bb458ff411111e33e139cf63badffbf10a0b074e4f7f4c23

See more details on using hashes here.

Provenance

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