- switch(NbNodes())
- {
- case 4: return 6;
- case 5: return 8;
- case 6: return 9;
- case 8: return 12;
- default: MESSAGE("invalid number of nodes");
- }
- return 0;
-}
-
-/*!
- * \brief Iterator on node of volume
- */
-class SMDS_VolumeOfNodes_MyIterator:public SMDS_NodeArrayElemIterator
-{
- public:
- SMDS_VolumeOfNodes_MyIterator(const SMDS_MeshNode* const* s, int l):
- SMDS_NodeArrayElemIterator( s, & s[ l ]) {}
-};
-
-/*!
- * \brief Iterator on faces or edges of volume
- */
-class _MySubIterator : public SMDS_ElemIterator
-{
- vector< const SMDS_MeshElement* > myElems;
- int myIndex;
-public:
- _MySubIterator(const SMDS_VolumeOfNodes* vol, SMDSAbs_ElementType type):myIndex(0) {
- SMDS_VolumeTool vTool(vol);
- if (type == SMDSAbs_Face)
- vTool.GetAllExistingFaces( myElems );
- else
- vTool.GetAllExistingFaces( myElems );
- }
- /// Return true if and only if there are other object in this iterator
- virtual bool more() { return myIndex < myElems.size(); }
-
- /// Return the current object and step to the next one
- virtual const SMDS_MeshElement* next() { return myElems[ myIndex++ ]; }
-};
-
-SMDS_ElemIteratorPtr SMDS_VolumeOfNodes::elementsIterator(SMDSAbs_ElementType type) const
-{
- switch(type)