diff --git a/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp b/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp index 4f1a3eb1f5..e9b155c819 100644 --- a/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp +++ b/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp @@ -44,10 +44,7 @@ taxonomy::item* mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve* inst) { int max_index = (int) points.size(); - taxonomy::loop* loop; - - // ignored, just for capturing the curve parameters on the null check - double u, v; + auto loop = new taxonomy::loop; if(inst->Segments()) { aggregate_of_instance::ptr segments = *inst->Segments(); diff --git a/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp b/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp index dfadd34bf1..fe0c90de18 100644 --- a/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp +++ b/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp @@ -61,6 +61,10 @@ taxonomy::item* mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { } previous = current; } + if (!indices.empty()) { + const taxonomy::point3& current = points[indices.front() - 1]; + loop->children.push_back(new taxonomy::edge(previous, current)); + } } if (f->as()) { @@ -82,6 +86,10 @@ taxonomy::item* mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { } previous = current; } + if (!indices.empty()) { + const taxonomy::point3& current = points[indices.front() - 1]; + loop->children.push_back(new taxonomy::edge(previous, current)); + } } } } diff --git a/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp b/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp index 812738b7e0..73b16f52e4 100644 --- a/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp +++ b/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp @@ -62,6 +62,8 @@ taxonomy::item* mapping::map_impl(const IfcSchema::IfcTriangulatedFaceSet* inst) } } } + + return shell; } #endif \ No newline at end of file