using OpenNest.Engine.Fill;
using OpenNest.Geometry;
using System;
using System.Collections.Generic;
using System.Threading;
namespace OpenNest.Engine.Nfp
{
///
/// Result of a nest optimization run.
///
public class OptimizationResult
{
///
/// The best placement sequence found.
///
public List Sequence { get; set; }
///
/// The score achieved by the best sequence.
///
public FillScore Score { get; set; }
///
/// Number of iterations performed.
///
public int Iterations { get; set; }
}
///
/// Interface for nest optimization algorithms that search for the best
/// part ordering and rotation to maximize plate utilization.
///
public interface INestOptimizer
{
OptimizationResult Optimize(List items, Box workArea, NfpCache cache,
Dictionary> candidateRotations,
IProgress progress = null,
CancellationToken cancellation = default);
}
}