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_); } }