for (itsub = subMeshes.begin(); itsub != subMeshes.end(); itsub++)
{
SMESH_subMesh *sm = (*itsub).second;
+
+ const TopoDS_Shape & ss = sm->GetSubShape();
+ int type = ss.ShapeType();
// SCRUTE(sm->GetId());
// SCRUTE(sm->GetComputeState());
bool computeOk = (sm->GetComputeState() == COMPUTE_OK);
if (!computeOk)
{
subMeshesComputed = false;
+
+ switch (type)
+ {
+ case TopAbs_COMPOUND:
+ {
+ MESSAGE("The not computed sub mesh is a COMPOUND");
+ break;
+ }
+ case TopAbs_COMPSOLID:
+ {
+ MESSAGE("The not computed sub mesh is a COMPSOLID");
+ break;
+ }
+ case TopAbs_SHELL:
+ {
+ MESSAGE("The not computed sub mesh is a SHEL");
+ break;
+ }
+ case TopAbs_WIRE:
+ {
+ MESSAGE("The not computed sub mesh is a WIRE");
+ break;
+ }
+ case TopAbs_SOLID:
+ {
+ MESSAGE("The not computed sub mesh is a SOLID");
+ break;
+ }
+ case TopAbs_FACE:
+ {
+ MESSAGE("The not computed sub mesh is a FACE");
+ break;
+ }
+ case TopAbs_EDGE:
+ {
+ MESSAGE("The not computed sub mesh is a EDGE");
+ break;
+ }
+ default:
+ {
+ MESSAGE("The not computed sub mesh is of unknown type");
+ break;
+ }
+ }
+
SCRUTE(sm->GetId());
break;
}
_subMeshDS = _meshDS->MeshElements(_subShape);
if (_subMeshDS!=NULL)
{
- const vector<int> & indElt = _subMeshDS->GetIDElements();
- vector<int>::const_iterator ite=indElt.begin();
- for (; ite!=indElt.end(); ite++)
+ SMDS_Iterator<const SMDS_MeshElement *> * ite=_subMeshDS->GetElements();
+ while(ite->more())
{
- int eltId = *ite;
- SCRUTE(eltId);
- const SMDS_MeshElement * elt = _meshDS->FindElement(eltId);
+ const SMDS_MeshElement * elt = ite->next();
_subMeshDS->RemoveElement(elt);
- _meshDS->RemoveElement(eltId);
+ _meshDS->RemoveElement(elt);
}
-
- const vector<int> & indNodes = _subMeshDS->GetIDNodes();
- vector<int>::const_iterator itn=indNodes.begin();
- for (; itn!=indNodes.end(); itn++)
+ delete ite;
+
+ SMDS_Iterator<const SMDS_MeshNode *> * itn=_subMeshDS->GetNodes();
+ while(itn->more())
{
- int nodeId = *itn;
- SCRUTE(nodeId);
- const SMDS_MeshNode * node = _meshDS->FindNode(nodeId);
+ const SMDS_MeshNode * node = itn->next();
_subMeshDS->RemoveNode(node);
- _meshDS->RemoveNode(nodeId);
+ _meshDS->RemoveNode(node);
}
+ delete itn;
}
}