feat: add ApplyLeadIns/RemoveLeadIns to Part with CuttingParameters storage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 13:21:09 -04:00
parent 8a712b9755
commit c064c7647a
3 changed files with 163 additions and 3 deletions
+33
View File
@@ -22,6 +22,7 @@ namespace OpenNest
{
private Vector location;
private bool ownsProgram;
private double preLeadInRotation;
public readonly Drawing BaseDrawing;
@@ -56,6 +57,38 @@ namespace OpenNest
public bool HasManualLeadIns { get; set; }
public bool LeadInsLocked { get; set; }
public CNC.CuttingStrategy.CuttingParameters CuttingParameters { get; set; }
public void ApplyLeadIns(CNC.CuttingStrategy.CuttingParameters parameters, Vector approachPoint)
{
preLeadInRotation = Rotation;
var strategy = new CNC.CuttingStrategy.ContourCuttingStrategy { Parameters = parameters };
var result = strategy.Apply(Program, approachPoint);
Program = result.Program;
CuttingParameters = parameters;
HasManualLeadIns = true;
UpdateBounds();
}
public void RemoveLeadIns()
{
var rotation = preLeadInRotation;
var location = Location;
Program = BaseDrawing.Program.Clone() as Program;
ownsProgram = true;
if (!Math.Tolerance.IsEqualTo(rotation, 0))
Program.Rotate(rotation);
Location = location;
HasManualLeadIns = false;
LeadInsLocked = false;
CuttingParameters = null;
UpdateBounds();
}
/// <summary>
/// Gets the rotation of the part in radians.
/// </summary>