feat: add cut-off selection, drag-to-reposition, and delete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-22 19:57:26 -04:00
parent 3ea05257eb
commit d4f60d5e8e

View File

@@ -32,6 +32,7 @@ namespace OpenNest.Controls
private Action previousAction;
private CutOffSettings cutOffSettings = new CutOffSettings();
private CutOff selectedCutOff;
private bool draggingCutOff;
protected List<LayoutPart> parts;
private List<LayoutPart> stationaryParts = new List<LayoutPart>();
private List<LayoutPart> activeParts = new List<LayoutPart>();
@@ -234,6 +235,21 @@ namespace OpenNest.Controls
if (e.Button == MouseButtons.Middle)
middleMouseDownPoint = e.Location;
if (e.Button == MouseButtons.Left && currentAction is ActionSelect)
{
var hitCutOff = GetCutOffAtPoint(CurrentPoint, 5.0 / ViewScale);
if (hitCutOff != null)
{
SelectedCutOff = hitCutOff;
draggingCutOff = true;
return;
}
else
{
SelectedCutOff = null;
}
}
base.OnMouseDown(e);
}
@@ -251,6 +267,14 @@ namespace OpenNest.Controls
}
}
if (draggingCutOff && selectedCutOff != null)
{
draggingCutOff = false;
Plate.RegenerateCutOffs(cutOffSettings);
Invalidate();
return;
}
base.OnMouseUp(e);
}
@@ -307,6 +331,13 @@ namespace OpenNest.Controls
lastPoint = e.Location;
if (draggingCutOff && selectedCutOff != null)
{
selectedCutOff.Position = CurrentPoint;
Invalidate();
return;
}
base.OnMouseMove(e);
}
@@ -323,7 +354,17 @@ namespace OpenNest.Controls
switch (e.KeyCode)
{
case Keys.Delete:
RemoveSelectedParts();
if (selectedCutOff != null)
{
Plate.CutOffs.Remove(selectedCutOff);
selectedCutOff = null;
Plate.RegenerateCutOffs(cutOffSettings);
Invalidate();
}
else
{
RemoveSelectedParts();
}
break;
case Keys.F: