From f8f4db72ec9f8d017635711acae4f22db47f96ba Mon Sep 17 00:00:00 2001 From: Ken Arroyo Ohori Date: Thu, 23 Mar 2017 20:25:54 -0600 Subject: [PATCH] IfcDerivedProfileDef --- src/ifcgeom/kernels/cgal/CgalEntityMapping.h | 2 +- src/ifcgeom/kernels/cgal/CgalIfcGeomFaces.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/kernels/cgal/CgalEntityMapping.h b/src/ifcgeom/kernels/cgal/CgalEntityMapping.h index 37967d966b..3dc4b9c95e 100644 --- a/src/ifcgeom/kernels/cgal/CgalEntityMapping.h +++ b/src/ifcgeom/kernels/cgal/CgalEntityMapping.h @@ -84,7 +84,7 @@ FACE(IfcCircleProfileDef); FACE(IfcEllipseProfileDef); //FACE(IfcCenterLineProfileDef); //FACE(IfcCompositeProfileDef); -//FACE(IfcDerivedProfileDef); +FACE(IfcDerivedProfileDef); // IfcFaceSurface included // IfcAdvancedFace included in case of IFC4 FACE(IfcFace); diff --git a/src/ifcgeom/kernels/cgal/CgalIfcGeomFaces.cpp b/src/ifcgeom/kernels/cgal/CgalIfcGeomFaces.cpp index 09729e2467..e1a4383dc4 100644 --- a/src/ifcgeom/kernels/cgal/CgalIfcGeomFaces.cpp +++ b/src/ifcgeom/kernels/cgal/CgalIfcGeomFaces.cpp @@ -971,3 +971,18 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcZShapeProfileDef* l, cgal_ return true; } + +bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcDerivedProfileDef* l, cgal_face_t& face) { + cgal_face_t f; + cgal_placement_t trsf2d; + if (convert_face(l->ParentProfile(), f) && IfcGeom::CgalKernel::convert(l->Operator(), trsf2d)) { + cgal_placement_t trsf = trsf2d; + for (auto &vertex: f.outer) vertex = vertex.transform(trsf); + for (auto &ring: f.inner) { + for (auto &vertex: ring) vertex = vertex.transform(trsf); + } face = f; + return true; + } else { + return false; + } +}