Salome HOME
Quick correction to do not build coincidence to central point of reentrant tangent arc
[modules/shaper.git] / src / ParametersPlugin / ParametersPlugin_Parameter.cpp
index 949e14c8568b94480db1d7602a3157fb4f381fac..4428be15b7f949ef5dcd3d17adfadf7fc2173b89 100644 (file)
@@ -34,7 +34,9 @@ void ParametersPlugin_Parameter::initAttributes()
 {
   data()->addAttribute(VARIABLE_ID(), ModelAPI_AttributeString::typeId());
   data()->addAttribute(EXPRESSION_ID(), ModelAPI_AttributeString::typeId());
+
   data()->addAttribute(COMMENT_ID(), ModelAPI_AttributeString::typeId());
+  ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), COMMENT_ID());
 
   data()->addAttribute(EXPRESSION_ERROR_ID(), ModelAPI_AttributeString::typeId());
   data()->string(EXPRESSION_ERROR_ID())->setIsArgument(false);
@@ -115,13 +117,18 @@ double ParametersPlugin_Parameter::evaluate(const std::string& theExpression, st
 
     double aValue;
     ResultParameterPtr aParamRes;
-    if (!ModelAPI_Tools::findVariable(aVariableName, aValue, aParamRes, aDocument)) continue;
+    if (!ModelAPI_Tools::findVariable(std::dynamic_pointer_cast<ModelAPI_Feature>(data()->owner()),
+      aVariableName, aValue, aParamRes, aDocument)) continue;
     aParamsList.push_back(aParamRes);
 
     std::ostringstream sstream;
     sstream << aValue;
     std::string aParamValue = sstream.str();
-    aContext.push_back(*it + "=" + aParamValue);
+    size_t aPos = aParamValue.find(".");
+    std::string aPnt = "";
+    if (aPos == std::string::npos)
+      aPnt = ".";
+    aContext.push_back(*it + "=" + aParamValue + aPnt);
   }
   // compare the list of parameters to store if changed
   AttributeRefListPtr aParams = reflist(ARGUMENTS_ID());