]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Task #3059 implementation: 5.1.1 When “move to the end” of a group, propose to the...
authormpv <mpv@opencascade.com>
Wed, 4 Dec 2019 12:23:31 +0000 (15:23 +0300)
committermpv <mpv@opencascade.com>
Wed, 4 Dec 2019 12:23:46 +0000 (15:23 +0300)
30 files changed:
src/CollectionPlugin/CollectionPlugin_Group.cpp
src/FeaturesPlugin/FeaturesPlugin_BooleanCommon.h
src/FeaturesPlugin/FeaturesPlugin_BooleanCut.h
src/FeaturesPlugin/FeaturesPlugin_BooleanFill.h
src/FeaturesPlugin/FeaturesPlugin_BooleanFuse.h
src/FeaturesPlugin/FeaturesPlugin_BooleanSmash.h
src/FeaturesPlugin/FeaturesPlugin_Chamfer.h
src/FeaturesPlugin/FeaturesPlugin_CompositeBoolean.h
src/FeaturesPlugin/FeaturesPlugin_Extrusion.h
src/FeaturesPlugin/FeaturesPlugin_ExtrusionCut.h
src/FeaturesPlugin/FeaturesPlugin_ExtrusionFuse.h
src/FeaturesPlugin/FeaturesPlugin_Fillet.h
src/FeaturesPlugin/FeaturesPlugin_Measurement.h
src/FeaturesPlugin/FeaturesPlugin_MultiRotation.h
src/FeaturesPlugin/FeaturesPlugin_MultiTranslation.h
src/FeaturesPlugin/FeaturesPlugin_Partition.h
src/FeaturesPlugin/FeaturesPlugin_Pipe.h
src/FeaturesPlugin/FeaturesPlugin_Placement.h
src/FeaturesPlugin/FeaturesPlugin_Recover.h
src/FeaturesPlugin/FeaturesPlugin_RemoveSubShapes.h
src/FeaturesPlugin/FeaturesPlugin_Revolution.h
src/FeaturesPlugin/FeaturesPlugin_RevolutionCut.h
src/FeaturesPlugin/FeaturesPlugin_RevolutionFuse.h
src/FeaturesPlugin/FeaturesPlugin_Rotation.h
src/FeaturesPlugin/FeaturesPlugin_Scale.h
src/FeaturesPlugin/FeaturesPlugin_Symmetry.h
src/FeaturesPlugin/FeaturesPlugin_Translation.h
src/FeaturesPlugin/FeaturesPlugin_Union.h
src/ModelAPI/ModelAPI_Tools.cpp
src/ModelAPI/ModelAPI_Tools.h

index c2110a64ee9ed21c8b99c8b9bd83212a79790eae..57a2804e3e15aab47a86a9a2e90cab0138c31f4a 100644 (file)
@@ -26,6 +26,7 @@
 #include <ModelAPI_AttributeSelectionList.h>
 #include <ModelAPI_AttributeIntArray.h>
 #include <ModelAPI_ResultGroup.h>
+#include <ModelAPI_Tools.h>
 #include <sstream>
 
 CollectionPlugin_Group::CollectionPlugin_Group()
@@ -108,6 +109,7 @@ bool CollectionPlugin_Group::customAction(const std::string& theActionId)
       AttributeSelectionListPtr aNewList = aNew->selectionList(LIST_ID());
       aNewList->setSelectionType(aList->selectionType());
       aNewList->append(anOldAttr->contextObject(), anOldAttr->value());
+      aNew->execute();
       aResults.push_front(aNew); // to keep the order
     }
     aResults.push_back(data()->owner());
@@ -123,18 +125,7 @@ bool CollectionPlugin_Group::customAction(const std::string& theActionId)
           int aResSuf = aSuffix - 1;
           std::string aResName = findName(firstResult()->data()->name(), aResSuf, aResNames);
           aFeat->firstResult()->data()->setName(aResName);
-          // set the same color of result as in origin
-          if (firstResult()->data()->attribute(ModelAPI_Result::COLOR_ID()).get()) {
-            AttributeIntArrayPtr aSourceColor =
-              firstResult()->data()->intArray(ModelAPI_Result::COLOR_ID());
-            if (aSourceColor.get() && aSourceColor->size()) {
-              AttributeIntArrayPtr aDestColor =
-                aFeat->firstResult()->data()->intArray(ModelAPI_Result::COLOR_ID());
-              aDestColor->setSize(aSourceColor->size());
-              for(int a = 0; a < aSourceColor->size(); a++)
-                aDestColor->setValue(a, aSourceColor->value(a));
-            }
-          }
+          ModelAPI_Tools::copyVisualizationAttrs(firstResult(), aFeat->firstResult());
         }
       }
       // remove also filters if split performed
index 31bb1335d37a8671b9e7c52abdb2a2a420008795..c4c39566c262f186296217512791e44bfc1e3992 100644 (file)
@@ -83,7 +83,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 public:
index 76ffe70b1906a57e9df40350e908f77beb7f4fd8..c49a47666d7b9a5ae07ec24a3a0b84dc81ac4907 100644 (file)
@@ -49,7 +49,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 public:
index 386cb6ec6fb88c0dd9917c042da2b4c8590b03de..3e8d145e1e10448aa600ebce5ea623e161687164 100644 (file)
@@ -46,7 +46,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 public:
index a16c8781ae07eff63d923f11bfb36a3af5422998..db8c2d01d6eae9332032f41e873f9e7edd3c28b4 100644 (file)
@@ -88,7 +88,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 public:
index ed611c0aeccc8a202041893e3f7655a8c4971beb..ffdc4999be3453c756541e77eeae0cd31cafec96 100644 (file)
@@ -62,7 +62,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 public:
index cad7204e980f8507228a17aaa0b3e7e78ec41eb3..eea23daf7737c1aa00395697b83c090c096c82bc 100644 (file)
@@ -103,7 +103,7 @@ public:
     return MY_ANGLE_ID;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 3c5681de0b6b4bb1a4383eac5d0ba8e1d5803d13..13a0434682055e820fe128239c3242b63e4acff3 100644 (file)
@@ -46,7 +46,7 @@ public:
     return MY_OBJECTS_ID;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void executeCompositeBoolean();
 
 protected:
index 7a80cc5875570c0f754bb9d10601ca8d0646e7c0..1f657b30afceb5c7af7bcd94abf75c76f4300ce6 100644 (file)
@@ -133,7 +133,7 @@ public:
   /// Request for initialization of data model of the feature: adding all attributes.
   FEATURESPLUGIN_EXPORT virtual void initAttributes();
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 protected:
index 98707995e28f5466854e3a95ea7a68ad0c102697..6747937011da8c070393a88e78ce1de384a81f20 100644 (file)
@@ -46,7 +46,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 };
 
index a2daea88a44c51a251be0dc499987d4d58b7ded3..9ac22764382020f89e9b4ebf11fb887d2253e6a6 100644 (file)
@@ -46,7 +46,7 @@ class FeaturesPlugin_ExtrusionFuse : public FeaturesPlugin_ExtrusionBoolean
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
  private:
index 1b0cb782f82de9d56872adf8946fc0533a57f458..ac7be4493b6ea43e7259d3688ca5dcdb38f47b4f 100644 (file)
@@ -95,7 +95,7 @@ public:
     return START_RADIUS_ID();
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the fillet algorithm and stores it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index e84668d7dbe5790b559907a85abba107205bbb1f..06e20746fc36299d10c9b7b65b888b84d0964e2a 100644 (file)
@@ -173,7 +173,7 @@ public:
     return MY_RESULT_VALUES_ID;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index f7dc3dc8d304ce105ca0011301e3959ab38b90e8..4b3cb965d80beb166b3aca07b69bdeb00797e7bb 100644 (file)
@@ -110,7 +110,7 @@ class FeaturesPlugin_MultiRotation : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 9571ed3d218c91228b58167d2eadd62c5f625b32..6f817ce41f82351ee654dcb1e0c9a0069fefaf04 100644 (file)
@@ -104,7 +104,7 @@ class FeaturesPlugin_MultiTranslation : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index aee69380b230c82534e5913aac6f9fc85e18e463..b358831d0285bafaced16ff9fac42241a69e5161 100644 (file)
@@ -53,7 +53,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index 078ae9f3c6570fd1d0378b13f2762b12f805977c..0ab1a9b6f6e3db8e97c9d771ba759e4e7901b912 100644 (file)
@@ -109,7 +109,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index 9e1e4db74cdbc2075591d56a00f957a0bd60f92c..d09a0e3fb623c790f6b4e2e646c123500b55ba1f 100644 (file)
@@ -86,7 +86,7 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index 8f23774452fbc8ba4c692c55d8c6f6b47673613f..d611bfaf7c7d541d0cadff9ba93b82ec55e614bb 100644 (file)
@@ -88,7 +88,7 @@ class FeaturesPlugin_Recover : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index 15e51f32bcdd5d52c51c1a1ba0042d8226e76559..bfc04d0a81e780b236ea42f79ed39305702d7b11 100644 (file)
@@ -97,7 +97,7 @@ public:
   /// \param[in] theID identifier of changed attribute.
   FEATURESPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
 private:
index 820ae3471fcf9acfb924ff983202a4f73038a113..9fd8ea09cd60474cb63bcadbc408153740be7f41 100644 (file)
@@ -125,7 +125,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 5a255735a24cb962cb8f5ca92b4c33d90c117c16..12ed6b42e04be64b3f564b0203cd33c89083529a 100644 (file)
@@ -46,7 +46,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 };
 
index 81042b2b26fe559d71a14fc26f6f3369f78785dc..061b4564ccda92c6ef3112a495f8ee214490fa55 100644 (file)
@@ -46,7 +46,7 @@ class FeaturesPlugin_RevolutionFuse : public FeaturesPlugin_RevolutionBoolean
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 };
 
index c6b80c35a42f79e3f8fb66cde21a1daac0822c68..e16601271c7ab00f7d2f0b298d00093e0f65b25f 100644 (file)
@@ -109,7 +109,7 @@ class FeaturesPlugin_Rotation : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 873ae607537add0f02158ead1afdb500d259390d..a679a0cf8be08c4365d56b8952a0f82867146332 100644 (file)
@@ -110,7 +110,7 @@ class FeaturesPlugin_Scale : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index fb4b47da8a49e6fb11dabf1decabbad37500fdea..f91f29a2ae850cd5267e61e4234be13f5f7f2946 100644 (file)
@@ -113,7 +113,7 @@ class FeaturesPlugin_Symmetry : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 257c681e09ca47bb78a14d0643e0f57f4c8056f9..3437c5be695285d7cbd1642f62816bc577b5e436 100644 (file)
@@ -130,7 +130,7 @@ class FeaturesPlugin_Translation : public ModelAPI_Feature
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed.
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes.
index 797a5573f12f685747202e9596a3d88c75e8cbf7..9ec3e432257e5d2301c2a8a9b07e46ba73341b8e 100644 (file)
@@ -50,7 +50,7 @@ public:
     return MY_KIND;
   }
 
-  /// Creates a new part document if needed
+  /// Performs the algorithm and stores results it in the data structure.
   FEATURESPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
index 29bbb8fe02fc0ed5683b8ccfa377682254f15b6d..1c32b318ea1a39c86b89b6d046dccb6370378721 100644 (file)
@@ -834,4 +834,35 @@ double getTransparency(const std::shared_ptr<ModelAPI_Result>& theResult)
 }
 // LCOV_EXCL_STOP
 
+void copyVisualizationAttrs(
+  std::shared_ptr<ModelAPI_Result>& theSource, std::shared_ptr<ModelAPI_Result>& theDest)
+{
+  // color
+  AttributeIntArrayPtr aSourceColor = theSource->data()->intArray(ModelAPI_Result::COLOR_ID());
+  if (aSourceColor.get() && aSourceColor->isInitialized() && aSourceColor->size()) {
+    AttributeIntArrayPtr aDestColor = theDest->data()->intArray(ModelAPI_Result::COLOR_ID());
+    if (aDestColor.get()) {
+      aDestColor->setSize(aSourceColor->size());
+      for(int a = 0; a < aSourceColor->size(); a++)
+        aDestColor->setValue(a, aSourceColor->value(a));
+    }
+  }
+  // deflection
+  AttributeDoublePtr aSourceDefl = theSource->data()->real(ModelAPI_Result::DEFLECTION_ID());
+  if (aSourceDefl.get() && aSourceDefl->isInitialized()) {
+    AttributeDoublePtr aDestDefl = theDest->data()->real(ModelAPI_Result::DEFLECTION_ID());
+    if (aDestDefl.get()) {
+      aDestDefl->setValue(aSourceDefl->value());
+    }
+  }
+  // transparency
+  AttributeDoublePtr aSourceTransp = theSource->data()->real(ModelAPI_Result::TRANSPARENCY_ID());
+  if (aSourceTransp.get() && aSourceTransp->isInitialized()) {
+    AttributeDoublePtr aDestTransp = theDest->data()->real(ModelAPI_Result::TRANSPARENCY_ID());
+    if (aDestTransp.get()) {
+      aDestTransp->setValue(aSourceTransp->value());
+    }
+  }
+}
+
 } // namespace ModelAPI_Tools
index 83fbdb888b0b3cf2d2accda2296a09603b1172cb..574f63829fd49e124d56e7b79a133f31ebdc413e 100644 (file)
@@ -229,6 +229,13 @@ MODELAPI_EXPORT void getColor(const std::shared_ptr<ModelAPI_Result>& theResult,
 */
 MODELAPI_EXPORT double getTransparency(const std::shared_ptr<ModelAPI_Result>& theResult);
 
+/*! Copies all visualization attributes from one result to another.
+* \param theSource a result that contains the copied attributes
+* \param theDest a destination result that takes the visualization attributes
+*/
+MODELAPI_EXPORT void copyVisualizationAttrs(std::shared_ptr<ModelAPI_Result>& theSource,
+                                            std::shared_ptr<ModelAPI_Result>& theDest);
+
 }
 
 #endif