-// SMESH SMESH : implementaion of SMESH idl descriptions
+// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-//
-//
+// SMESH SMESH : implementaion of SMESH idl descriptions
// File : SMESH_subMesh.cxx
// Author : Paul RASCLE, EDF
// Module : SMESH
// $Header$
-
+//
#include "SMESH_subMesh.hxx"
#include "SMESH_Algo.hxx"
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;
}
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 )
{
ret = algo->Compute((*_father), shape);
}
- if ( !ret && _computeError->IsOK() ) // algo can set _computeError of submesh
+ if ( !_computeError || ( !ret && _computeError->IsOK() ) ) // algo can set _computeError of submesh
_computeError = algo->GetComputeError();
}
catch ( std::bad_alloc& exc ) {
SMESH_subMesh* prepend,
SMESH_subMesh* append): myIt(subIt),myAppend(append)
{
- myCur = prepend ? prepend : myIt->more() ? myIt->next() : 0;
+ 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()