0021543: EDF 1978 SMESH: Viscous layer for 2D meshes (validation.hdf)

Fix orientation of normals on a REVERSED FACE
This commit is contained in:
eap 2012-11-15 15:10:30 +00:00
parent b181ae86e2
commit a918ba2cf9

View File

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