From af00fa36eba1e08260f8b466dfc84c71628fc1d0 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Fri, 6 Mar 2026 19:40:08 -0500 Subject: [PATCH] fix: invert offset side for cutouts in Shape.OffsetEntity Cutouts wind opposite to the perimeter, so using the same OffsetSide expands holes instead of shrinking them. Invert the side for cutouts so the offset buffer correctly contracts holes inward. Co-Authored-By: Claude Opus 4.6 --- OpenNest.Core/Geometry/Shape.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenNest.Core/Geometry/Shape.cs b/OpenNest.Core/Geometry/Shape.cs index 843485d..cb03c34 100644 --- a/OpenNest.Core/Geometry/Shape.cs +++ b/OpenNest.Core/Geometry/Shape.cs @@ -459,8 +459,10 @@ namespace OpenNest.Geometry lastEntity = entity; } + var cutoutSide = side == OffsetSide.Left ? OffsetSide.Right : OffsetSide.Left; + foreach (var cutout in definedShape.Cutouts) - offsetShape.Entities.AddRange(((Shape)cutout.OffsetEntity(distance, side)).Entities); + offsetShape.Entities.AddRange(((Shape)cutout.OffsetEntity(distance, cutoutSide)).Entities); return offsetShape; }