X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_VolumeOfNodes.cxx;h=c7b308e919cbcf73fe5d9cb0c20d344c5d6a47c9;hp=f09fa620aa2d8575a5ef6ef2822d98588233564f;hb=4ea4ccf36f3c18ecde6f63d51d3e8876a2a27344;hpb=00c069f8d414099a12268c42d58c6cfae9d1bff9 diff --git a/src/SMDS/SMDS_VolumeOfNodes.cxx b/src/SMDS/SMDS_VolumeOfNodes.cxx index f09fa620a..c7b308e91 100644 --- a/src/SMDS/SMDS_VolumeOfNodes.cxx +++ b/src/SMDS/SMDS_VolumeOfNodes.cxx @@ -37,6 +37,7 @@ SMDS_VolumeOfNodes::SMDS_VolumeOfNodes( SMDS_MeshNode * node7, SMDS_MeshNode * node8) { + myNodes.resize(8); myNodes[0]=node1; myNodes[1]=node2; myNodes[2]=node3; @@ -47,6 +48,50 @@ SMDS_VolumeOfNodes::SMDS_VolumeOfNodes( myNodes[7]=node8; } +SMDS_VolumeOfNodes::SMDS_VolumeOfNodes( + SMDS_MeshNode * node1, + SMDS_MeshNode * node2, + SMDS_MeshNode * node3, + SMDS_MeshNode * node4) +{ + myNodes.resize(4); + myNodes[0]=node1; + myNodes[1]=node2; + myNodes[2]=node3; + myNodes[3]=node4; +} + +SMDS_VolumeOfNodes::SMDS_VolumeOfNodes( + SMDS_MeshNode * node1, + SMDS_MeshNode * node2, + SMDS_MeshNode * node3, + SMDS_MeshNode * node4, + SMDS_MeshNode * node5) +{ + myNodes.resize(5); + myNodes[0]=node1; + myNodes[1]=node2; + myNodes[2]=node3; + myNodes[3]=node4; + myNodes[4]=node5; +} + +SMDS_VolumeOfNodes::SMDS_VolumeOfNodes( + SMDS_MeshNode * node1, + SMDS_MeshNode * node2, + SMDS_MeshNode * node3, + SMDS_MeshNode * node4, + SMDS_MeshNode * node5, + SMDS_MeshNode * node6) +{ + myNodes.resize(6); + myNodes[0]=node1; + myNodes[1]=node2; + myNodes[2]=node3; + myNodes[3]=node4; + myNodes[4]=node5; + myNodes[5]=node6; +} //======================================================================= //function : Print //purpose : @@ -62,17 +107,31 @@ void SMDS_VolumeOfNodes::Print(ostream & OS) const int SMDS_VolumeOfNodes::NbFaces() const { - return 6; + switch(NbNodes()) + { + case 4: return 4; + case 5: return 5; + case 6: return 5; + case 8: return 6; + default: MESSAGE("invalid number of nodes"); + } } int SMDS_VolumeOfNodes::NbNodes() const { - return 8; + return myNodes.size(); } int SMDS_VolumeOfNodes::NbEdges() const { - return 12; + switch(NbNodes()) + { + case 4: return 6; + case 5: return 8; + case 6: return 9; + case 8: return 12; + default: MESSAGE("invalid number of nodes"); + } } SMDS_Iterator * SMDS_VolumeOfNodes:: @@ -80,15 +139,15 @@ SMDS_Iterator * SMDS_VolumeOfNodes:: { class MyIterator:public SMDS_Iterator { - const SMDS_MeshNode * const* mySet; + const vector& mySet; int index; public: - MyIterator(const SMDS_MeshNode * const* s):mySet(s),index(0) + MyIterator(const vector& s):mySet(s),index(0) {} bool more() { - return index<8; + return index * SMDS_VolumeOfNodes:: return mySet[index-1]; } }; - switch(type) { case SMDSAbs_Volume:return SMDS_MeshElement::elementsIterator(SMDSAbs_Volume);