Salome HOME
Extension of Parameters interface: to set/get double values of results
[modules/shaper.git] / src / ParametersAPI / ParametersAPI_Parameter.cpp
index b6b9374feaae0314e6353198737177a820e609a7..f4047896ec3e12d79bb6723d5f3ff45264344e5d 100644 (file)
@@ -10,6 +10,7 @@
 //--------------------------------------------------------------------------------------
 #include <ModelHighAPI_Dumper.h>
 #include <ModelHighAPI_Tools.h>
+#include <ModelAPI_ResultParameter.h>
 //--------------------------------------------------------------------------------------
 ParametersAPI_Parameter::ParametersAPI_Parameter(
     const std::shared_ptr<ModelAPI_Feature> & theFeature)
@@ -35,6 +36,22 @@ ParametersAPI_Parameter::ParametersAPI_Parameter(
   }
 }
 
+void ParametersAPI_Parameter::setValue(const double theValue)
+{
+  // convert value to the expression string
+  std::ostringstream aValueStr;
+  aValueStr<<theValue;
+  fillAttribute(aValueStr.str(), expression());
+  execute();
+}
+
+double ParametersAPI_Parameter::value() {
+  ResultParameterPtr aRes =
+    std::dynamic_pointer_cast<ModelAPI_ResultParameter>(feature()->firstResult());
+  // it may raise an exception if result is invalid
+  return aRes->data()->real(ModelAPI_ResultParameter::VALUE())->value();
+}
+
 ParametersAPI_Parameter::~ParametersAPI_Parameter()
 {
 }