build: stand alone from the OpenNest repo
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>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# OpenNest Engines
|
||||
|
||||
Independent nesting engine plugins for [OpenNest](https://git.thecozycat.net/aj/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](OpenNest.Engine.Astra/) | Contact-based placement |
|
||||
| [Opus55](OpenNest.Engine.Opus55/) | Frontier-advance no-fit-polygon packing |
|
||||
| [Qwen](OpenNest.Engine.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).
|
||||
|
||||
```powershell
|
||||
./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.
|
||||
Reference in New Issue
Block a user