Files
OpenNest/OpenNest.Engine/LeadInAssigner.cs
2026-03-30 13:26:43 -04:00

41 lines
1.0 KiB
C#

using OpenNest.Engine.Sequencing;
using OpenNest.Geometry;
using System.Linq;
namespace OpenNest.Engine
{
public class LeadInAssigner
{
public IPartSequencer Sequencer { get; set; }
public void Assign(Plate plate)
{
var parameters = plate.CuttingParameters;
if (parameters == null)
return;
var sequenced = Sequencer.Sequence(plate.Parts.ToList(), plate);
var currentPoint = PlateHelper.GetExitPoint(plate);
foreach (var sp in sequenced)
{
var part = sp.Part;
if (part.LeadInsLocked)
{
currentPoint = part.Location;
continue;
}
if (part.HasManualLeadIns)
part.RemoveLeadIns();
var localApproach = currentPoint - part.Location;
part.ApplyLeadIns(parameters, localApproach);
currentPoint = part.Location;
}
}
}
}