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

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.dev9-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (856.8 kB view details)

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

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

File metadata

  • Download URL: compas_nest-0.1.1.dev9.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.dev9.tar.gz
Algorithm Hash digest
SHA256 6238868efd6f9dc8167547ce175d0b86f2fbafb0a8ed1c830764d2c1b49392a4
MD5 412002fbb165c52a44a9e7fee1e96d5c
BLAKE2b-256 6f5661c7673f11006e8bd0c237374765a8812f907871eab8af5f7c8ba02cd997

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev9-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ea6eaf1ed0bbed5191ed74d14ca87c6a06e2ab88686bbeb86ff33873f783cfa5
MD5 9882a1297905b808e0cde87a370d53a3
BLAKE2b-256 570a31ab4e07d83a466d718ac1772dce103a08640c780d7f9ea3e7eed05039f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev9-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e517899376241dcbbb828537e5e23e9370b021d31644ba138068afba2782be67
MD5 26e0ba5b422f4b2d45ef6bef58959f87
BLAKE2b-256 50430400dbbcb7b3cf904bb17c9184f73cc8e5297fc965ff7646b6f185a4e6a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev9-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0ffa8a88c84b0b531af45c3587701035dd8e9417368ff3d430d9e8b62d53b396
MD5 88ef85cbdc410c0a6a627eb15109afe5
BLAKE2b-256 a5e71f0fd34459361361cab7ed14ab792cbfe8ca41c147aa10e517115f91bec7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev9-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d27c757f4b9ae4dbc57018707fff17e912ad6552bc8076891eb7361dd6332ca6
MD5 dc770e40cc90aa00b4fd23df146d40cf
BLAKE2b-256 ba1aa916f1fbdc06d423d7246bded1e4144d9f953e6f7de83597b15cfbff66cb

See more details on using hashes here.

Provenance

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