Resolve #11965 - no proper execute() for cross-property references
Solution B: parsequant() function
This commit is contained in:
committed by
Chris Hennes
parent
d7d9c84395
commit
c5ad7b50b6
@@ -1754,6 +1754,7 @@ FunctionExpression::FunctionExpression(const DocumentObject *_owner, Function _f
|
||||
case SINH:
|
||||
case SQRT:
|
||||
case STR:
|
||||
case PARSEQUANT:
|
||||
case TAN:
|
||||
case TANH:
|
||||
case TRUNC:
|
||||
@@ -2291,6 +2292,11 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std
|
||||
}
|
||||
case STR:
|
||||
return Py::String(args[0]->getPyValue().as_string());
|
||||
case PARSEQUANT: {
|
||||
auto quantity_text = args[0]->getPyValue().as_string();
|
||||
auto quantity_object = Quantity::parse(QString::fromStdString(quantity_text));
|
||||
return Py::asObject(new QuantityPy(new Quantity(quantity_object)));
|
||||
}
|
||||
case TRANSLATIONM: {
|
||||
if (args.size() != 1)
|
||||
break; // Break and proceed to 3 size version.
|
||||
@@ -2797,6 +2803,8 @@ void FunctionExpression::_toString(std::ostream &ss, bool persistent,int) const
|
||||
ss << "rotationz("; break;;
|
||||
case STR:
|
||||
ss << "str("; break;;
|
||||
case PARSEQUANT:
|
||||
ss << "parsequant("; break;;
|
||||
case TRANSLATIONM:
|
||||
ss << "translationm("; break;;
|
||||
case TUPLE:
|
||||
@@ -3679,6 +3687,7 @@ static void initParser(const App::DocumentObject *owner)
|
||||
registered_functions["rotationy"] = FunctionExpression::ROTATIONY;
|
||||
registered_functions["rotationz"] = FunctionExpression::ROTATIONZ;
|
||||
registered_functions["str"] = FunctionExpression::STR;
|
||||
registered_functions["parsequant"] = FunctionExpression::PARSEQUANT;
|
||||
registered_functions["translationm"] = FunctionExpression::TRANSLATIONM;
|
||||
registered_functions["tuple"] = FunctionExpression::TUPLE;
|
||||
registered_functions["vector"] = FunctionExpression::VECTOR;
|
||||
|
||||
Reference in New Issue
Block a user