More robust conversion to nef in CgalShape

This commit is contained in:
Thomas Krijnen
2023-11-16 09:15:19 +01:00
parent 5af975f99e
commit dc6eb8611a
2 changed files with 17 additions and 11 deletions
@@ -18,6 +18,21 @@ using ifcopenshell::geometry::NumberEpeck;
#define NumberType NumberEpeck
#endif
#ifndef IFOPSH_SIMPLE_KERNEL
void ifcopenshell::geometry::CgalShape::to_poly() const {
if (!shape_) {
shape_.emplace();
nef_->convert_to_polyhedron(*shape_);
}
}
void ifcopenshell::geometry::CgalShape::to_nef() const {
if (!nef_) {
nef_ = utils::create_nef_polyhedron(*shape_);
}
}
#endif
void ifcopenshell::geometry::CgalShape::Triangulate(ifcopenshell::geometry::Settings settings, const ifcopenshell::geometry::taxonomy::matrix4& place, IfcGeom::Representation::Triangulation* t, int surface_style_id) const {
// Copy is made because triangulate_faces() obviously does not accept a const argument
// ... also becuase of transforming the vertex positions, right?
@@ -182,18 +182,9 @@ namespace ifcopenshell { namespace geometry {
#endif
#ifndef IFOPSH_SIMPLE_KERNEL
void to_poly() const {
if (!shape_) {
shape_.emplace();
nef_->convert_to_polyhedron(*shape_);
}
}
void to_poly() const;
void to_nef() const {
if (!nef_) {
nef_.emplace(*shape_);
}
}
void to_nef() const;
operator const CGAL::Nef_polyhedron_3<Kernel_>& () const { to_nef(); return *nef_; }
const CGAL::Nef_polyhedron_3<Kernel_>& nef() const { to_nef(); return *nef_; }