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

Uploaded CPython 3.12+Windows x86-64

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

File metadata

  • Download URL: compas_nest-0.1.1.dev6.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.dev6.tar.gz
Algorithm Hash digest
SHA256 b8d107508a69e51538cc8af89f5631660f1ae7018dc5cd0ab941e26721b282b3
MD5 dd04164d903645f3920e4abebfbfdcc8
BLAKE2b-256 99787f33c0daf08793f64c8e0eb1a1e26facc5545797cbd5d714e209b678f38e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev6-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 750684f9ead89fe55e2208d4b5fe0070052fb867a42c231d681fcf12996f5da3
MD5 13dee6057bddfb72cbff0d286517ef12
BLAKE2b-256 d758d225ead244283628eb5b93c79bc50c02ad2f025327f683e17755307f3cde

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev6-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 846f5a72928393eecc8e17844804a670872a3b7d9911aa661a90912bfbc4a64a
MD5 4d791846807f4a218fcfcd5790039ab7
BLAKE2b-256 5be9094d6cbecc0fca27e96dd5eec1a7b9ca0ecb9837b13304fc38be1b6af0c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev6-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 040f53b919c23580f248077c32ca18e71027e4f8b2dfebd00260ecc181dfbbd6
MD5 c1fd78593a1dd0ed3905bb2bcee3edb1
BLAKE2b-256 b6e68a4a2b6a0a57cec2a90a9c5c8e275bc25640c5ced7969652de80697f93cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev6-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6f4d6067991f35e9d424bd8339bb7346721d3121947383f99bbef7e4b8c3d20
MD5 c69b9f7a7beb82b481bb96950ea5e710
BLAKE2b-256 f8e1812481acc41d3a18037b44f38e551a11b926b26987fa2b0dd88b2725272c

See more details on using hashes here.

Provenance

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