-CORBA::Boolean SMESH_MeshEditor_i::AddVolume(const SMESH::long_array& IDsOfNodes) {
- int NbNodes = IDsOfNodes.length();
- if ( NbNodes == 4 ) {
- CORBA::Long index1 = IDsOfNodes[0];
- CORBA::Long index2 = IDsOfNodes[1];
- CORBA::Long index3 = IDsOfNodes[2];
- CORBA::Long index4 = IDsOfNodes[3];
- int idTetra = _myMeshDS->AddVolume(index1,index2,index3,index4);
- } else if ( NbNodes == 5 ) {
- CORBA::Long index1 = IDsOfNodes[0];
- CORBA::Long index2 = IDsOfNodes[1];
- CORBA::Long index3 = IDsOfNodes[2];
- CORBA::Long index4 = IDsOfNodes[3];
- CORBA::Long index5 = IDsOfNodes[4];
- int idPyramid = _myMeshDS->AddVolume(index1,index2,index3,index4,index5);
- } else if ( NbNodes == 6 ) {
- CORBA::Long index1 = IDsOfNodes[0];
- CORBA::Long index2 = IDsOfNodes[1];
- CORBA::Long index3 = IDsOfNodes[2];
- CORBA::Long index4 = IDsOfNodes[3];
- CORBA::Long index5 = IDsOfNodes[4];
- CORBA::Long index6 = IDsOfNodes[5];
- int idPrism = _myMeshDS->AddVolume(index1,index2,index3,index4,index5,index6);
- } else if ( NbNodes == 8 ) {
- CORBA::Long index1 = IDsOfNodes[0];
- CORBA::Long index2 = IDsOfNodes[1];
- CORBA::Long index3 = IDsOfNodes[2];
- CORBA::Long index4 = IDsOfNodes[3];
- CORBA::Long index5 = IDsOfNodes[4];
- CORBA::Long index6 = IDsOfNodes[5];
- CORBA::Long index7 = IDsOfNodes[6];
- CORBA::Long index8 = IDsOfNodes[7];
- int idHexa = _myMeshDS->AddVolume(index1,index2,index3,index4,index5,index6,index7,index8);
- }
- return true;
+CORBA::Boolean SMESH_MeshEditor_i::AddVolume(const SMESH::
+ long_array & IDsOfNodes)
+{
+ int NbNodes = IDsOfNodes.length();
+ const SMDS_MeshNode* n[8];
+ for(int i=0;i<NbNodes;i++) n[i]=_myMeshDS->FindNode(IDsOfNodes[i]);
+
+ switch(NbNodes)
+ {
+ case 4:_myMeshDS->AddVolume(n[0],n[1],n[2],n[3]); break;
+ case 5:_myMeshDS->AddVolume(n[0],n[1],n[2],n[3],n[4]); break;
+ case 6:_myMeshDS->AddVolume(n[0],n[1],n[2],n[3],n[4],n[5]); break;
+ case 8:_myMeshDS->AddVolume(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7]); break;
+ }
+ return true;