From 884817c5f9e93969dcf992854e09e692558c501c Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Fri, 20 Mar 2026 14:43:31 -0400 Subject: [PATCH] fix: normalize best-fit pairs to landscape and fix viewer size swap Normalize pair bounding box to landscape (width >= height) in PairEvaluator for consistent display and filtering. Fix BestFitViewerForm where BoundingWidth/BoundingHeight were passed in the wrong order to the plate Size constructor. Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest.Engine/BestFit/PairEvaluator.cs | 10 ++++++++++ OpenNest/Forms/BestFitViewerForm.cs | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/OpenNest.Engine/BestFit/PairEvaluator.cs b/OpenNest.Engine/BestFit/PairEvaluator.cs index 591b4b4..51e7ce2 100644 --- a/OpenNest.Engine/BestFit/PairEvaluator.cs +++ b/OpenNest.Engine/BestFit/PairEvaluator.cs @@ -1,6 +1,7 @@ using OpenNest.Converters; using OpenNest.Engine.Fill; using OpenNest.Geometry; +using OpenNest.Math; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -67,6 +68,15 @@ namespace OpenNest.Engine.BestFit var trueArea = drawing.Area * 2; + // Normalize to landscape (width >= height) for consistent display. + if (bestHeight > bestWidth) + { + var tmp = bestWidth; + bestWidth = bestHeight; + bestHeight = tmp; + bestRotation += Angle.HalfPI; + } + return new BestFitResult { Candidate = candidate, diff --git a/OpenNest/Forms/BestFitViewerForm.cs b/OpenNest/Forms/BestFitViewerForm.cs index f483a16..86ccd6d 100644 --- a/OpenNest/Forms/BestFitViewerForm.cs +++ b/OpenNest/Forms/BestFitViewerForm.cs @@ -291,8 +291,8 @@ namespace OpenNest.Forms cell.PartColor = partColor; cell.Dock = DockStyle.Fill; cell.Plate.Size = new Geometry.Size( - result.BoundingHeight, - result.BoundingWidth); + result.BoundingWidth, + result.BoundingHeight); var parts = result.BuildParts(drawing);