cfce48495250bbe2a8fdc528056ac089f750592c
Engines are moving out of OpenNest so they can be published on their own and so OpenNest checkouts handed to a model for an engine-building run no longer contain the competing engines. History for Engines/ (and the pre-move root-level engine folders) was carried over with git filter-repo. Engines now build against a sibling OpenNest clone via $(OpenNestRoot), overridable with /p:OpenNestRoot, with a clear error when it is missing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OpenNest Engines
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 |
|---|---|
| Astra | Contact-based placement |
| Opus55 | Frontier-advance no-fit-polygon packing |
| Qwen | Scaffold — not yet implemented |
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.
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.
Languages
C#
98.2%
PowerShell
1.8%