0020943: EDF 1463 SMESH: additional fonctionnality to the feature 20749

Fix "bare faces" control problem
This commit is contained in:
vsr 2011-01-27 10:14:07 +00:00
parent bdebea37d3
commit 20570dd75e

View File

@ -1956,11 +1956,13 @@ bool BareBorderVolume::IsSatisfy(long theElementId )
bool BareBorderFace::IsSatisfy(long theElementId ) bool BareBorderFace::IsSatisfy(long theElementId )
{ {
bool ok = false;
if ( const SMDS_MeshElement* face = myMesh->FindElement(theElementId)) if ( const SMDS_MeshElement* face = myMesh->FindElement(theElementId))
{
if ( face->GetType() == SMDSAbs_Face ) if ( face->GetType() == SMDSAbs_Face )
{ {
int nbN = face->NbCornerNodes(); int nbN = face->NbCornerNodes();
for ( int i = 0; i < nbN; ++i ) for ( int i = 0; i < nbN && !ok; ++i )
{ {
// check if a link is shared by another face // check if a link is shared by another face
const SMDS_MeshNode* n1 = face->GetNode( i ); const SMDS_MeshNode* n1 = face->GetNode( i );
@ -1979,11 +1981,12 @@ bool BareBorderFace::IsSatisfy(long theElementId )
myLinkNodes[1] = n2; myLinkNodes[1] = n2;
if ( face->IsQuadratic() ) if ( face->IsQuadratic() )
myLinkNodes[2] = face->GetNode( i+nbN ); myLinkNodes[2] = face->GetNode( i+nbN );
return !myMesh->FindElement( myLinkNodes, SMDSAbs_Edge, /*noMedium=*/false); ok = !myMesh->FindElement( myLinkNodes, SMDSAbs_Edge, /*noMedium=*/false);
} }
} }
} }
return false; }
return ok;
} }
/* /*