From 0389f1e9841ef0f98d3f1fc40c7d4ca01b6b685c Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Mon, 23 Sep 2024 16:03:10 +0200 Subject: [PATCH] Make cgal implementation a little bit less confident #5453 --- src/ifcgeom/kernels/cgal/CgalKernel.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/kernels/cgal/CgalKernel.cpp b/src/ifcgeom/kernels/cgal/CgalKernel.cpp index 4c41d22aff..42d903fe26 100644 --- a/src/ifcgeom/kernels/cgal/CgalKernel.cpp +++ b/src/ifcgeom/kernels/cgal/CgalKernel.cpp @@ -153,6 +153,12 @@ CGAL::Nef_polyhedron_3 ifcopenshell::geometry::utils::create_nef_polyhe #endif bool CgalKernel::convert(const taxonomy::shell::ptr l, cgal_shape_t& shape) { + for (auto& f : l->children) { + if (f->basis) { + Logger::Error("Non-planar faces not supported at the moment"); + return false; + } + } if (false && l->children.size() > 100) { static double inf = 1.e9; // std::numeric_limits::infinity(); std::pair minmax( @@ -784,12 +790,16 @@ bool CgalKernel::convert_impl(const taxonomy::shell::ptr shell, ConversionResult } bool CgalKernel::convert_impl(const taxonomy::solid::ptr solid, ConversionResults& results) { + if (solid->children.size() > 1) { + Logger::Error("Multiple shells in solid not supported at the moment"); + return false; + } cgal_shape_t shape; if (solid->children.empty()) { return false; } // @todo - if (!convert((taxonomy::shell::ptr)solid->children[0], shape)) { + if (!convert(solid->children[0], shape)) { return false; } if (shape.size_of_facets() == 0) {