Files
OpenNest/OpenNest.Engine/Jobs/NestJobProgress.cs
T
ajandClaude Opus 5.5 cd2bea054b feat(desktop): show Auto Nest as a sheet strip with a Keep/Discard review
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>
2026-10-18 23:56:38 -04:00

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; }
}