// number of subs can be changed in execution: like fillet
for(int a = 0; a < aComposite->numberOfSubs(); a++) {
FeaturePtr aSub = aComposite->subFeature(a);
+ updateArguments(aSub);
updateFeature(aSub);
alreadyProcessed.insert(aSub);
}
bool aJustUpdated = false;
ModelAPI_ExecState aState = theFeature->data()->execState();
+ if (aState == ModelAPI_StateInvalidArgument) // a chance to be corrected
+ aState = ModelAPI_StateMustBeUpdated;
// check the parameters: values can be changed
+ /* parameters evaluator now does this
std::list<AttributePtr> aDoubles =
theFeature->data()->attributes(ModelAPI_AttributeDouble::typeId());
std::list<AttributePtr>::iterator aDoubleIter = aDoubles.begin();
}
}
}
+ */
//if (aState == ModelAPI_StateDone) {// all referenced objects are ready to be used
//std::cout<<"Execute feature "<<theFeature->getKind()<<std::endl;
// check all features this feature depended on (recursive call of updateFeature)
static ModelAPI_ValidatorsFactory* aFactory = ModelAPI_Session::get()->validators();
- if (theFeature->isDisabled()) // nothing to do with disabled feature
+ if (theFeature->isDisabled() || // nothing to do with disabled feature
+ theFeature->data()->execState() == ModelAPI_StateInvalidArgument)
return;
bool aJustUpdated = false;