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.post2.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.post2-cp312-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.post2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (965.5 kB view details)

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

compas_nest-0.1.1.post2-cp312-abi3-macosx_11_0_x86_64.whl (842.9 kB view details)

Uploaded CPython 3.12+macOS 11.0+ x86-64

compas_nest-0.1.1.post2-cp312-abi3-macosx_11_0_arm64.whl (781.3 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: compas_nest-0.1.1.post2.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.post2.tar.gz
Algorithm Hash digest
SHA256 7f2165aabe6a90c147f5ba4f5827113d48e9cd6dc135aa3aa201b9bf06b07efc
MD5 bb1f72ad7cbe3ecf73285f8ce7bc613d
BLAKE2b-256 a2c9fa48303255c9ce36aa1669ac84591f66a764b2b9c61ef34f86891ef883d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 312acbb54d925aaa0711711af2d685e36310f8f37c1069d3acfcbfb731c47744
MD5 990784204667eadf02dcaa0e54eb25a7
BLAKE2b-256 5abbd4c25e7803e0e14107cb73d81b8e108c645cfb2ecc1630ab32955e0e00bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44c49f388cfdf6d46e6ea6ab040f1467d75f078bab00126abc164665b930ae14
MD5 be8de4d83ae58e35d44331577920d814
BLAKE2b-256 ae99a150407ea334d660b0155c79cc7931aac08c3f5fad220c02f1be856c9d08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post2-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5b8ca23cb6cdfd7c061992f0d0bb7070a15db0a0bae9f98f4f95cdd4fc7ee603
MD5 4e1aa9b378d45ed497b55980a21f1680
BLAKE2b-256 c9dc00971c39891ba98d871525f695a4d13c7dd7f275dba01ceccf8ded4806f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.post2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 17ae49db80adb63549530926a2cc71460f7209cecd0da5297b18af015f61045e
MD5 a16cc389f0f5e04df6683d29074fdcbb
BLAKE2b-256 f8df2f7d4ecb178b079d3c8f7adcaa37c032c3109fce525b63205130418277fc

See more details on using hashes here.

Provenance

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