]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
First volume
authorcg246364 <clarisse.genrault@cea.fr>
Fri, 9 Jul 2021 12:21:05 +0000 (14:21 +0200)
committercg246364 <clarisse.genrault@cea.fr>
Fri, 9 Jul 2021 12:21:05 +0000 (14:21 +0200)
src/ModelAPI/ModelAPI_Events.cpp
src/ModelAPI/ModelAPI_Events.h
src/ModelAPI/ModelAPI_Feature.cpp
src/ModelAPI/ModelAPI_Feature.h
src/PartSet/PartSet_TreeNodes.cpp
src/PartSet/PartSet_TreeNodes.h
src/PrimitivesPlugin/PrimitivesPlugin_Box.cpp

index 6b0ea3ef5e639662996e847d78467e593973f101..22b8aa12d313838ebe2e28ca76c627e009f900a9 100644 (file)
@@ -167,6 +167,16 @@ void ModelAPI_ParameterEvalMessage::setResults(
   myIsProcessed = true;
 }
 
+void ModelAPI_ParameterEvalMessage::setVolumes(
+    const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
+    const double theResult, const std::string& theError)
+{
+  myParamsList = theParamsList;
+  myResult = theResult;
+  myError = theError;
+  myIsProcessed = true;
+}
+
 bool ModelAPI_ParameterEvalMessage::isProcessed()
 {
   return myIsProcessed;
@@ -214,6 +224,14 @@ void ModelAPI_BuildEvalMessage::setResults(
   myError = theError;
   myIsProcessed = true;
 }
+void ModelAPI_BuildEvalMessage::setVolumes(
+            const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
+            const std::string& theError)
+{
+  myParamsList = theParamsList;
+  myError = theError;
+  myIsProcessed = true;
+}
 
 const std::list<std::shared_ptr<ModelAPI_ResultParameter> >&
   ModelAPI_BuildEvalMessage::params() const
index a5dc0dde9cad1da4da11ea5ac6b6747c022e0025..c8d77349c3d509f1dbd084f8fbdc57e175d4a2dd 100644 (file)
@@ -342,6 +342,9 @@ class ModelAPI_ParameterEvalMessage : public Events_Message
   MODELAPI_EXPORT void setResults(
     const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
     const double theResult, const std::string& theError);
+  MODELAPI_EXPORT void setVolumes(
+    const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
+    const double theResult, const std::string& theError);
   /// Returns true if the expression is processed
   MODELAPI_EXPORT bool isProcessed();
   /// Returns the results of processing: list of parameters found in the expression
@@ -395,6 +398,10 @@ class ModelAPI_BuildEvalMessage : public Events_Message
   MODELAPI_EXPORT void setResults(
                        const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
                        const std::string& theError);
+  /// Sets the results of processing
+  MODELAPI_EXPORT void setVolumes(
+                       const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
+                       const std::string& theError);
   /// Returns the results of processing: list of parameters found in the expression
   MODELAPI_EXPORT const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& params() const;
   /// Returns true if the expression is processed
index 14397b0fea7efed0e0c42ee1af67e89196f375c8..f05ceaf702808468312e7dfd5b836bfeb6e679de 100644 (file)
@@ -87,6 +87,21 @@ void ModelAPI_Feature::setResult(const std::shared_ptr<ModelAPI_Result>& theResu
   theResult->setDisabled(theResult, false);
 }
 
+void ModelAPI_Feature::setVolume(const std::shared_ptr<ModelAPI_Result>& theResult,
+                                 const int theIndex)
+{
+  std::list<std::shared_ptr<ModelAPI_Result> >::iterator aResIter = myVolumes.begin();
+  for (int anIndex = 0; anIndex < theIndex; anIndex++) {
+    aResIter++;
+  }
+  if (aResIter == myVolumes.end()) {  // append
+    myVolumes.push_back(theResult);
+  } else {  // update
+    *aResIter = theResult;
+  }
+  theResult->setDisabled(theResult, false);
+}
+
 void ModelAPI_Feature::eraseResultFromList(const std::shared_ptr<ModelAPI_Result>& theResult)
 {
   std::list<std::shared_ptr<ModelAPI_Result> >::iterator aResIter = myResults.begin();
index 235275f30def55d0e1555a8decaca2640006f56b..297579ba1ba702667da6ee8b5fd36deca7409dc7 100644 (file)
@@ -39,6 +39,7 @@ class ModelAPI_Feature : public ModelAPI_Object
 {
   ///< list of current results of this feature
   std::list<std::shared_ptr<ModelAPI_Result> > myResults;
+  std::list<std::shared_ptr<ModelAPI_Result> > myVolumes;
   ///< is feature disabled or not
   bool myIsDisabled;
   ///< is feature is stable (not editing)
@@ -109,6 +110,12 @@ class ModelAPI_Feature : public ModelAPI_Object
   /// removes the result from the list of feature (not doing in disabled): normally this
   /// method is not used from features. only internally
   MODELAPI_EXPORT void eraseResultFromList(const std::shared_ptr<ModelAPI_Result>& theResult);
+  
+  /// sets the alone volume
+  MODELAPI_EXPORT void setVolume(const std::shared_ptr<ModelAPI_Result>& theResult);
+  /// sets the result by index (zero based), results before this must be set before
+  MODELAPI_EXPORT void setVolume(const std::shared_ptr<ModelAPI_Result>& theResult,
+                                 const int theIndex);
 
   /// Returns true if result is persistent (stored in document) and on undo-redo, save-open
   /// it is not needed to recompute it.
index dab8161792d418f6694d4951da9faea858ae1b52..aea786b9daa0705cf0cb34a1a5379dd3510ef41a 100644 (file)
@@ -439,6 +439,8 @@ QString PartSet_FolderNode::name() const
     return QObject::tr("Fields");
   case GroupsFolder:
     return QObject::tr("Groups");
+  case VolumesFolder:
+    return QObject::tr("Volumes");
   }
   return "NoName";
 }
@@ -467,6 +469,8 @@ QVariant PartSet_FolderNode::data(int theColumn, int theRole) const
         return aConstrIco;
       case GroupsFolder:
         return aConstrIco;
+      case VolumesFolder:
+        return aConstrIco;
       }
     }
   }
@@ -571,6 +575,8 @@ std::string PartSet_FolderNode::groupName() const
     return ModelAPI_ResultField::group();
   case GroupsFolder:
     return ModelAPI_ResultGroup::group();
+  case VolumesFolder:
+    return ModelAPI_ResultBody::group();
   }
   return "";
 }
@@ -863,10 +869,12 @@ PartSet_PartRootNode::PartSet_PartRootNode(const ObjectPtr& theObj, ModuleBase_I
   myResultsFolder = new PartSet_FolderNode(this, PartSet_FolderNode::ResultsFolder);
   myFieldsFolder = new PartSet_FolderNode(this, PartSet_FolderNode::FieldsFolder);
   myGroupsFolder = new PartSet_FolderNode(this, PartSet_FolderNode::GroupsFolder);
+  myVolumesFolder = new PartSet_FolderNode(this, PartSet_FolderNode::VolumesFolder);
 
   myChildren.append(myParamsFolder);
   myChildren.append(myConstrFolder);
   myChildren.append(myResultsFolder);
+  myChildren.append(myVolumesFolder);
 
   update();
 }
@@ -894,6 +902,7 @@ void PartSet_PartRootNode::update()
   myResultsFolder->update();
   myFieldsFolder->update();
   myGroupsFolder->update();
+  myVolumesFolder->update();
 
   bool aHasFields = myFieldsFolder->childrenCount() > 0;
   bool aHasGroups = myGroupsFolder->childrenCount() > 0;
index 599fe6edea2ba8f94e7d8124640fe54469ca2890..9d034cc0e251feeef0737dbf5321b2e2652463b7 100644 (file)
@@ -113,7 +113,8 @@ public:
     PartsFolder,
     ResultsFolder,
     FieldsFolder,
-    GroupsFolder
+    GroupsFolder,
+    VolumesFolder
   };
 
   PartSet_FolderNode(ModuleBase_ITreeNode* theParent, FolderType theType);
@@ -296,6 +297,7 @@ private:
   PartSet_FolderNode* myResultsFolder;
   PartSet_FolderNode* myFieldsFolder;
   PartSet_FolderNode* myGroupsFolder;
+  PartSet_FolderNode* myVolumesFolder;
 
   ObjectPtr myObject;
 };
index feea6763d29bb0f9d8b8daabda8cd42279bc1340..906cd11f7fe2589111ce94016baef4d165e7164f 100644 (file)
@@ -203,6 +203,7 @@ void PrimitivesPlugin_Box::createBoxByOnePointAndDims()
   ResultBodyPtr aResultBox = document()->createBody(data(), aResultIndex);
   loadNamingDS(aBoxAlgo, aResultBox);
   setResult(aResultBox, aResultIndex);
+  setVolume(aResultBox, aResultIndex);
 }
 
 //=================================================================================================