From 1c8a9e83154bfb588c095241ba6bef02962bd933 Mon Sep 17 00:00:00 2001 From: AJ Date: Sat, 22 Nov 2025 23:03:37 -0500 Subject: [PATCH] Clean up and fix service integration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove redundant Document initialization in MainForm - Update CutListService to use SetBins method for MultiBinEngine - Update MultiBinEngine instantiation to follow proper initialization pattern - Ensure spacing is set after bins are configured 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CutList/Forms/MainForm.cs | 2 -- CutList/Services/CutListService.cs | 8 +++----- SawCut/Nesting/MultiBinEngine.cs | 23 +++++++++++++++++++++-- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/CutList/Forms/MainForm.cs b/CutList/Forms/MainForm.cs index 63832c1..71daa6c 100644 --- a/CutList/Forms/MainForm.cs +++ b/CutList/Forms/MainForm.cs @@ -41,8 +41,6 @@ namespace CutList.Forms toolbox = new Toolbox(); cutMethodComboBox.DataSource = toolbox.Tools; - currentDocument = new Document(); - #if DEBUG loadExampleDataButton.Visible = true; #else diff --git a/CutList/Services/CutListService.cs b/CutList/Services/CutListService.cs index 3b0817c..e8c197c 100644 --- a/CutList/Services/CutListService.cs +++ b/CutList/Services/CutListService.cs @@ -27,11 +27,9 @@ namespace CutList.Services var multiBins = ConvertToMultiBins(stockBins); var binItems = ConvertToBinItems(parts); - var engine = new MultiBinEngine - { - Spacing = cuttingTool.Kerf, - Bins = multiBins - }; + var engine = new MultiBinEngine(); + engine.SetBins(multiBins); + engine.Spacing = cuttingTool.Kerf; var packResult = engine.Pack(binItems); return Result.Success(packResult); diff --git a/SawCut/Nesting/MultiBinEngine.cs b/SawCut/Nesting/MultiBinEngine.cs index bec2c34..e4ead14 100644 --- a/SawCut/Nesting/MultiBinEngine.cs +++ b/SawCut/Nesting/MultiBinEngine.cs @@ -15,15 +15,34 @@ namespace SawCut.Nesting public MultiBinEngine(IEngineFactory engineFactory) { _engineFactory = engineFactory ?? throw new ArgumentNullException(nameof(engineFactory)); + _bins = new List(); } - public List Bins { get; set; } + private readonly List _bins; + + /// + /// Gets the read-only collection of bins. + /// Use SetBins() to configure bins for packing. + /// + public IReadOnlyList Bins => _bins.AsReadOnly(); + + /// + /// Sets the bins to use for packing. + /// + public void SetBins(IEnumerable bins) + { + _bins.Clear(); + if (bins != null) + { + _bins.AddRange(bins); + } + } public double Spacing { get; set; } public Result Pack(List items) { - var bins = Bins + var bins = _bins .Where(b => b.Length > 0) .OrderBy(b => b.Priority) .ThenBy(b => b.Length)