2003-07-10 16:13:42 +06:00
|
|
|
// SMESH SMESHDS : management of mesh data and SMESH document
|
|
|
|
//
|
|
|
|
// Copyright (C) 2003 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
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with this library; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
//
|
|
|
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// File : SMESH_SubMesh.cxx
|
|
|
|
// Author : Yves FRICAUD, OCC
|
|
|
|
// Module : SMESH
|
|
|
|
// $Header:
|
2003-05-19 19:25:06 +06:00
|
|
|
|
2003-07-10 16:13:42 +06:00
|
|
|
using namespace std;
|
2003-09-04 13:14:51 +06:00
|
|
|
#include "SMESHDS_SubMesh.hxx"
|
2003-05-19 19:25:06 +06:00
|
|
|
|
|
|
|
//=======================================================================
|
|
|
|
//function : AddElement
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2003-09-04 13:14:51 +06:00
|
|
|
void SMESHDS_SubMesh::AddElement(const SMDS_MeshElement * ME)
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2003-09-04 13:14:51 +06:00
|
|
|
myElements.insert(ME);
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
|
|
|
|
|
|
|
//=======================================================================
|
|
|
|
//function : RemoveElement
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2004-06-18 14:34:31 +06:00
|
|
|
bool SMESHDS_SubMesh::RemoveElement(const SMDS_MeshElement * ME)
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2004-06-18 14:34:31 +06:00
|
|
|
if ( NbElements() )
|
|
|
|
return myElements.erase(ME);
|
|
|
|
|
|
|
|
return false;
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
2003-09-04 13:14:51 +06:00
|
|
|
|
2003-05-19 19:25:06 +06:00
|
|
|
//=======================================================================
|
|
|
|
//function : AddNode
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2003-09-04 13:14:51 +06:00
|
|
|
void SMESHDS_SubMesh::AddNode(const SMDS_MeshNode * N)
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2003-09-04 13:14:51 +06:00
|
|
|
myNodes.insert(N);
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
|
|
|
|
|
|
|
//=======================================================================
|
|
|
|
//function : RemoveNode
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2004-06-18 14:34:31 +06:00
|
|
|
bool SMESHDS_SubMesh::RemoveNode(const SMDS_MeshNode * N)
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2004-06-18 14:34:31 +06:00
|
|
|
if ( NbNodes() )
|
|
|
|
return myNodes.erase(N);
|
|
|
|
|
|
|
|
return false;
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
|
|
|
|
|
|
|
//=======================================================================
|
|
|
|
//function : NbElements
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2003-09-04 13:14:51 +06:00
|
|
|
int SMESHDS_SubMesh::NbElements() const
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2003-09-04 13:14:51 +06:00
|
|
|
return myElements.size();
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
|
|
|
|
|
|
|
//=======================================================================
|
|
|
|
//function : NbNodes
|
|
|
|
//purpose :
|
|
|
|
//=======================================================================
|
2003-09-04 13:14:51 +06:00
|
|
|
int SMESHDS_SubMesh::NbNodes() const
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2003-09-04 13:14:51 +06:00
|
|
|
return myNodes.size();
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
|
|
|
|
2003-09-05 16:31:32 +06:00
|
|
|
template<typename T> class MySetIterator:public SMDS_Iterator<const T*>
|
2003-05-19 19:25:06 +06:00
|
|
|
{
|
2004-06-18 14:34:31 +06:00
|
|
|
typedef const set<const T*> TSet;
|
|
|
|
typename TSet::const_iterator myIt;
|
|
|
|
TSet& mySet;
|
2003-05-19 19:25:06 +06:00
|
|
|
|
2003-09-05 16:31:32 +06:00
|
|
|
public:
|
|
|
|
MySetIterator(const set<const T*>& s):mySet(s), myIt(s.begin())
|
2003-09-04 13:14:51 +06:00
|
|
|
{
|
|
|
|
}
|
2003-05-19 19:25:06 +06:00
|
|
|
|
2003-09-05 16:31:32 +06:00
|
|
|
bool more()
|
|
|
|
{
|
|
|
|
return myIt!=mySet.end();
|
|
|
|
}
|
|
|
|
const T* next()
|
2003-09-04 13:14:51 +06:00
|
|
|
{
|
2003-09-05 16:31:32 +06:00
|
|
|
const T* t=*myIt;
|
|
|
|
myIt++;
|
|
|
|
return t;
|
2003-09-04 13:14:51 +06:00
|
|
|
}
|
2003-09-05 16:31:32 +06:00
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///Return an iterator on the elements of submesh
|
|
|
|
///The created iterator must be free by the caller
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
2004-06-18 14:34:31 +06:00
|
|
|
SMDS_ElemIteratorPtr SMESHDS_SubMesh::GetElements() const
|
2003-09-05 16:31:32 +06:00
|
|
|
{
|
2004-06-18 14:34:31 +06:00
|
|
|
return SMDS_ElemIteratorPtr(new MySetIterator<SMDS_MeshElement>(myElements));
|
2003-05-19 19:25:06 +06:00
|
|
|
}
|
2003-09-05 16:31:32 +06:00
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
///Return an iterator on the nodes of submesh
|
|
|
|
///The created iterator must be free by the caller
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
2004-06-18 14:34:31 +06:00
|
|
|
SMDS_NodeIteratorPtr SMESHDS_SubMesh::GetNodes() const
|
2003-09-05 16:31:32 +06:00
|
|
|
{
|
2004-06-18 14:34:31 +06:00
|
|
|
return SMDS_NodeIteratorPtr(new MySetIterator<SMDS_MeshNode>(myNodes));
|
2003-09-05 16:31:32 +06:00
|
|
|
}
|
|
|
|
|