fix bug PAL10974: check if SubMeshesComputed() by presence of nodes in submesh.

This commit is contained in:
eap 2005-12-20 11:49:47 +00:00
parent 51c3e5b587
commit 72a9d5d945

View File

@ -195,12 +195,19 @@ bool SMESH_subMesh::SubMeshesComputed()
for (itsub = subMeshes.begin(); itsub != subMeshes.end(); itsub++) for (itsub = subMeshes.begin(); itsub != subMeshes.end(); itsub++)
{ {
SMESH_subMesh *sm = (*itsub).second; SMESH_subMesh *sm = (*itsub).second;
SMESHDS_SubMesh * ds = sm->GetSubMeshDS();
const TopoDS_Shape & ss = sm->GetSubShape(); // PAL10974.
int type = ss.ShapeType(); // There are some tricks with compute states, e.g. Penta_3D leaves
bool computeOk = (sm->GetComputeState() == COMPUTE_OK); // one face with READY_TO_COMPUTE state in order to be able to
// recompute 3D when a locale triangle hypo changes (see PAL7428).
// So we check if mesh is really present
//bool computeOk = (sm->GetComputeState() == COMPUTE_OK);
bool computeOk = ( ds && ds->GetNodes()->more() );
if (!computeOk) if (!computeOk)
{ {
const TopoDS_Shape & ss = sm->GetSubShape();
int type = ss.ShapeType();
subMeshesComputed = false; subMeshesComputed = false;
switch (type) switch (type)