From e946b6c540f524a7702c1fa84e87f10066d3d8fd Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Mon, 11 Dec 2023 20:59:04 +0100 Subject: [PATCH] Test for self-intersection before converting to nef --- src/ifcgeom/kernels/cgal/CgalConversionResult.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp index 0327d27ad1..28a0bdf77d 100644 --- a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp +++ b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp @@ -2,6 +2,7 @@ #include "CgalKernel.h" #include +#include #include "../../../ifcparse/IfcLogger.h" #include "../../../ifcgeom/IfcGeomRepresentation.h" @@ -34,6 +35,9 @@ void ifcopenshell::geometry::CgalShape::to_poly() const { void ifcopenshell::geometry::CgalShape::to_nef() const { if (!nef_) { + if (CGAL::Polygon_mesh_processing::does_self_intersect(*shape_)) { + throw std::runtime_error("Self-intersections detected, unable to proceed"); + } nef_ = utils::create_nef_polyhedron(*shape_); } }