set<SMESH_subMesh*>& aCheckedMap,
list< SMESH_Gen::TAlgoStateError > & theErrors)
{
- if ( aSubMesh->GetSubShape().ShapeType() == TopAbs_VERTEX)
+ if ( aSubMesh->GetSubShape().ShapeType() == TopAbs_VERTEX ||
+ aCheckedMap.count( aSubMesh ))
return true;
//MESSAGE("=====checkMissing");
break;
}
case SMESH_subMesh::HYP_OK:
- algo = aGen->GetAlgo( aMesh, aSubMesh->GetSubShape() );
+ algo = aSubMesh->GetAlgo();
ret = true;
+ if (!algo->NeedDiscreteBoundary())
+ {
+ SMESH_subMeshIteratorPtr itsub = aSubMesh->getDependsOnIterator( /*includeSelf=*/false,
+ /*complexShapeFirst=*/false);
+ while ( itsub->more() )
+ aCheckedMap.insert( itsub->next() );
+ }
break;
default: ASSERT(0);
}
{
// sub-meshes should not be checked further more
SMESH_subMesh* sm = itsub->next();
- aCheckedMap.insert( sm );
if (isTopLocalAlgo)
{
checkNoAlgo2 = false;
}
}
+ aCheckedMap.insert( sm );
}
}
return ret;
bool ret = true;
bool hasAlgo = false;
- SMESH_subMesh* sm = theMesh.GetSubMesh(theShape);
+ SMESH_subMesh* sm = theMesh.GetSubMesh(theShape);
const SMESHDS_Mesh* meshDS = theMesh.GetMeshDS();
- TopoDS_Shape mainShape = meshDS->ShapeToMesh();
+ TopoDS_Shape mainShape = meshDS->ShapeToMesh();
// -----------------
// get global algos