diff --git a/src/core/tools/tool_import_dxf.cpp b/src/core/tools/tool_import_dxf.cpp index 25393c81d..72807a614 100644 --- a/src/core/tools/tool_import_dxf.cpp +++ b/src/core/tools/tool_import_dxf.cpp @@ -45,9 +45,6 @@ ToolResponse ToolImportDXF::begin(const ToolArgs &args) for (const auto &it : unsupported) { s += std::to_string(it.second) + " "; switch (it.first) { - case DXFImporter::UnsupportedType::CIRCLE: - s += "Circle"; - break; case DXFImporter::UnsupportedType::ELLIPSE: s += "Ellipse"; break; diff --git a/src/import_dxf/dxf_importer.cpp b/src/import_dxf/dxf_importer.cpp index 0ccf6be2a..bf60bd11c 100644 --- a/src/import_dxf/dxf_importer.cpp +++ b/src/import_dxf/dxf_importer.cpp @@ -134,9 +134,29 @@ class DXFAdapter : public DL_CreationAdapter { items_unsupported.emplace(type, 0); } - void addCircle(const DL_CircleData &) override + void addCircle(const DL_CircleData &c) override { - add_unsupported(DXFImporter::UnsupportedType::CIRCLE); + auto center = get_or_create_junction(c.cx, c.cy); + auto p1 = get_or_create_junction(c.cx + c.radius, c.cy); + auto p2 = get_or_create_junction(c.cx - c.radius, c.cy); + { + auto arc = core->insert_arc(UUID::random()); + arcs_out.insert(arc); + arc->layer = layer; + arc->width = width; + arc->center = center; + arc->from = p1; + arc->to = p2; + } + { + auto arc = core->insert_arc(UUID::random()); + arcs_out.insert(arc); + arc->layer = layer; + arc->width = width; + arc->center = center; + arc->from = p2; + arc->to = p1; + } } void addEllipse(const DL_EllipseData &) override diff --git a/src/import_dxf/dxf_importer.hpp b/src/import_dxf/dxf_importer.hpp index e91b91fd8..4591fe6b2 100644 --- a/src/import_dxf/dxf_importer.hpp +++ b/src/import_dxf/dxf_importer.hpp @@ -17,7 +17,7 @@ class DXFImporter { std::set lines; std::set arcs; - enum class UnsupportedType { CIRCLE, ELLIPSE, SPLINE }; + enum class UnsupportedType { ELLIPSE, SPLINE }; const std::map &get_items_unsupported() const;