X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_MeshEditor_i.cxx;h=442116deea88e4976cf2c13b19c5d2b07b2317ab;hp=46ccb4b89eda6b211134fb4c30ae90b91fa7d2e4;hb=b6545f068bd1a99d94f83dff470150742a1583ea;hpb=ee33969d5bee1e756758ff88d893b128498891d4 diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index 46ccb4b89..442116dee 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -190,13 +190,11 @@ CORBA::Boolean SMESH_MeshEditor_i::AddPolyhedralVolume { int NbNodes = IDsOfNodes.length(); std::vector n (NbNodes); - //const SMDS_MeshNode* n [NbNodes]; for (int i = 0; i < NbNodes; i++) n[i] = GetMeshDS()->FindNode(IDsOfNodes[i]); int NbFaces = Quantities.length(); std::vector q (NbFaces); - //int q [NbFaces]; for (int j = 0; j < NbFaces; j++) q[j] = Quantities[j]; @@ -213,13 +211,22 @@ CORBA::Boolean SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::long_array & IdsOfFaces) { int NbFaces = IdsOfFaces.length(); + std::vector poly_nodes; + std::vector quantities (NbFaces); + std::vector faces (NbFaces); - for (int i = 0; i < NbFaces; i++) - faces[i] = (SMDS_MeshFace *)GetMeshDS()->FindElement(IdsOfFaces[i]); + for (int i = 0; i < NbFaces; i++) { + const SMDS_MeshElement* aFace = GetMeshDS()->FindElement(IdsOfFaces[i]); + quantities[i] = aFace->NbNodes(); - //GetMeshDS()->AddPolyhedralVolumeByFaces(faces); - //return true; - return false; + SMDS_ElemIteratorPtr It = aFace->nodesIterator(); + while (It->more()) { + poly_nodes.push_back(static_cast(It->next())); + } + } + + GetMeshDS()->AddPolyhedralVolume(poly_nodes, quantities); + return true; }; //============================================================================= @@ -917,7 +924,8 @@ SMESH::SMESH_MeshEditor::Sew_Error CORBA::Long FirstNodeID2, CORBA::Long SecondNodeID2, CORBA::Long LastNodeID2, - CORBA::Boolean CreatePoly) + CORBA::Boolean CreatePolygons, + CORBA::Boolean CreatePolyedrs) { SMESHDS_Mesh* aMesh = GetMeshDS(); @@ -945,7 +953,8 @@ SMESH::SMESH_MeshEditor::Sew_Error aSide2SecondNode, aSide2ThirdNode, true, - CreatePoly) ); + CreatePolygons, + CreatePolyedrs) ); } //======================================================================= @@ -985,7 +994,7 @@ SMESH::SMESH_MeshEditor::Sew_Error aSide2SecondNode, aSide2ThirdNode, true, - false) ); + false, false) ); } //======================================================================= @@ -999,7 +1008,8 @@ SMESH::SMESH_MeshEditor::Sew_Error CORBA::Long LastNodeIDOnFreeBorder, CORBA::Long FirstNodeIDOnSide, CORBA::Long LastNodeIDOnSide, - CORBA::Boolean CreatePoly) + CORBA::Boolean CreatePolygons, + CORBA::Boolean CreatePolyedrs) { SMESHDS_Mesh* aMesh = GetMeshDS(); @@ -1026,7 +1036,8 @@ SMESH::SMESH_MeshEditor::Sew_Error aSide2SecondNode, aSide2ThirdNode, false, - CreatePoly) ); + CreatePolygons, + CreatePolyedrs) ); } //=======================================================================