using System.Collections.Generic; using System.IO; using OpenNest.Bending; using OpenNest.Geometry; using OpenNest.IO.Bending; namespace OpenNest.IO { /// /// Shared service that converts a CAD source file into a fully-populated /// . Used by the UI, console, MCP, API, and training /// tools so all code paths produce identical drawings. /// public static class CadImporter { /// /// Load a DXF file, run bend detection, and return a mutable result /// ready for interactive editing or direct conversion to a Drawing. /// public static CadImportResult Import(string path, CadImportOptions options = null) { options ??= CadImportOptions.Default; var dxf = Dxf.Import(path); var bends = new List(); if (options.DetectBends && dxf.Document != null) { bends = options.BendDetectorName == null ? BendDetectorRegistry.AutoDetect(dxf.Document) : BendDetectorRegistry.GetByName(options.BendDetectorName) ?.DetectBends(dxf.Document) ?? new List(); } Bend.UpdateEtchEntities(dxf.Entities, bends); return new CadImportResult { Entities = dxf.Entities, Bends = bends, Bounds = dxf.Entities.GetBoundingBox(), Document = dxf.Document, SourcePath = path, Name = options.Name ?? Path.GetFileNameWithoutExtension(path), }; } } }