Salome HOME
Speed up "Clear mesh data"
[modules/smesh.git] / src / SMESH / SMESH_subMesh.cxx
index ed6ac1a78163bc49039ee20496a661893996f57d..8945f5e26d4dc7960c50bfbe6c0561fd0d533562 100644 (file)
@@ -195,7 +195,7 @@ void SMESH_subMesh::SetIsAlwaysComputed(bool isAlCo)
 bool SMESH_subMesh::IsEmpty() const
 {
   if (SMESHDS_SubMesh * subMeshDS = ((SMESH_subMesh*)this)->GetSubMeshDS())
-    return (!subMeshDS->GetNodes()->more() && !subMeshDS->GetElements()->more());
+    return (!subMeshDS->NbElements() && !subMeshDS->NbNodes());
   return true;
 }
 
@@ -513,7 +513,8 @@ bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) cons
   int aShapeDim = SMESH_Gen::GetShapeDim(_subShape);
   if (aHypDim == 3 && aShapeDim == 3) {
     // check case of open shell
-    if (_subShape.ShapeType() == TopAbs_SHELL && !_subShape.Closed())
+    //if (_subShape.ShapeType() == TopAbs_SHELL && !_subShape.Closed())
+    if (_subShape.ShapeType() == TopAbs_SHELL && !BRep_Tool::IsClosed(_subShape))
       return false;
   }
   if ( aHypDim <= aShapeDim )
@@ -2078,6 +2079,7 @@ namespace {
               SMESH_subMesh*                 append): myIt(subIt),myAppend(append)
     {
       myCur = prepend ? prepend : myIt->more() ? myIt->next() : append;
+      if ( myCur == append ) append = 0;
     }
     /// Return true if and only if there are other object in this iterator
     virtual bool more()