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

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.dev3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (856.0 kB view details)

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

compas_nest-0.1.1.dev3-cp312-abi3-macosx_11_0_x86_64.whl (734.1 kB view details)

Uploaded CPython 3.12+macOS 11.0+ x86-64

compas_nest-0.1.1.dev3-cp312-abi3-macosx_11_0_arm64.whl (671.3 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: compas_nest-0.1.1.dev3.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.dev3.tar.gz
Algorithm Hash digest
SHA256 b18c0c170254cc3134ef99a0a6ccac38c70c5d003e4490daeda3a0136f41d3cf
MD5 2e8b82b8c3eeb6e609395770cc589ff6
BLAKE2b-256 fb65796dd264ce57c971c0120041e5cfa1c14be1d4b5d5e2e391b3f0fc9681c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev3-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f492436a4efe056ebffebdc1d39e36ab33a61c33499c55bbba51a6a7bf63ba32
MD5 0bb44f852230a0e7088b2e40b5ccd17d
BLAKE2b-256 8f494a11da1524ae0650b9cbf9552b534f7bbaa1929523b84aab071a9c1f097f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd0c612e3e3c2291c02327b387e0e6f2a430020ee7851edb8334f6fc11161bd1
MD5 140e91a7ac1e5f121162c80e73d8ee6e
BLAKE2b-256 f65eeeca65567bf3571213a65cca85475215bfd1f8069f73dd1a5cd079f826ff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev3-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e4cf69d6597a4f0f884d7399163f2809cee187dea0c517c25aa7101150954b7c
MD5 14c1f5530ac6208a6479ba3a0c73638d
BLAKE2b-256 54f8b70eaf663f21b952130a30db51b2b5c90593c7ef427e684b91591eb69dbd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev3-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a66fb7e1171f7bc0293f1dd6249774e5f0da1e9fa8b08c82eb5b458f69aea8c
MD5 823e4216a7179a156dcc5f5e00687159
BLAKE2b-256 3cea5b2c7daf2dc742ec9b98f805156dede604dcf95b0e1f8afc87d1155e9f16

See more details on using hashes here.

Provenance

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