ajandClaude Opus 5.5 54e8a0461b fix(qwen38flashnext): number plates in commit order and drop etch marks
BuildResult set PlateIndex to the stock index, so every sheet cut from
the same stock shared one index; OpenNest.Api maps plates by it.

Part geometry filtered only rapids, so scribe/etch moves counted as
material - the bug OpenNest fixed in 1b5e1b1. Use SpecialLayers.IsMaterial.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 07:45:13 -04:00

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
Gpt6Astra Contact-based placement
Opus55 Frontier-advance no-fit-polygon packing
Qwen38FlashNext Bottom-left greedy insertion over convex NFPs with an exact clearance gate

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.

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 benchmark's own NestValidator (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 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.

S
Description
No description provided
Readme MIT
372 KiB
Languages
C# 98.2%
PowerShell 1.8%