Clean up and fix service integration

- 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 <noreply@anthropic.com>
This commit is contained in:
AJ
2025-11-22 23:03:37 -05:00
parent b1137f6b19
commit 1c8a9e8315
3 changed files with 24 additions and 9 deletions

View File

@@ -41,8 +41,6 @@ namespace CutList.Forms
toolbox = new Toolbox(); toolbox = new Toolbox();
cutMethodComboBox.DataSource = toolbox.Tools; cutMethodComboBox.DataSource = toolbox.Tools;
currentDocument = new Document();
#if DEBUG #if DEBUG
loadExampleDataButton.Visible = true; loadExampleDataButton.Visible = true;
#else #else

View File

@@ -27,11 +27,9 @@ namespace CutList.Services
var multiBins = ConvertToMultiBins(stockBins); var multiBins = ConvertToMultiBins(stockBins);
var binItems = ConvertToBinItems(parts); var binItems = ConvertToBinItems(parts);
var engine = new MultiBinEngine var engine = new MultiBinEngine();
{ engine.SetBins(multiBins);
Spacing = cuttingTool.Kerf, engine.Spacing = cuttingTool.Kerf;
Bins = multiBins
};
var packResult = engine.Pack(binItems); var packResult = engine.Pack(binItems);
return Result<SawCut.Nesting.Result>.Success(packResult); return Result<SawCut.Nesting.Result>.Success(packResult);

View File

@@ -15,15 +15,34 @@ namespace SawCut.Nesting
public MultiBinEngine(IEngineFactory engineFactory) public MultiBinEngine(IEngineFactory engineFactory)
{ {
_engineFactory = engineFactory ?? throw new ArgumentNullException(nameof(engineFactory)); _engineFactory = engineFactory ?? throw new ArgumentNullException(nameof(engineFactory));
_bins = new List<MultiBin>();
} }
public List<MultiBin> Bins { get; set; } private readonly List<MultiBin> _bins;
/// <summary>
/// Gets the read-only collection of bins.
/// Use SetBins() to configure bins for packing.
/// </summary>
public IReadOnlyList<MultiBin> Bins => _bins.AsReadOnly();
/// <summary>
/// Sets the bins to use for packing.
/// </summary>
public void SetBins(IEnumerable<MultiBin> bins)
{
_bins.Clear();
if (bins != null)
{
_bins.AddRange(bins);
}
}
public double Spacing { get; set; } public double Spacing { get; set; }
public Result Pack(List<BinItem> items) public Result Pack(List<BinItem> items)
{ {
var bins = Bins var bins = _bins
.Where(b => b.Length > 0) .Where(b => b.Length > 0)
.OrderBy(b => b.Priority) .OrderBy(b => b.Priority)
.ThenBy(b => b.Length) .ThenBy(b => b.Length)