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:
@@ -32,6 +32,7 @@ namespace OpenNest.Controls
|
|||||||
private Action previousAction;
|
private Action previousAction;
|
||||||
private CutOffSettings cutOffSettings = new CutOffSettings();
|
private CutOffSettings cutOffSettings = new CutOffSettings();
|
||||||
private CutOff selectedCutOff;
|
private CutOff selectedCutOff;
|
||||||
|
private bool draggingCutOff;
|
||||||
protected List<LayoutPart> parts;
|
protected List<LayoutPart> parts;
|
||||||
private List<LayoutPart> stationaryParts = new List<LayoutPart>();
|
private List<LayoutPart> stationaryParts = new List<LayoutPart>();
|
||||||
private List<LayoutPart> activeParts = new List<LayoutPart>();
|
private List<LayoutPart> activeParts = new List<LayoutPart>();
|
||||||
@@ -234,6 +235,21 @@ namespace OpenNest.Controls
|
|||||||
if (e.Button == MouseButtons.Middle)
|
if (e.Button == MouseButtons.Middle)
|
||||||
middleMouseDownPoint = e.Location;
|
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);
|
base.OnMouseDown(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +267,14 @@ namespace OpenNest.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (draggingCutOff && selectedCutOff != null)
|
||||||
|
{
|
||||||
|
draggingCutOff = false;
|
||||||
|
Plate.RegenerateCutOffs(cutOffSettings);
|
||||||
|
Invalidate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
base.OnMouseUp(e);
|
base.OnMouseUp(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,6 +331,13 @@ namespace OpenNest.Controls
|
|||||||
|
|
||||||
lastPoint = e.Location;
|
lastPoint = e.Location;
|
||||||
|
|
||||||
|
if (draggingCutOff && selectedCutOff != null)
|
||||||
|
{
|
||||||
|
selectedCutOff.Position = CurrentPoint;
|
||||||
|
Invalidate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
base.OnMouseMove(e);
|
base.OnMouseMove(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,7 +354,17 @@ namespace OpenNest.Controls
|
|||||||
switch (e.KeyCode)
|
switch (e.KeyCode)
|
||||||
{
|
{
|
||||||
case Keys.Delete:
|
case Keys.Delete:
|
||||||
|
if (selectedCutOff != null)
|
||||||
|
{
|
||||||
|
Plate.CutOffs.Remove(selectedCutOff);
|
||||||
|
selectedCutOff = null;
|
||||||
|
Plate.RegenerateCutOffs(cutOffSettings);
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
RemoveSelectedParts();
|
RemoveSelectedParts();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Keys.F:
|
case Keys.F:
|
||||||
|
|||||||
Reference in New Issue
Block a user