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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user