23382: [CEA 1981] Wrong mesh SMESH test

This commit is contained in:
eap 2016-11-07 15:12:37 +03:00
parent 75d0234b45
commit d2a8dd635e
3 changed files with 9 additions and 5 deletions

View File

@ -371,9 +371,6 @@ bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
MEMOSTAT; MEMOSTAT;
if ( aCompactMesh )
aMesh.GetMeshDS()->compactMesh();
// fix quadratic mesh by bending iternal links near concave boundary // fix quadratic mesh by bending iternal links near concave boundary
if ( aCompactMesh && // a final compute if ( aCompactMesh && // a final compute
aShape.IsSame( aMesh.GetShapeToMesh() ) && aShape.IsSame( aMesh.GetShapeToMesh() ) &&
@ -386,6 +383,10 @@ bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
aHelper.FixQuadraticElements( sm->GetComputeError() ); aHelper.FixQuadraticElements( sm->GetComputeError() );
} }
} }
if ( aCompactMesh )
aMesh.GetMeshDS()->compactMesh();
return ret; return ret;
} }

View File

@ -60,7 +60,7 @@ typedef struct studyContextStruct
typedef std::set<int> TSetOfInt; typedef std::set<int> TSetOfInt;
class SMESH_EXPORT SMESH_Gen class SMESH_EXPORT SMESH_Gen
{ {
public: public:
SMESH_Gen(); SMESH_Gen();

View File

@ -1924,7 +1924,10 @@ CORBA::Boolean SMESH_Gen_i::Compute( SMESH::SMESH_Mesh_ptr theMesh,
// call implementation compute // call implementation compute
::SMESH_Mesh& myLocMesh = meshServant->GetImpl(); ::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
myGen.PrepareCompute( myLocMesh, myLocShape ); myGen.PrepareCompute( myLocMesh, myLocShape );
bool ok = myGen.Compute( myLocMesh, myLocShape, myLocShape != myLocMesh.GetShapeToMesh()); int how = ::SMESH_Gen::COMPACT_MESH;
if ( myLocShape != myLocMesh.GetShapeToMesh() ) // compute a sub-mesh
how |= ::SMESH_Gen::SHAPE_ONLY;
bool ok = myGen.Compute( myLocMesh, myLocShape, how );
meshServant->CreateGroupServants(); // algos can create groups (issue 0020918) meshServant->CreateGroupServants(); // algos can create groups (issue 0020918)
myLocMesh.GetMeshDS()->Modified(); myLocMesh.GetMeshDS()->Modified();
return ok; return ok;