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

View File

@@ -67,6 +67,11 @@ namespace OpenNest.Geometry
public static List<Entity> Convert(Vector center, double semiMajor, double semiMinor,
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)
endParam += Angle.TwoPI;

View File

@@ -1,6 +1,7 @@
using ACadSharp.Entities;
using CSMath;
using OpenNest.Geometry;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
@@ -68,8 +69,9 @@ namespace OpenNest.IO
{
curvePoints = spline.PolygonalVertexes(precision > 0 ? precision : 200);
}
catch
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Spline curve evaluation failed: {ex.Message}");
curvePoints = null;
}

View File

@@ -70,7 +70,6 @@ public class SolidWorksBendDetectorTests
// changing the entity count. Verify arcs are present and no
// spurious closing chord exists.
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);
Assert.True(arcCount > 0, "Expected arcs from ellipse conversion");