using System; using System.Collections.Generic; using System.Linq; namespace SawCut.Nesting { public class MultiBinEngine : IEngine { public List Bins { get; set; } public double Spacing { get; set; } public Result Pack(List items) { var bins = Bins .Where(b => b.Length > 0) .OrderBy(b => b.Priority) .ThenBy(b => b.Length) .ToList(); var result = new Result(); var remainingItems = new List(items); foreach (var bin in bins) { var e = new AdvancedFitEngine(); e.MaxBinCount = bin.Quantity; e.StockLength = bin.Length; e.Spacing = Spacing; var r = e.Pack(remainingItems); result.AddBins(r.Bins); remainingItems = r.ItemsNotUsed.ToList(); } result.AddItemsNotUsed(remainingItems); return result; } } }