Salome HOME
Merge from branch BR_Dev_For_4_0 (from tag mergeto_BR_QT4_Dev_12Feb08)
[modules/smesh.git] / src / SMESH_I / SMESH_Mesh_i.cxx
index 32e8ee2bc15be6d9e36a7b8a6eef3b84bd38fab3..3de13f6f6a9433635af3d7b8f429a2d3a356f62f 100644 (file)
@@ -1946,12 +1946,12 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshNodesId(const CORBA::Long ShapeID, CO
   SMESHDS_SubMesh* SDSM = SM->GetSubMeshDS();
   if(!SDSM) return aResult._retn();
 
-  map<int,const SMDS_MeshElement*> theElems;
-  if( !all || (SDSM->NbElements()==0 && SDSM->NbNodes()==1) ) {
+  set<int> theElems;
+  if( !all || (SDSM->NbElements()==0) ) { // internal nodes or vertex submesh
     SMDS_NodeIteratorPtr nIt = SDSM->GetNodes();
     while ( nIt->more() ) {
       const SMDS_MeshNode* elem = nIt->next();
-      theElems.insert( make_pair(elem->GetID(),elem) );
+      theElems.insert( elem->GetID() );
     }
   }
   else { // all nodes of submesh elements
@@ -1961,16 +1961,16 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshNodesId(const CORBA::Long ShapeID, CO
       SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
       while ( nIt->more() ) {
         const SMDS_MeshElement* elem = nIt->next();
-        theElems.insert( make_pair(elem->GetID(),elem) );
+        theElems.insert( elem->GetID() );
       }
     }
   }
 
   aResult->length(theElems.size());
-  map<int, const SMDS_MeshElement * >::iterator itElem;
+  set<int>::iterator itElem;
   int i = 0;
   for ( itElem = theElems.begin(); itElem != theElems.end(); itElem++ )
-    aResult[i++] = (*itElem).first;
+    aResult[i++] = *itElem;
 
   return aResult._retn();
 }