diff --git a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp index 2fbdb0a307..dfdb962fd3 100644 --- a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp +++ b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp @@ -382,6 +382,7 @@ void ifcopenshell::geometry::CgalShape::Triangulate(ifcopenshell::geometry::Sett } const bool setting_use_original_edges = settings.get().get(); + const bool calculate_normals = !settings.get().get(); std::set> original_edges; if (setting_use_original_edges) { @@ -541,11 +542,13 @@ void ifcopenshell::geometry::CgalShape::Triangulate(ifcopenshell::geometry::Sett ); welds.insert({ pn, vidx }); - auto nx = CGAL::to_double(face_normals_map[face].cartesian(0)); - auto ny = CGAL::to_double(face_normals_map[face].cartesian(1)); - auto nz = CGAL::to_double(face_normals_map[face].cartesian(2)); + if (calculate_normals) { + auto nx = CGAL::to_double(face_normals_map[face].cartesian(0)); + auto ny = CGAL::to_double(face_normals_map[face].cartesian(1)); + auto nz = CGAL::to_double(face_normals_map[face].cartesian(2)); - t->addNormal(nx, ny, nz); + t->addNormal(nx, ny, nz); + } } else { vidx = it->second; }