All 132 OpenNest.Engine source files now declare namespaces matching their nested directories: Jobs/, Jobs/Placement/, Jobs/Adapters/, Fill/, RectanglePacking/, CirclePacking/, and engine-root types moved from 'OpenNest' to 'OpenNest.Engine'. RootNamespace updated accordingly. Consumers (Api, Console, Mcp, Benchmark, Training, desktop app, tests) gained the explicit usings the move requires; CLAUDE.md updated.
32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using System;
|
|
|
|
using OpenNest.Engine.Jobs.Adapters;
|
|
using OpenNest.Engine.Jobs.Placement;
|
|
namespace OpenNest.Engine.Jobs;
|
|
|
|
/// <summary>
|
|
/// Instance-scoped strategy resolution for the whole-job runner. Default and Strip resolve to the
|
|
/// migrated built-in plate nesters; the remnant strategies still use the legacy adapter during
|
|
/// rollout. The process-global NestEngineRegistry (including plugin registrations and
|
|
/// ActiveEngineName) is neither read nor modified. Unknown keys reject.
|
|
/// </summary>
|
|
public static class PlateNesterFactory
|
|
{
|
|
public static IPlateNester Create(string strategy)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(strategy);
|
|
return strategy switch
|
|
{
|
|
"Default" => new DefaultPlateNester(),
|
|
"Strip" => new StripPlateNester(),
|
|
"Vertical Remnant" => new LegacyPlateNesterAdapter(plate => new VerticalRemnantEngine(
|
|
plate
|
|
)),
|
|
"Horizontal Remnant" => new LegacyPlateNesterAdapter(
|
|
plate => new HorizontalRemnantEngine(plate)
|
|
),
|
|
_ => throw new NotSupportedException($"Unknown placement strategy: {strategy}."),
|
|
};
|
|
}
|
|
}
|