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

Uploaded CPython 3.12+Windows x86-64

compas_nest-0.1.1.dev5-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (856.5 kB view details)

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

compas_nest-0.1.1.dev5-cp312-abi3-macosx_11_0_x86_64.whl (734.5 kB view details)

Uploaded CPython 3.12+macOS 11.0+ x86-64

compas_nest-0.1.1.dev5-cp312-abi3-macosx_11_0_arm64.whl (671.8 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: compas_nest-0.1.1.dev5.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.dev5.tar.gz
Algorithm Hash digest
SHA256 a63c901fc48f478b10ed71d9ba7978cfa08b56e7426f4085a9e718368116464f
MD5 5e0a7ace3296ffea3baa0258cc6f018a
BLAKE2b-256 babdd674b0ae6f841b964a0047e35add5c3fca74379ca3e5c887724838af6697

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev5-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2b5ba28a9643d26fb341f7c3bbc050470ab6df1d94b56f82d32d570f836ddb27
MD5 6be152acb89b260685d8fe7d9bfff78f
BLAKE2b-256 cada9e7240f509372abe62d3bde36b326577fd51120e4f34618ce494adb49a52

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev5-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ef700ce3a531537b3978984452e88f6547ff33681c3bb8f1a6588e098c3b323
MD5 919c33109a06369b47c0f037308dfc00
BLAKE2b-256 98280892574e6b3f44e9f96dbcfcab6b4a0b172f35fe89ca05c9cbccdc0b5aec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev5-cp312-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e68f3204859c7ed31af654b942150444709519f46a05de4e16405807e0f56bc6
MD5 fb87325695511497c845fbca11643ea5
BLAKE2b-256 7febf3cd4594ffa8322f6cf051c4520b243772ca3dbffddc78bd0bc21f0a2bcf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for compas_nest-0.1.1.dev5-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e56b74001a4ebf1507c689a7324d9bb071eb306986f96f6b10fb74c5370dde93
MD5 08acf9d96cdb80f4ea2c076945ef7e57
BLAKE2b-256 c2cd6ad5af3f87e570240c6c248d5d7cef4206c5a44d4a10ce49e9d09c9fa79e

See more details on using hashes here.

Provenance

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