Salome HOME
Issue #1412:Selection mode preferences modified
[modules/shaper.git] / src / FeaturesPlugin / FeaturesPlugin_Partition.cpp
index e7e74c68e91a6d69aab4e473bb11793e084df74c..66a64ba435017e15ef2fa1c3853a286f408c3b40 100755 (executable)
@@ -93,7 +93,7 @@ void FeaturesPlugin_Partition::execute()
   bool isCombine = boolean(COMBINE_ID())->value();
 
   if(anObjects.empty()/* || aTools.empty()*/) {
-    std::string aFeatureError = "Not enough objects for partition operation";
+    std::string aFeatureError = "Error: Not enough objects for partition operation.";
     setError(aFeatureError);
     return;
   }
@@ -102,27 +102,27 @@ void FeaturesPlugin_Partition::execute()
 
   if(isCombine) {
     // Create single result.
-    if(!aTools.empty()) {
-      // This is a workaround for naming. Passing compound of objects as argument instead each object separately.
-      std::shared_ptr<GeomAPI_Shape> aCompoud = GeomAlgoAPI_CompoundBuilder::compound(anObjects);
-      anObjects.clear();
-      anObjects.push_back(aCompoud);
-    }
+    //if(!aTools.empty()) {
+    //  // This is a workaround for naming. Passing compound of objects as argument instead each object separately.
+    //  std::shared_ptr<GeomAPI_Shape> aCompoud = GeomAlgoAPI_CompoundBuilder::compound(anObjects);
+    //  anObjects.clear();
+    //  anObjects.push_back(aCompoud);
+    //}
     std::shared_ptr<GeomAlgoAPI_Partition> aPartitionAlgo(new GeomAlgoAPI_Partition(anObjects, aTools));
 
     // Checking that the algorithm worked properly.
     if (!aPartitionAlgo->isDone()) {
-      static const std::string aFeatureError = "Partition algorithm failed";
+      static const std::string aFeatureError = "Error: Partition algorithm failed.";
       setError(aFeatureError);
       return;
     }
     if (aPartitionAlgo->shape()->isNull()) {
-      static const std::string aShapeError = "Resulting shape is Null";
+      static const std::string aShapeError = "Error: Resulting shape is Null.";
       setError(aShapeError);
       return;
     }
     if (!aPartitionAlgo->isValid()) {
-      std::string aFeatureError = "Warning: resulting shape is not valid";
+      std::string aFeatureError = "Error: Resulting shape is not valid.";
       setError(aFeatureError);
       return;
     }
@@ -131,7 +131,10 @@ void FeaturesPlugin_Partition::execute()
       std::shared_ptr<ModelAPI_ResultBody> aResultBody = document()->createBody(data(), aResultIndex);
       aMakeShapeList.appendAlgo(aPartitionAlgo);
       GeomAPI_DataMapOfShapeShape& aMapOfShapes = *aPartitionAlgo->mapOfSubShapes().get();
-      loadNamingDS(aResultBody, anObjects.front(), aToolsForNaming, aPartitionAlgo->shape(), aMakeShapeList, aMapOfShapes);
+      std::shared_ptr<GeomAPI_Shape> aBaseShape = anObjects.front();
+      anObjects.pop_front();
+      aToolsForNaming.insert(aToolsForNaming.end(), anObjects.begin(), anObjects.end());
+      loadNamingDS(aResultBody, aBaseShape, aToolsForNaming, aPartitionAlgo->shape(), aMakeShapeList, aMapOfShapes);
       setResult(aResultBody, aResultIndex);
       aResultIndex++;
     }
@@ -144,17 +147,17 @@ void FeaturesPlugin_Partition::execute()
 
       // Checking that the algorithm worked properly.
       if (!aPartitionAlgo->isDone()) {
-        static const std::string aFeatureError = "Partition algorithm failed";
+        static const std::string aFeatureError = "Error: Partition algorithm failed.";
         setError(aFeatureError);
         return;
       }
       if (aPartitionAlgo->shape()->isNull()) {
-        static const std::string aShapeError = "Resulting shape is Null";
+        static const std::string aShapeError = "Error: Resulting shape is Null.";
         setError(aShapeError);
         return;
       }
       if (!aPartitionAlgo->isValid()) {
-        std::string aFeatureError = "Warning: resulting shape is not valid";
+        std::string aFeatureError = "Error: Resulting shape is not valid.";
         setError(aFeatureError);
         return;
       }