Salome HOME
IPAL 21532: Preview on groups of faces and volumes on any mesh is missing
authoreap <eap@opencascade.com>
Tue, 22 Apr 2014 14:27:56 +0000 (18:27 +0400)
committereap <eap@opencascade.com>
Tue, 22 Apr 2014 14:27:56 +0000 (18:27 +0400)
  Fix for a case of multiple element selection => group creation

src/SMESHGUI/SMESHGUI_ShapeByMeshDlg.cxx

index 9c63004..d1a2dd8 100644 (file)
@@ -331,7 +331,7 @@ void SMESHGUI_ShapeByMeshOp::commitOperation()
 
       TopAbs_ShapeEnum aGroupType = TopAbs_SHAPE;
 
-      std::map<double, GEOM::GEOM_Object_wrap> aGeomObjectsMap;
+      std::map<int, GEOM::GEOM_Object_wrap> aGeomObjectsMap;
       GEOM::GEOM_Object_wrap aGeomObject;
 
       GEOM::GEOM_Object_var aMeshShape = myMesh->GetShapeToMesh();
@@ -343,7 +343,7 @@ void SMESHGUI_ShapeByMeshOp::commitOperation()
 
         if (aGeomObject->_is_nil()) continue;
 
-        double anId = aShapesOp->GetSubShapeIndex(aMeshShape, aGeomObject);
+        int anId = aShapesOp->GetSubShapeIndex(aMeshShape, aGeomObject);
         if (aShapesOp->IsDone() && !aGeomObjectsMap.count(anId) )
         {
           aGeomObjectsMap[anId] = aGeomObject;
@@ -372,13 +372,13 @@ void SMESHGUI_ShapeByMeshOp::commitOperation()
         aGeomObjects->length( aNumberOfGO );
 
         int i = 0;
-        std::map<double, GEOM::GEOM_Object_wrap>::iterator anIter;
+        std::map<int, GEOM::GEOM_Object_wrap>::iterator anIter;
         for (anIter = aGeomObjectsMap.begin(); anIter!=aGeomObjectsMap.end(); anIter++)
-          aGeomObjects[i++] = (*anIter).second.in();
+          aGeomObjects[i++] = GEOM::GEOM_Object::_duplicate( (*anIter).second.in() );
 
         //create geometry group
         aGeomObject = aGroupOp->CreateGroup(aMeshShape, aGroupType);
-        aGroupOp->UnionList(myGeomObj, aGeomObjects);
+        aGroupOp->UnionList(aGeomObject, aGeomObjects);
 
         if (!aGroupOp->IsDone())
           return;