Salome HOME
0021543: EDF 1978 SMESH: Viscous layer for 2D meshes (validation.hdf)
authoreap <eap@opencascade.com>
Thu, 15 Nov 2012 15:10:30 +0000 (15:10 +0000)
committereap <eap@opencascade.com>
Thu, 15 Nov 2012 15:10:30 +0000 (15:10 +0000)
  Fix orientation of normals on a REVERSED FACE

src/StdMeshers/StdMeshers_ViscousLayers2D.cxx

index a8da5a014285673a818eec7c08960107d48e87df..884c41a8015b774f32336455ef8763aaa63cb132 100644 (file)
@@ -497,7 +497,8 @@ _ViscousBuilder2D::_ViscousBuilder2D(SMESH_Mesh&                       theMesh,
   _helper.SetSubShape( _face );
   _helper.SetElementsOnShape(true);
 
-  _surface = BRep_Tool::Surface( theFace );
+  //_face.Orientation( TopAbs_FORWARD );
+  _surface = BRep_Tool::Surface( _face );
 
   if ( _hyp )
     _fPowN = pow( _hyp->GetStretchFactor(), _hyp->GetNumberLayers() );
@@ -684,7 +685,8 @@ bool _ViscousBuilder2D::makePolyLines()
       // in order not to miss collisions
 
       Handle(Geom2d_Curve) pcurve = L._wire->Curve2d( L._edgeInd );
-      const bool reverse = ( L._wire->Edge( iE ).Orientation() == TopAbs_REVERSED );
+      const bool reverse = (( L._wire->Edge( iE ).Orientation() == TopAbs_REVERSED ) ^
+                            (_face.Orientation()                == TopAbs_REVERSED ));
       for ( int i = L._firstPntInd; i <= L._lastPntInd; ++i )
       {
         _LayerEdge& lEdge = L._lEdges[ i - L._firstPntInd ];