mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-27 16:11:07 -04:00
Auto Nest no longer draws parts on the plate view before they are kept: its result is a set of sheets, possibly of several sizes, not parts on the current plate. Ghost parts stay with interactive Fill and remnant tools. - NestJobStage.PlanImproved carries an engine's best whole-job plan so far; Irregular reports one whenever a variant or the tail re-plan beats it. - NestPipeline adds PlanSheets: the plan on detached drawings built from the job geometry (with the caller's names and colors), so previews never touch caller drawings or quantities. - SheetStripControl draws every sheet side by side at one scale, repeats once with their count, captioned with size, parts and utilization. - The progress window shows "Best plan so far"; a review window shows the final sheets, totals, cost summary and unplaced parts before commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace OpenNest.Engine.Jobs;
|
|
|
|
public enum NestJobStage
|
|
{
|
|
EvaluatingCandidate,
|
|
PlateCommitted,
|
|
|
|
/// <summary>
|
|
/// The engine's best whole-job plan so far, in <see cref="NestJobProgress.Plan"/>. Not
|
|
/// validated and possibly replaced by a later plan; never counts as committed.
|
|
/// </summary>
|
|
PlanImproved,
|
|
}
|
|
|
|
/// <summary>
|
|
/// Whole-job progress. Counts change only after a physical sheet commits; LegacyProgress is optional
|
|
/// non-authoritative detail from a plate nester while its candidate remains under evaluation.
|
|
/// </summary>
|
|
public sealed record NestJobProgress(
|
|
NestJobStage Stage,
|
|
string StockId,
|
|
int PlateIndex,
|
|
int CommittedPlates,
|
|
int CommittedParts,
|
|
NestProgress LegacyProgress = null,
|
|
NestJobResult Plan = null
|
|
)
|
|
{
|
|
/// <summary>
|
|
/// <see cref="Plan"/> as displayable sheets, filled in by <see cref="NestPipeline"/> for
|
|
/// <see cref="NestJobStage.PlanImproved"/> reports. Parts use detached drawings built from
|
|
/// the job geometry, so they never touch the caller's drawings or quantities.
|
|
/// </summary>
|
|
public IReadOnlyList<ProposedPlate> PlanSheets { get; init; }
|
|
}
|