From e2198c3ba79314a2a1eac79520300fb8258a0d18 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 3 Jul 2024 15:03:41 +0200 Subject: [PATCH] Advanced brep: closed underlying nurbs curve handling #4895 --- src/ifcgeom/kernels/opencascade/loop.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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);