Extracts the fill result scoring contract into IFillComparer with a DefaultFillComparer implementation that preserves the existing count-then-density lexicographic ranking via FillScore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
24 lines
702 B
C#
24 lines
702 B
C#
using OpenNest.Geometry;
|
|
using System.Collections.Generic;
|
|
|
|
namespace OpenNest.Engine.Fill
|
|
{
|
|
/// <summary>
|
|
/// Ranks fill results by count first, then density.
|
|
/// This is the original scoring logic used by DefaultNestEngine.
|
|
/// </summary>
|
|
public class DefaultFillComparer : IFillComparer
|
|
{
|
|
public bool IsBetter(List<Part> candidate, List<Part> current, Box workArea)
|
|
{
|
|
if (candidate == null || candidate.Count == 0)
|
|
return false;
|
|
|
|
if (current == null || current.Count == 0)
|
|
return true;
|
|
|
|
return FillScore.Compute(candidate, workArea) > FillScore.Compute(current, workArea);
|
|
}
|
|
}
|
|
}
|