From 1c54be84bac8ed4fb400ca285c9bcb54fc1e605f Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 19 Nov 2024 11:05:20 +0100 Subject: [PATCH] Fix #5763 use OuterWire --- src/ifcgeom/Serialization/schema/Serialization.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/Serialization/schema/Serialization.cpp b/src/ifcgeom/Serialization/schema/Serialization.cpp index af3ab70936..611238cfaa 100644 --- a/src/ifcgeom/Serialization/schema/Serialization.cpp +++ b/src/ifcgeom/Serialization/schema/Serialization.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "../../../ifcparse/macros.h" #include "../../../ifcparse/IfcParse.h" @@ -529,13 +530,14 @@ int convert_to_ifc(const TopoDS_Face& f, IfcSchema::IfcFace*& face, bool advance TopExp_Explorer exp(f, TopAbs_WIRE); IfcSchema::IfcFaceBound::list::ptr bounds(new IfcSchema::IfcFaceBound::list); int index = 0; + auto outer = BRepTools::OuterWire(f); for (; exp.More(); exp.Next(), ++index) { IfcSchema::IfcLoop* loop; if (!convert_to_ifc(TopoDS::Wire(exp.Current()), loop, advanced)) { return 0; } IfcSchema::IfcFaceBound* bnd; - if (index == 0) { + if (outer == f) { bnd = new IfcSchema::IfcFaceOuterBound(loop, true); } else { bnd = new IfcSchema::IfcFaceBound(loop, true);