diff --git a/OpenNest.Core/CNC/CuttingStrategy/AssignmentParameters.cs b/OpenNest.Core/CNC/CuttingStrategy/AssignmentParameters.cs new file mode 100644 index 0000000..cfd48ba --- /dev/null +++ b/OpenNest.Core/CNC/CuttingStrategy/AssignmentParameters.cs @@ -0,0 +1,9 @@ +namespace OpenNest.CNC.CuttingStrategy +{ + public class AssignmentParameters + { + public SequenceMethod Method { get; set; } = SequenceMethod.Advanced; + public string Preference { get; set; } = "ILAT"; + public double MinGeometryLength { get; set; } = 0.01; + } +} diff --git a/OpenNest.Core/CNC/CuttingStrategy/ContourType.cs b/OpenNest.Core/CNC/CuttingStrategy/ContourType.cs new file mode 100644 index 0000000..9205913 --- /dev/null +++ b/OpenNest.Core/CNC/CuttingStrategy/ContourType.cs @@ -0,0 +1,9 @@ +namespace OpenNest.CNC.CuttingStrategy +{ + public enum ContourType + { + External, + Internal, + ArcCircle + } +} diff --git a/OpenNest.Core/CNC/CuttingStrategy/CuttingParameters.cs b/OpenNest.Core/CNC/CuttingStrategy/CuttingParameters.cs new file mode 100644 index 0000000..3f7323c --- /dev/null +++ b/OpenNest.Core/CNC/CuttingStrategy/CuttingParameters.cs @@ -0,0 +1,30 @@ +namespace OpenNest.CNC.CuttingStrategy +{ + public class CuttingParameters + { + public int Id { get; set; } + + public string MachineName { get; set; } + public string MaterialName { get; set; } + public string Grade { get; set; } + public double Thickness { get; set; } + + public double Kerf { get; set; } + public double PartSpacing { get; set; } + + public LeadIn ExternalLeadIn { get; set; } = new NoLeadIn(); + public LeadOut ExternalLeadOut { get; set; } = new NoLeadOut(); + + public LeadIn InternalLeadIn { get; set; } = new LineLeadIn { Length = 0.125, ApproachAngle = 90 }; + public LeadOut InternalLeadOut { get; set; } = new NoLeadOut(); + + public LeadIn ArcCircleLeadIn { get; set; } = new NoLeadIn(); + public LeadOut ArcCircleLeadOut { get; set; } = new NoLeadOut(); + + public Tab TabConfig { get; set; } + public bool TabsEnabled { get; set; } + + public SequenceParameters Sequencing { get; set; } = new SequenceParameters(); + public AssignmentParameters Assignment { get; set; } = new AssignmentParameters(); + } +} diff --git a/OpenNest.Core/CNC/CuttingStrategy/SequenceParameters.cs b/OpenNest.Core/CNC/CuttingStrategy/SequenceParameters.cs new file mode 100644 index 0000000..910d333 --- /dev/null +++ b/OpenNest.Core/CNC/CuttingStrategy/SequenceParameters.cs @@ -0,0 +1,27 @@ +namespace OpenNest.CNC.CuttingStrategy +{ + // Values match PEP Technology's numbering scheme (value 6 intentionally skipped) + public enum SequenceMethod + { + RightSide = 1, + LeastCode = 2, + Advanced = 3, + BottomSide = 4, + EdgeStart = 5, + LeftSide = 7, + RightSideAlt = 8 + } + + public class SequenceParameters + { + public SequenceMethod Method { get; set; } = SequenceMethod.Advanced; + public double SmallCutoutWidth { get; set; } = 1.5; + public double SmallCutoutHeight { get; set; } = 1.5; + public double MediumCutoutWidth { get; set; } = 8.0; + public double MediumCutoutHeight { get; set; } = 8.0; + public double DistanceMediumSmall { get; set; } + public bool AlternateRowsColumns { get; set; } = true; + public bool AlternateCutoutsWithinRowColumn { get; set; } = true; + public double MinDistanceBetweenRowsColumns { get; set; } = 0.25; + } +}