Moves the two production plug-in engines into OpenNest.Engine under names that describe the jobs they suit: - Rectangles: plain and near-rectangular plates, maximal-rectangles box packing (was the RectanglesNestingEngine plug-in) - Irregular: irregular profiles, no-fit-polygon frontier packing (was the Opus55NestingEngine plug-in) Their tests and the shared engine contract/layout test kit move into OpenNest.Engine.Tests/NestingEngines. The registry maps the old plug-in names to the new engines, so saved desktop selections, scripts and API requests keep working, and a leftover plug-in DLL under an old name cannot shadow its replacement. Desktop startup passes the registry's lookup when restoring the saved Auto Nest engine.
27 lines
1.1 KiB
C#
27 lines
1.1 KiB
C#
using OpenNest.CNC;
|
|
using OpenNest.Engine.Jobs;
|
|
using OpenNest.Geometry;
|
|
|
|
namespace OpenNest.Engine.Tests.NestingEngines;
|
|
|
|
public static class JobBuilder
|
|
{
|
|
public static NestJob Job(NestJobPart[] parts, NestPlateStock[] stock, NestJobOptions? options = null) =>
|
|
new(parts, stock, options);
|
|
|
|
public static NestJobPart Part(string id, Program program, int quantity,
|
|
RotationPolicy? rotation = null, int priority = 0) =>
|
|
new(id, PartGeometrySnapshot.FromProgram(program), quantity, priority, rotation);
|
|
|
|
/// <param name="width">Y extent.</param>
|
|
/// <param name="length">X extent.</param>
|
|
public static NestPlateStock Stock(string id, double width, double length, double spacing = 0,
|
|
Spacing edge = default, int quadrant = 1, int? quantity = null) =>
|
|
new(id, new Size(width, length), quantity, spacing, edge, quadrant);
|
|
|
|
public static NestJobPart Rectangle(string id, double w, double h, int count,
|
|
RotationPolicy? rotation = null, double x = 0, double y = 0) =>
|
|
Part(id, Shapes.Polyline((x, y), (x + w, y), (x + w, y + h), (x, y + h)),
|
|
count, rotation ?? RotationPolicy.Fixed(0));
|
|
}
|