diff --git a/src/ifcgeom/IfcGeomFaces.cpp b/src/ifcgeom/IfcGeomFaces.cpp index d0ffe631d3..42e3a5261d 100644 --- a/src/ifcgeom/IfcGeomFaces.cpp +++ b/src/ifcgeom/IfcGeomFaces.cpp @@ -189,9 +189,12 @@ bool IfcGeom::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& face) { // as the topological face normal the face orientation is // reversed gp_Vec face_normal2(x,y,z); - if ( face_normal1.Dot(face_normal2) < 0 ) { - TopAbs_Orientation o = face.Orientation(); - face.Orientation(o == TopAbs_FORWARD ? TopAbs_REVERSED : TopAbs_FORWARD); + + if (face_normal2.Magnitude() > ALMOST_ZERO) { + if ( face_normal1.Dot(face_normal2) < 0 ) { + TopAbs_Orientation o = face.Orientation(); + face.Orientation(o == TopAbs_FORWARD ? TopAbs_REVERSED : TopAbs_FORWARD); + } } }