fix: address review findings — input validation, exception handling, cleanup

Add argument validation to EllipseConverter.Convert for tolerance and
semi-axis parameters. Narrow bare catch in Extensions.cs spline method
to log via Debug.WriteLine. Remove unused lineCount variable from
SolidWorksBendDetectorTests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-27 15:34:13 -04:00
parent 9b460f77e5
commit a34811bb6d
3 changed files with 8 additions and 2 deletions
@@ -67,6 +67,11 @@ namespace OpenNest.Geometry
public static List<Entity> Convert(Vector center, double semiMajor, double semiMinor, public static List<Entity> Convert(Vector center, double semiMajor, double semiMinor,
double rotation, double startParam, double endParam, double tolerance = 0.001) double rotation, double startParam, double endParam, double tolerance = 0.001)
{ {
if (tolerance <= 0)
throw new ArgumentOutOfRangeException(nameof(tolerance), "Tolerance must be positive.");
if (semiMajor <= 0 || semiMinor <= 0)
throw new ArgumentOutOfRangeException("Semi-axis lengths must be positive.");
if (endParam <= startParam) if (endParam <= startParam)
endParam += Angle.TwoPI; endParam += Angle.TwoPI;
+3 -1
View File
@@ -1,6 +1,7 @@
using ACadSharp.Entities; using ACadSharp.Entities;
using CSMath; using CSMath;
using OpenNest.Geometry; using OpenNest.Geometry;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
@@ -68,8 +69,9 @@ namespace OpenNest.IO
{ {
curvePoints = spline.PolygonalVertexes(precision > 0 ? precision : 200); curvePoints = spline.PolygonalVertexes(precision > 0 ? precision : 200);
} }
catch catch (Exception ex)
{ {
System.Diagnostics.Debug.WriteLine($"Spline curve evaluation failed: {ex.Message}");
curvePoints = null; curvePoints = null;
} }
@@ -70,7 +70,6 @@ public class SolidWorksBendDetectorTests
// changing the entity count. Verify arcs are present and no // changing the entity count. Verify arcs are present and no
// spurious closing chord exists. // spurious closing chord exists.
var arcCount = result.Entities.Count(e => e is OpenNest.Geometry.Arc); var arcCount = result.Entities.Count(e => e is OpenNest.Geometry.Arc);
var lineCount = result.Entities.Count(e => e is OpenNest.Geometry.Line);
var circleCount = result.Entities.Count(e => e is OpenNest.Geometry.Circle); var circleCount = result.Entities.Count(e => e is OpenNest.Geometry.Circle);
Assert.True(arcCount > 0, "Expected arcs from ellipse conversion"); Assert.True(arcCount > 0, "Expected arcs from ellipse conversion");