diff --git a/src/ifcgeom/kernels/opencascade/loop.cpp b/src/ifcgeom/kernels/opencascade/loop.cpp index 1e51cb2893..30239349f0 100644 --- a/src/ifcgeom/kernels/opencascade/loop.cpp +++ b/src/ifcgeom/kernels/opencascade/loop.cpp @@ -151,7 +151,11 @@ namespace { auto p1 = OpenCascadeKernel::convert_xyz(*boost::get(e_start)); auto p2 = OpenCascadeKernel::convert_xyz(*boost::get(e_end)); - E = BRepBuilderAPI_MakeEdge(curve, p1, p2).Edge(); + if (curve->IsClosed() && p1.Distance(p2) <= kernel->settings().get().get()) { + E = BRepBuilderAPI_MakeEdge(curve).Edge(); + } else { + E = BRepBuilderAPI_MakeEdge(curve, p1, p2).Edge(); + } } else if (e_start.which() == 2) { auto v1 = boost::get(e_start); auto v2 = boost::get(e_end);