diff --git a/OpenNest.Engine/Fill/AngleCandidateBuilder.cs b/OpenNest.Engine/Fill/AngleCandidateBuilder.cs index 670c459..9f2a1ec 100644 --- a/OpenNest.Engine/Fill/AngleCandidateBuilder.cs +++ b/OpenNest.Engine/Fill/AngleCandidateBuilder.cs @@ -27,7 +27,7 @@ namespace OpenNest.Engine.Fill var angles = new List(baseAngles); - if (NeedsSweep(item, bestRotation, workArea)) + if (ForceFullSweep) AddSweepAngles(angles); if (!ForceFullSweep && angles.Count > 2) @@ -36,18 +36,6 @@ namespace OpenNest.Engine.Fill return angles; } - private bool NeedsSweep(NestItem item, double bestRotation, Box workArea) - { - var testPart = new Part(item.Drawing); - if (!bestRotation.IsEqualTo(0)) - testPart.Rotate(bestRotation); - testPart.UpdateBounds(); - - var partLongestSide = System.Math.Max(testPart.BoundingBox.Width, testPart.BoundingBox.Length); - var workAreaShortSide = System.Math.Min(workArea.Width, workArea.Length); - return workAreaShortSide < partLongestSide || ForceFullSweep; - } - private static void AddSweepAngles(List angles) { var step = Angle.ToRadians(5); diff --git a/OpenNest.Tests/AngleCandidateBuilderTests.cs b/OpenNest.Tests/AngleCandidateBuilderTests.cs index a76313d..fa892a3 100644 --- a/OpenNest.Tests/AngleCandidateBuilderTests.cs +++ b/OpenNest.Tests/AngleCandidateBuilderTests.cs @@ -29,18 +29,16 @@ public class AngleCandidateBuilderTests } [Fact] - public void Build_NarrowWorkArea_ProducesMoreAngles() + public void Build_NarrowWorkArea_UsesBaseAnglesOnly() { var builder = new AngleCandidateBuilder(); var item = new NestItem { Drawing = MakeRectDrawing(20, 10) }; - var wideArea = new Box(0, 0, 100, 100); var narrowArea = new Box(0, 0, 100, 8); // narrower than part's longest side - var wideAngles = builder.Build(item, 0, wideArea); - var narrowAngles = builder.Build(item, 0, narrowArea); + var angles = builder.Build(item, 0, narrowArea); - Assert.True(narrowAngles.Count > wideAngles.Count, - $"Narrow ({narrowAngles.Count}) should have more angles than wide ({wideAngles.Count})"); + // Without ForceFullSweep, narrow areas use only base angles (0° and 90°) + Assert.Equal(2, angles.Count); } [Fact]