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

Uploaded CPython 3.12+Windows x86-64

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

File metadata

  • Download URL: compas_nest-0.1.1.dev11.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.dev11.tar.gz
Algorithm Hash digest
SHA256 c38be69519c4f6c0e302eec98b84a2007b60801f9aaee61bed5edd0e0783d078
MD5 b11fa853b94e69c9dc1ca4af94e922b5
BLAKE2b-256 a644a7a2a0895c4792ccbb2728d32f23bb948b7730d468b8131abf882843648b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev11-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 399bae3059601cdf898827c471a231485d4416e40d81d8f7dd4aa4ef723854f7
MD5 18817069b9ba5722165bff85863a8c82
BLAKE2b-256 af13f958a5b00a804fd3cbf377f4905922781c5b55c2c3316ba7248338aa5ccb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev11-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf96d02487f40b75a40ee92bad81db3229477923af6875f587d21a02c88b1e46
MD5 95997852406d82405c823615be3bd968
BLAKE2b-256 ef599e293b51e720661ba1f634e2aa581263420604fd9b55f8fc37caad147786

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev11-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a2ee7d43ab829a06fc8187dc8ce50db5d820ca4e1a31f0c7e21c2f9720531db7
MD5 348ebf838d42fe893d00ced124e42a7a
BLAKE2b-256 98fc4d1957ff4f11df40a9705e6c1e78bf46dd3716ae1e4ed0cab60bdc23c292

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev11-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b04fbb665463203558b728f55efe2ca728de542a0bb196633aeb951ed030ecd7
MD5 406cb294c6161260c6961df805a272f6
BLAKE2b-256 bf7c19cede8c30c89708cb5341c51f198cfcd0492bcec1b4516fed5201acef2d

See more details on using hashes here.

Provenance

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