refactor: simplify CutOff methods and fix ActionCutOff issues
- Extract MakePoint/AxisBounds/CrossAxisBounds helpers in CutOff to eliminate repeated axis-dependent branching - Simplify BuildProgram loop from 4 code paths to 2 - Use static EmptyExclusions to avoid per-part list allocations - Fix double event subscription in ActionCutOff constructor - Dispose debounce timer in DisconnectEvents - Remove redundant BuildPerimeterCache call in OnMouseDown - Extract TotalCutLength test helper, remove duplicate test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,14 +23,9 @@ namespace OpenNest.Actions
|
||||
: base(plateView)
|
||||
{
|
||||
settings = plateView.CutOffSettings;
|
||||
perimeterCache = Plate.BuildPerimeterCache(plateView.Plate);
|
||||
debounceTimer = new Timer { Interval = 16 };
|
||||
debounceTimer.Tick += OnDebounce;
|
||||
|
||||
plateView.MouseMove += OnMouseMove;
|
||||
plateView.MouseDown += OnMouseDown;
|
||||
plateView.KeyDown += OnKeyDown;
|
||||
plateView.Paint += OnPaint;
|
||||
ConnectEvents();
|
||||
}
|
||||
|
||||
public override void ConnectEvents()
|
||||
@@ -46,6 +41,7 @@ namespace OpenNest.Actions
|
||||
public override void DisconnectEvents()
|
||||
{
|
||||
debounceTimer.Stop();
|
||||
debounceTimer.Dispose();
|
||||
plateView.MouseMove -= OnMouseMove;
|
||||
plateView.MouseDown -= OnMouseDown;
|
||||
plateView.KeyDown -= OnKeyDown;
|
||||
@@ -90,7 +86,6 @@ namespace OpenNest.Actions
|
||||
|
||||
plateView.Plate.CutOffs.Add(cutoff);
|
||||
plateView.Plate.RegenerateCutOffs(settings);
|
||||
perimeterCache = Plate.BuildPerimeterCache(plateView.Plate);
|
||||
plateView.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user