Salome HOME
23365: [CEA 1938] Export med from a xao file fails
[modules/smesh.git] / src / SMESH / SMESH_MesherHelper.cxx
index 13d072bbb5a376bc35a75453d680c75e31b536d0..e9e9f58b62b6a572fbe351c7693e6f1828c0e235 100644 (file)
@@ -304,6 +304,7 @@ void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh)
             double u2 = uv1.Coord(1);
             myPar1[0] = Min( u1, u2 );
             myPar2[0] = Max( u1, u2 );
+            myParIndex |= U_periodic;
           }
           else
           {
@@ -313,6 +314,7 @@ void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh)
             double v2 = uv1.Coord(2);
             myPar1[1] = Min( v1, v2 );
             myPar2[1] = Max( v1, v2 );
+            myParIndex |= V_periodic;
           }
         }
         else //if ( !isSeam )
@@ -2942,10 +2944,16 @@ bool SMESH_MesherHelper::IsReversedSubMesh (const TopoDS_Face& theFace)
             bool ok = true;
             double u0 = GetNodeU( TopoDS::Edge( E ), nn[0], nn[1], &ok );
             double u1 = GetNodeU( TopoDS::Edge( E ), nn[1], nn[0], &ok );
-            // check that the 2 nodes are connected with a segment (IPAL53055)
-            if ( SMESHDS_SubMesh* sm = GetMeshDS()->MeshElements( E ))
-              if ( sm->NbElements() > 0 && !GetMeshDS()->FindEdge( nn[0], nn[1] ))
-                ok = false;
+            if ( ok )
+            {
+              // check that the 2 nodes are connected with a segment (IPAL53055)
+              ok = false;
+              const SMDS_MeshElement* seg;
+              if ( SMESHDS_SubMesh* sm = GetMeshDS()->MeshElements( E ))
+                if (( sm->NbElements() > 0 ) &&
+                    ( seg = GetMeshDS()->FindEdge( nn[0], nn[1] )))
+                  ok = sm->Contains( seg );
+            }
             if ( ok )
             {
               isReversed = ( u0 > u1 );