mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-21 10:13:43 +03:00
0031697: Foundation Classes - Expr_GeneralExpression::Derivative does not seem to work (691 & 720)
This commit is contained in:
parent
68556f75f9
commit
abca9f3eb8
@ -130,7 +130,7 @@ Standard_Boolean Expr_NamedUnknown::IsLinear () const
|
|||||||
Handle(Expr_GeneralExpression) Expr_NamedUnknown::Derivative (const Handle(Expr_NamedUnknown)& X) const
|
Handle(Expr_GeneralExpression) Expr_NamedUnknown::Derivative (const Handle(Expr_NamedUnknown)& X) const
|
||||||
{
|
{
|
||||||
Handle(Expr_NamedUnknown) me = this;
|
Handle(Expr_NamedUnknown) me = this;
|
||||||
if (me != X) {
|
if (!me->IsIdentical(X)) {
|
||||||
if (IsAssigned()) {
|
if (IsAssigned()) {
|
||||||
return myExpression->Derivative(X);
|
return myExpression->Derivative(X);
|
||||||
}
|
}
|
||||||
|
@ -2664,6 +2664,54 @@ static Standard_Integer OCC30869 (Draw_Interpretor& theDI, Standard_Integer theA
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <ExprIntrp_GenExp.hxx>
|
||||||
|
#include <Expr_GeneralExpression.hxx>
|
||||||
|
#include <Expr_NamedUnknown.hxx>
|
||||||
|
//=======================================================================
|
||||||
|
//function : OCC31697
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
static Standard_Integer OCC31697(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
|
||||||
|
{
|
||||||
|
if (argc < 3)
|
||||||
|
{
|
||||||
|
di << "Usage : " << argv[0] << " expression variable\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCollection_AsciiString anExpStr(argv[1]);
|
||||||
|
TCollection_AsciiString aVarStr(argv[2]);
|
||||||
|
|
||||||
|
Handle(ExprIntrp_GenExp) exprIntrp = ExprIntrp_GenExp::Create();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Create the expression
|
||||||
|
exprIntrp->Process(anExpStr);
|
||||||
|
|
||||||
|
if (!exprIntrp->IsDone())
|
||||||
|
{
|
||||||
|
di << "Interpretation of expression " << argv[1] << " failed\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(Expr_GeneralExpression) anExpr = exprIntrp->Expression();
|
||||||
|
Handle(Expr_NamedUnknown) aVar = new Expr_NamedUnknown(aVarStr);
|
||||||
|
|
||||||
|
if (!anExpr->Contains(aVar))
|
||||||
|
{
|
||||||
|
di << "Expression " << argv[1] << " does not contain variable " << argv[2] << "\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(Expr_GeneralExpression) aDer = anExpr->Derivative(aVar);
|
||||||
|
|
||||||
|
TCollection_AsciiString aDerStr = aDer->String();
|
||||||
|
|
||||||
|
di << "The derivative of the " << argv[1] << " by " << argv[2] << " is equal to " << aDerStr << "\n";
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void QABugs::Commands_20(Draw_Interpretor& theCommands) {
|
void QABugs::Commands_20(Draw_Interpretor& theCommands) {
|
||||||
const char *group = "QABugs";
|
const char *group = "QABugs";
|
||||||
|
|
||||||
@ -2707,5 +2755,7 @@ void QABugs::Commands_20(Draw_Interpretor& theCommands) {
|
|||||||
"Usage: OCC30869 wire",
|
"Usage: OCC30869 wire",
|
||||||
__FILE__, OCC30869, group);
|
__FILE__, OCC30869, group);
|
||||||
|
|
||||||
|
theCommands.Add("OCC31697", "OCC31697 expression variable", __FILE__, OCC31697, group);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user