X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FParametersPlugin%2FParametersPlugin_Parameter.cpp;h=745d0c7651c185f9a5170549da7cf454c0ec9455;hb=b2418a13c302e03ed5f80dbdae0cd20f0abd16af;hp=498b83d9a65c1583aa2766838d52635d17f6e64d;hpb=7b13546ebd4d7a935189869b0a0c7b72a6f84479;p=modules%2Fshaper.git diff --git a/src/ParametersPlugin/ParametersPlugin_Parameter.cpp b/src/ParametersPlugin/ParametersPlugin_Parameter.cpp index 498b83d9a..745d0c765 100644 --- a/src/ParametersPlugin/ParametersPlugin_Parameter.cpp +++ b/src/ParametersPlugin/ParametersPlugin_Parameter.cpp @@ -5,18 +5,53 @@ // Author: sbh #include "ParametersPlugin_Parameter.h" +#include + #include +#include +#include + ParametersPlugin_Parameter::ParametersPlugin_Parameter() { + myInterp = new ParametersPlugin_PyInterp(); + myInterp->initialize(); +} + +ParametersPlugin_Parameter::~ParametersPlugin_Parameter() +{ + delete myInterp; } void ParametersPlugin_Parameter::initAttributes() { - data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(), ModelAPI_AttributeString::type()); - data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(), ModelAPI_AttributeString::type()); + data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(), + ModelAPI_AttributeString::typeId()); + data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(), + ModelAPI_AttributeString::typeId()); } void ParametersPlugin_Parameter::execute() { + std::string anExpression = string(ParametersPlugin_Parameter::EXPRESSION_ID())->value(); + if(anExpression.empty()) + return; + ResultParameterPtr aParameterResult = document()->createParameter(data()); + //AttributeDoublePtr anAttr = aParameterResult->data()->real(ModelAPI_ResultParameter::VALUE()); + + double aValue = evaluate(anExpression); + //anAttr->setValue(aValue); + setResult(aParameterResult); + +} + +double ParametersPlugin_Parameter::evaluate(std::string theExpression) +{ + std::list anExprParams = myInterp->compile(theExpression); + // find expression's params in the model + // todo + // myInterp->extendLocalContext(); + std::string outError; + return myInterp->evaluate(theExpression, outError); + }