This repository has been archived on 2026-09-29. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
OpenNest-Engines/README.md
T
aj 9ffb9a3205 docs: archive repository; engines moved into OpenNest as built-ins
Rectangles and Opus55 (now Irregular) live in OpenNest.Engine/NestingEngines
as of OpenNest 3bdefb1. This repository stays read-only for reference.
2026-09-29 21:24:02 -04:00

3.1 KiB

OpenNest Engines (archived)

Archived. The production engines now live in the main OpenNest repository as built-in engines named for the jobs they suit: Rectangles (was OpenNest.Engine.Rectangles) and Irregular (was OpenNest.Engine.Opus55), in OpenNest.Engine/NestingEngines/. See docs/nesting-engines.md there. This repository is kept read-only for reference; Gpt6Astra and Qwen38FlashNext are not carried forward.

Independent nesting engine plugins for OpenNest. Each engine is a standalone class library that OpenNest discovers at runtime via NestingEngineRegistry.LoadPlugins() — drop the DLL into an Engines/ folder next to the OpenNest app or OpenNest.Benchmark build output.

Engine Approach
Gpt6Astra Contact-based placement
Opus55 Frontier-advance no-fit-polygon packing
Qwen38FlashNext Bottom-left greedy insertion over convex NFPs with an exact clearance gate
Rectangles Rectangle lane: maximal-rectangles box packing for plain and near-rectangular parts

Building

Engines compile against an OpenNest checkout, expected as a sibling clone:

src/
  OpenNest/           git clone https://git.thecozycat.net/aj/OpenNest.git
  OpenNest-Engines/   this repo

Use a different location with /p:OpenNestRoot=<path> (or the OpenNestRoot environment variable).

./Build-Engines.ps1                    # build all engines + deploy to the benchmark
./Build-Engines.ps1 -Engines Opus55    # just one
dotnet test OpenNest.Engine.Opus55/tests/OpenNest.Engine.Opus55.Tests.csproj

Each engine's README covers its algorithm and benchmark results.

Engine.Testing/ contains shared xUnit contract tests, shapes, job builders and layout assertions backed by NestLayoutCheck. It is a test dependency, not a plugin; Build-Engines.ps1 only deploys projects in OpenNest.Engine.* directories. All engines require the shared-services APIs in the sibling host checkout. See the PR 5 migration report for validation and benchmark results.

Writing a new engine

./New-Engine.ps1 -Name Nova

This copies _Template/ to OpenNest.Engine.Nova/: an INestingEngine stub, a README spelling out what counts as an independent engine, BENCH-RULES.md (how a model's run works: workspace limits, git, the real-part archive, reporting), and starter acceptance tests checked by the shared NestLayoutCheck (they fail until Solve() is implemented).

To work inside an OpenNest checkout instead, stamp it into an Engines/ folder there and bring the shared build files and test kit along; they detect that layout automatically:

./New-Engine.ps1 -Name Nova -Destination <OpenNest>/Engines -IncludeBuildFiles

Layout

Each engine lives in OpenNest.Engine.<Name>/ with an optional tests/ subproject. Directory.Build.props supplies the target framework and the OpenNest.Engine reference, so an engine's .csproj can be nearly empty.