diff --git a/src/ifcgeom_schema_agnostic/wire_utils.cpp b/src/ifcgeom_schema_agnostic/wire_utils.cpp index 2c069bbe27..11876e2aa9 100644 --- a/src/ifcgeom_schema_agnostic/wire_utils.cpp +++ b/src/ifcgeom_schema_agnostic/wire_utils.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -496,11 +497,15 @@ bool IfcGeom::util::wire_intersections(const TopoDS_Wire& wire, TopTools_ListOfS } } + ShapeFix_Wire sfw; + sfw.Load(mw.Wire()); + sfw.Perform(); + // Recursively process both cuts // @todo this is a change in behaviour with eps precomputed from the kernel // instead of adaptively calculated for the successive iterations. - wire_intersections(mw.Wire(), wires, eps, eps_real); + wire_intersections(sfw.Wire(), wires, eps, eps_real); } return true;