using System.Collections.Generic; using OpenNest.Engine.Fill; using OpenNest.Engine.Jobs.Placement.Fillers; using OpenNest.Engine.Strategies; using OpenNest.Geometry; namespace OpenNest.Engine { /// /// Optimizes for the largest top-side horizontal drop. /// public class HorizontalRemnantEngine : DefaultNestEngine { public HorizontalRemnantEngine(Plate plate) : base(plate) { } public override string Name => "Horizontal Remnant"; public override string Description => "Optimizes for largest top-side horizontal drop"; protected override IFillComparer CreateComparer() => RemnantFillPolicy.Horizontal.CreateComparer(); public override NestDirection? PreferredDirection => RemnantFillPolicy.Horizontal.PreferredDirection; public override ShrinkAxis TrimAxis => RemnantFillPolicy.Horizontal.TrimAxis; public override List BuildAngles( NestItem item, ClassificationResult classification, Box workArea ) => RemnantFillPolicy.Horizontal.BuildAngles(item, classification); internal override DefaultPlateFiller CreateFiller(Plate plate) => CreateRemnantFiller(plate, RemnantFillPolicy.Horizontal); } }