refactor: merge DxfImporter and DxfExporter into single static Dxf class
Consolidated two stateless classes into one unified API: Dxf.Import(), Dxf.GetGeometry(), Dxf.ExportPlate(), Dxf.ExportProgram(). Export state moved into a private ExportContext. Removed bool+out pattern from GetGeometry in favor of returning empty list on failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -70,8 +70,7 @@ public class NestRunnerTests
|
||||
var pgm = ConvertGeometry.ToProgram(shape);
|
||||
var path = Path.Combine(Path.GetTempPath(), $"test-{Guid.NewGuid()}.dxf");
|
||||
|
||||
var exporter = new DxfExporter();
|
||||
exporter.ExportProgram(pgm, path);
|
||||
Dxf.ExportProgram(pgm, path);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -35,8 +35,7 @@ public class SolidWorksBendDetectorTests
|
||||
var path = Path.Combine(AppContext.BaseDirectory, "Bending", "TestData", "4526 A14 PT11 Test.dxf");
|
||||
Assert.True(File.Exists(path), $"Test DXF not found: {path}");
|
||||
|
||||
var importer = new OpenNest.IO.DxfImporter();
|
||||
var result = importer.Import(path);
|
||||
var result = OpenNest.IO.Dxf.Import(path);
|
||||
|
||||
// EllipseConverter now produces arcs directly during import,
|
||||
// so the imported entities should contain Arc instances from the ellipses
|
||||
@@ -61,8 +60,7 @@ public class SolidWorksBendDetectorTests
|
||||
var path = Path.Combine(AppContext.BaseDirectory, "Bending", "TestData", "4526 A14 PT11.dxf");
|
||||
Assert.True(File.Exists(path), $"Test DXF not found: {path}");
|
||||
|
||||
var importer = new OpenNest.IO.DxfImporter();
|
||||
var result = importer.Import(path);
|
||||
var result = OpenNest.IO.Dxf.Import(path);
|
||||
|
||||
// The DXF has 2 trimmed ellipses forming an oblong slot.
|
||||
// Trimmed ellipses must not generate a closing chord line.
|
||||
|
||||
@@ -32,8 +32,7 @@ public class BestFitOverlapTests
|
||||
if (!File.Exists(DxfPath))
|
||||
return null;
|
||||
|
||||
var importer = new DxfImporter();
|
||||
importer.GetGeometry(DxfPath, out var geometry);
|
||||
var geometry = Dxf.GetGeometry(DxfPath);
|
||||
var pgm = ConvertGeometry.ToProgram(geometry);
|
||||
return new Drawing("PT16", pgm);
|
||||
}
|
||||
|
||||
@@ -20,8 +20,7 @@ public class EngineOverlapTests
|
||||
if (!System.IO.File.Exists(DxfPath))
|
||||
return null;
|
||||
|
||||
var importer = new DxfImporter();
|
||||
importer.GetGeometry(DxfPath, out var geometry);
|
||||
var geometry = Dxf.GetGeometry(DxfPath);
|
||||
var pgm = ConvertGeometry.ToProgram(geometry);
|
||||
return new Drawing("PT15", pgm);
|
||||
}
|
||||
|
||||
@@ -228,8 +228,7 @@ public class EllipseConverterTests
|
||||
using (var writer = new ACadSharp.IO.DxfWriter(stream, doc, false))
|
||||
writer.Write();
|
||||
|
||||
var importer = new OpenNest.IO.DxfImporter();
|
||||
var result = importer.Import(tempPath);
|
||||
var result = OpenNest.IO.Dxf.Import(tempPath);
|
||||
|
||||
var arcCount = result.Entities.Count(e => e is Arc);
|
||||
var lineCount = result.Entities.Count(e => e is Line);
|
||||
|
||||
@@ -138,8 +138,7 @@ public class GeometrySimplifierTests
|
||||
if (!File.Exists(path))
|
||||
return; // skip if file not available
|
||||
|
||||
var importer = new DxfImporter();
|
||||
var result = importer.Import(path);
|
||||
var result = Dxf.Import(path);
|
||||
var shapes = ShapeBuilder.GetShapes(result.Entities);
|
||||
|
||||
var simplifier = new GeometrySimplifier { Tolerance = 0.004 };
|
||||
|
||||
@@ -11,17 +11,14 @@ public class DxfRoundtripTests
|
||||
private static List<Entity> ExportAndReimport(List<Entity> geometry)
|
||||
{
|
||||
var program = ConvertGeometry.ToProgram(geometry);
|
||||
var exporter = new DxfExporter();
|
||||
var importer = new DxfImporter();
|
||||
|
||||
using var exportStream = new MemoryStream();
|
||||
exporter.ExportProgram(program, exportStream);
|
||||
Dxf.ExportProgram(program, exportStream);
|
||||
var bytes = exportStream.ToArray();
|
||||
|
||||
var importStream = new MemoryStream(bytes);
|
||||
var success = importer.GetGeometry(importStream, out var reimported);
|
||||
var reimported = Dxf.GetGeometry(importStream);
|
||||
|
||||
Assert.True(success, "Failed to re-import exported DXF");
|
||||
Assert.NotEmpty(reimported);
|
||||
return reimported;
|
||||
}
|
||||
|
||||
|
||||
@@ -369,8 +369,7 @@ public class DrawingSplitterTests
|
||||
var writer = new OpenNest.IO.SplitDxfWriter();
|
||||
writer.Write(tempPath, results[0]);
|
||||
|
||||
var reimporter = new OpenNest.IO.DxfImporter();
|
||||
var reimportResult = reimporter.Import(tempPath);
|
||||
var reimportResult = OpenNest.IO.Dxf.Import(tempPath);
|
||||
|
||||
var afterArcs = reimportResult.Entities.OfType<Arc>().Count();
|
||||
var afterCircles = reimportResult.Entities.OfType<Circle>().Count();
|
||||
|
||||
@@ -185,8 +185,7 @@ public class SplitDxfWriterEtchLayerTests
|
||||
writer.Write(tempPath, splitDrawing);
|
||||
|
||||
// Re-import via DxfImporter (same path as CadConverterForm)
|
||||
var importer = new DxfImporter();
|
||||
var result = importer.Import(tempPath);
|
||||
var result = Dxf.Import(tempPath);
|
||||
|
||||
// ETCH entities should be filtered during import (like BEND)
|
||||
var etchEntities = result.Entities
|
||||
|
||||
@@ -23,8 +23,7 @@ public class StrategyOverlapTests
|
||||
if (!System.IO.File.Exists(DxfPath))
|
||||
return null;
|
||||
|
||||
var importer = new DxfImporter();
|
||||
importer.GetGeometry(DxfPath, out var geometry);
|
||||
var geometry = Dxf.GetGeometry(DxfPath);
|
||||
var pgm = ConvertGeometry.ToProgram(geometry);
|
||||
return new Drawing("PT15", pgm);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user