GetNode(int index) no longer wraps index, rather GetNodeWrap(int index) does

This commit is contained in:
eap 2009-05-19 15:12:54 +00:00
parent 88eccafce6
commit b6986ac1b1
18 changed files with 26 additions and 84 deletions

View File

@ -168,12 +168,10 @@ int SMDS_FaceOfEdges::NbNodes() const
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_FaceOfEdges::GetNode(const int ind) const const SMDS_MeshNode* SMDS_FaceOfEdges::GetNode(const int ind) const
{ {
int index = WrappedIndex( ind ); int index = ind;
for ( int i = 0; i < myNbEdges; ++i ) { for ( int i = 0; i < myNbEdges; ++i ) {
if ( index >= myEdges[ i ]->NbNodes() ) if ( index >= myEdges[ i ]->NbNodes() )
index -= myEdges[ i ]->NbNodes(); index -= myEdges[ i ]->NbNodes();

View File

@ -56,8 +56,6 @@ class SMDS_EXPORT SMDS_FaceOfEdges:public SMDS_MeshFace
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -95,7 +95,7 @@ public:
myElems.reserve( face->NbNodes() ); myElems.reserve( face->NbNodes() );
for ( int i = 0; i < face->NbNodes(); ++i ) { for ( int i = 0; i < face->NbNodes(); ++i ) {
const SMDS_MeshElement* edge = const SMDS_MeshElement* edge =
SMDS_Mesh::FindEdge( face->GetNode( i ), face->GetNode( i + 1 )); SMDS_Mesh::FindEdge( face->GetNode( i ), face->GetNodeWrap( i + 1 ));
if ( edge ) if ( edge )
myElems.push_back( edge ); myElems.push_back( edge );
} }
@ -169,39 +169,8 @@ bool SMDS_FaceOfNodes::ChangeNodes(const SMDS_MeshNode* nodes[],
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_FaceOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_FaceOfNodes::GetNode(const int ind) const
{ {
return myNodes[ WrappedIndex( ind )]; return myNodes[ ind ];
} }
/*bool operator<(const SMDS_FaceOfNodes& f1, const SMDS_FaceOfNodes& f2)
{
set<SMDS_MeshNode> set1,set2;
SMDS_ElemIteratorPtr it;
const SMDS_MeshNode * n;
it=f1.nodesIterator();
while(it->more())
{
n=static_cast<const SMDS_MeshNode *>(it->next());
set1.insert(*n);
}
delete it;
it=f2.nodesIterator();
while(it->more())
{
n=static_cast<const SMDS_MeshNode *>(it->next());
set2.insert(*n);
}
delete it;
return set1<set2;
}*/

View File

@ -53,8 +53,6 @@ class SMDS_EXPORT SMDS_FaceOfNodes:public SMDS_MeshFace
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -138,12 +138,10 @@ bool operator<(const SMDS_MeshEdge & e1, const SMDS_MeshEdge & e2)
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_MeshEdge::GetNode(const int ind) const const SMDS_MeshNode* SMDS_MeshEdge::GetNode(const int ind) const
{ {
return myNodes[ WrappedIndex( ind )]; return myNodes[ ind ];
} }
//======================================================================= //=======================================================================

View File

@ -50,8 +50,6 @@ class SMDS_EXPORT SMDS_MeshEdge:public SMDS_MeshElement
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -202,12 +202,13 @@ bool SMDS_MeshElement::IsValidIndex(const int ind) const
const SMDS_MeshNode* SMDS_MeshElement::GetNode(const int ind) const const SMDS_MeshNode* SMDS_MeshElement::GetNode(const int ind) const
{ {
SMDS_ElemIteratorPtr it = nodesIterator(); if ( ind >= 0 ) {
int i = 0, index = WrappedIndex( ind ); SMDS_ElemIteratorPtr it = nodesIterator();
while ( index != i++ ) for ( int i = 0; i < ind; ++i )
it->next(); it->next();
if ( it->more() ) if ( it->more() )
return static_cast<const SMDS_MeshNode*> (it->next()); return static_cast<const SMDS_MeshNode*> (it->next());
}
return 0; return 0;
} }

View File

@ -58,8 +58,6 @@ class SMDS_EXPORT SMDS_MeshNode:public SMDS_MeshElement
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int) const { return this; } virtual const SMDS_MeshNode* GetNode(const int) const { return this; }

View File

@ -154,7 +154,7 @@ public:
myElems.reserve( face->NbNodes() ); myElems.reserve( face->NbNodes() );
for ( int i = 0; i < face->NbNodes(); ++i ) { for ( int i = 0; i < face->NbNodes(); ++i ) {
const SMDS_MeshElement* edge = const SMDS_MeshElement* edge =
SMDS_Mesh::FindEdge( face->GetNode( i ), face->GetNode( i + 1 )); SMDS_Mesh::FindEdge( face->GetNode( i ), face->GetNodeWrap( i + 1 ));
if ( edge ) if ( edge )
myElems.push_back( edge ); myElems.push_back( edge );
} }
@ -191,8 +191,6 @@ SMDS_ElemIteratorPtr SMDS_PolygonalFaceOfNodes::elementsIterator
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_PolygonalFaceOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_PolygonalFaceOfNodes::GetNode(const int ind) const
{ {

View File

@ -58,8 +58,6 @@ class SMDS_EXPORT SMDS_PolygonalFaceOfNodes:public SMDS_MeshFace
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -259,5 +259,5 @@ SMDS_ElemIteratorPtr SMDS_PolyhedralVolumeOfNodes::uniqueNodesIterator() const
const SMDS_MeshNode* SMDS_PolyhedralVolumeOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_PolyhedralVolumeOfNodes::GetNode(const int ind) const
{ {
return myNodesByFaces[ WrappedIndex( ind )]; return myNodesByFaces[ ind ];
} }

View File

@ -255,7 +255,7 @@ public:
_MyEdgeIterator(const SMDS_QuadraticFaceOfNodes* face):myIndex(0) { _MyEdgeIterator(const SMDS_QuadraticFaceOfNodes* face):myIndex(0) {
myElems.reserve( face->NbNodes() ); myElems.reserve( face->NbNodes() );
SMDS_ElemIteratorPtr nIt = face->interlacedNodesElemIterator(); SMDS_ElemIteratorPtr nIt = face->interlacedNodesElemIterator();
const SMDS_MeshNode* n0 = face->GetNode( -1 ); const SMDS_MeshNode* n0 = face->GetNodeWrap( -1 );
while ( nIt->more() ) { while ( nIt->more() ) {
const SMDS_MeshNode* n1 = static_cast<const SMDS_MeshNode*>( nIt->next() ); const SMDS_MeshNode* n1 = static_cast<const SMDS_MeshNode*>( nIt->next() );
const SMDS_MeshElement* edge = SMDS_Mesh::FindEdge( n0, n1 ); const SMDS_MeshElement* edge = SMDS_Mesh::FindEdge( n0, n1 );
@ -300,11 +300,9 @@ SMDS_ElemIteratorPtr SMDS_QuadraticFaceOfNodes::elementsIterator
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_QuadraticFaceOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_QuadraticFaceOfNodes::GetNode(const int ind) const
{ {
return myNodes[ WrappedIndex( ind )]; return myNodes[ ind ];
} }

View File

@ -70,8 +70,6 @@ public:
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -362,11 +362,9 @@ SMDS_ElemIteratorPtr SMDS_QuadraticVolumeOfNodes::elementsIterator
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_QuadraticVolumeOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_QuadraticVolumeOfNodes::GetNode(const int ind) const
{ {
return myNodes[ WrappedIndex( ind )]; return myNodes[ ind ];
} }

View File

@ -116,8 +116,6 @@ public:
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -141,7 +141,7 @@ void SMDS_VolumeOfNodes::Print(ostream & OS) const
{ {
OS << "volume <" << GetID() << "> : "; OS << "volume <" << GetID() << "> : ";
int i; int i;
for (i = 0; i < NbNodes(); ++i) OS << myNodes[i] << ","; for (i = 0; i < NbNodes()-1; ++i) OS << myNodes[i] << ",";
OS << myNodes[NbNodes()-1]<< ") " << endl; OS << myNodes[NbNodes()-1]<< ") " << endl;
} }
@ -241,10 +241,8 @@ SMDSAbs_ElementType SMDS_VolumeOfNodes::GetType() const
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
const SMDS_MeshNode* SMDS_VolumeOfNodes::GetNode(const int ind) const const SMDS_MeshNode* SMDS_VolumeOfNodes::GetNode(const int ind) const
{ {
return myNodes[ WrappedIndex( ind )]; return myNodes[ ind ];
} }

View File

@ -75,8 +75,6 @@ class SMDS_EXPORT SMDS_VolumeOfNodes:public SMDS_MeshVolume
* \brief Return node by its index * \brief Return node by its index
* \param ind - node index * \param ind - node index
* \retval const SMDS_MeshNode* - the node * \retval const SMDS_MeshNode* - the node
*
* Index is wrapped if it is out of a valid range
*/ */
virtual const SMDS_MeshNode* GetNode(const int ind) const; virtual const SMDS_MeshNode* GetNode(const int ind) const;

View File

@ -2050,8 +2050,8 @@ void SMESH_MeshEditor::GetLinkedNodes( const SMDS_MeshNode* theNode,
iAfter = SMESH_MesherHelper::WrapIndex( iAfter, nb ); iAfter = SMESH_MesherHelper::WrapIndex( iAfter, nb );
iBefore = SMESH_MesherHelper::WrapIndex( iBefore, nb ); iBefore = SMESH_MesherHelper::WrapIndex( iBefore, nb );
} }
linkedNodes.insert( elem->GetNode( iAfter )); linkedNodes.insert( elem->GetNodeWrap( iAfter ));
linkedNodes.insert( elem->GetNode( iBefore )); linkedNodes.insert( elem->GetNodeWrap( iBefore ));
} }
} }
} }
@ -2456,7 +2456,7 @@ void SMESH_MeshEditor::Smooth (TIDSortedElemSet & theElems,
if(elem->IsQuadratic()) if(elem->IsQuadratic())
nbn = nbn/2; nbn = nbn/2;
// loop on elem links: insert them in linkNbMap // loop on elem links: insert them in linkNbMap
const SMDS_MeshNode* curNode, *prevNode = elem->GetNode( nbn ); const SMDS_MeshNode* curNode, *prevNode = elem->GetNodeWrap( nbn );
for ( int iN = 0; iN < nbn; ++iN ) { for ( int iN = 0; iN < nbn; ++iN ) {
curNode = elem->GetNode( iN ); curNode = elem->GetNode( iN );
NLink link; NLink link;
@ -3276,7 +3276,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
const SMDS_MeshFace * f = aMesh->FindFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ]); const SMDS_MeshFace * f = aMesh->FindFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ]);
if ( !f ) if ( !f )
myLastCreatedElems.Append(aMesh->AddFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ] )); myLastCreatedElems.Append(aMesh->AddFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ] ));
else if ( nodes[ 1 ] != f->GetNode( f->GetNodeIndex( nodes[ 0 ] ) + 1 )) else if ( nodes[ 1 ] != f->GetNodeWrap( f->GetNodeIndex( nodes[ 0 ] ) + 1 ))
aMesh->ChangeElementNodes( f, nodes, nbn ); aMesh->ChangeElementNodes( f, nodes, nbn );
break; break;
} }
@ -3284,7 +3284,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
const SMDS_MeshFace * f = aMesh->FindFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ], nodes[ 3 ]); const SMDS_MeshFace * f = aMesh->FindFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ], nodes[ 3 ]);
if ( !f ) if ( !f )
myLastCreatedElems.Append(aMesh->AddFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ], nodes[ 3 ] )); myLastCreatedElems.Append(aMesh->AddFace( nodes[ 0 ], nodes[ 1 ], nodes[ 2 ], nodes[ 3 ] ));
else if ( nodes[ 1 ] != f->GetNode( f->GetNodeIndex( nodes[ 0 ] ) + 1 )) else if ( nodes[ 1 ] != f->GetNodeWrap( f->GetNodeIndex( nodes[ 0 ] ) + 1 ))
aMesh->ChangeElementNodes( f, nodes, nbn ); aMesh->ChangeElementNodes( f, nodes, nbn );
break; break;
} }
@ -3296,7 +3296,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
if ( !f ) if ( !f )
myLastCreatedElems.Append(aMesh->AddFace(nodes[0], nodes[2], nodes[4], myLastCreatedElems.Append(aMesh->AddFace(nodes[0], nodes[2], nodes[4],
nodes[1], nodes[3], nodes[5])); nodes[1], nodes[3], nodes[5]));
else if ( nodes[ 2 ] != f->GetNode( f->GetNodeIndex( nodes[ 0 ] ) + 1 )) else if ( nodes[ 2 ] != f->GetNodeWrap( f->GetNodeIndex( nodes[ 0 ] ) + 1 ))
aMesh->ChangeElementNodes( f, nodes, nbn ); aMesh->ChangeElementNodes( f, nodes, nbn );
} }
else { /////// quadratic quadrangle else { /////// quadratic quadrangle
@ -3305,7 +3305,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
if ( !f ) if ( !f )
myLastCreatedElems.Append(aMesh->AddFace(nodes[0], nodes[2], nodes[4], nodes[6], myLastCreatedElems.Append(aMesh->AddFace(nodes[0], nodes[2], nodes[4], nodes[6],
nodes[1], nodes[3], nodes[5], nodes[7])); nodes[1], nodes[3], nodes[5], nodes[7]));
else if ( nodes[ 2 ] != f->GetNode( f->GetNodeIndex( nodes[ 0 ] ) + 1 )) else if ( nodes[ 2 ] != f->GetNodeWrap( f->GetNodeIndex( nodes[ 0 ] ) + 1 ))
aMesh->ChangeElementNodes( f, nodes, nbn ); aMesh->ChangeElementNodes( f, nodes, nbn );
} }
} }
@ -3314,7 +3314,7 @@ void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
const SMDS_MeshFace * f = aMesh->FindFace( polygon_nodes ); const SMDS_MeshFace * f = aMesh->FindFace( polygon_nodes );
if ( !f ) if ( !f )
myLastCreatedElems.Append(aMesh->AddPolygonalFace(polygon_nodes)); myLastCreatedElems.Append(aMesh->AddPolygonalFace(polygon_nodes));
else if ( nodes[ 1 ] != f->GetNode( f->GetNodeIndex( nodes[ 0 ] ) + 1 )) else if ( nodes[ 1 ] != f->GetNodeWrap( f->GetNodeIndex( nodes[ 0 ] ) + 1 ))
aMesh->ChangeElementNodes( f, nodes, nbn ); aMesh->ChangeElementNodes( f, nodes, nbn );
} }
} }