Salome HOME
Improve updating "Multi" constraints
[modules/shaper.git] / src / SketchSolver / SketchSolver_ConstraintMultiTranslation.cpp
index 5244ec6a4f5f66e1e5f43e6a391c526d2623a59a..b05827b9d4dc45749b00fd55a70646521855288d 100644 (file)
@@ -17,8 +17,8 @@ void SketchSolver_ConstraintMultiTranslation::getAttributes(
     bool& theFullValue, std::list<EntityWrapperPtr>& theEntities)
 {
   DataPtr aData = myBaseConstraint->data();
-  AttributePtr aStartPointAttr = aData->attribute(SketchPlugin_MultiTranslation::START_POINT_ID());
-  AttributePtr aEndPointAttr = aData->attribute(SketchPlugin_MultiTranslation::END_POINT_ID());
+  AttributeRefAttrPtr aStartPointAttr = aData->refattr(SketchPlugin_MultiTranslation::START_POINT_ID());
+  AttributeRefAttrPtr aEndPointAttr = aData->refattr(SketchPlugin_MultiTranslation::END_POINT_ID());
   if (!aStartPointAttr || !aStartPointAttr->isInitialized() ||
       !aEndPointAttr || !aEndPointAttr->isInitialized()) {
     myErrorMsg = SketchSolver_Error::NOT_INITIALIZED();
@@ -36,6 +36,14 @@ void SketchSolver_ConstraintMultiTranslation::getAttributes(
   theFullValue = aMethodTypeAttr->value() != "SingleValue";
 
   getEntities(theEntities);
+
+  // add owner of start and end points of Multi-Translation to the list of monitored features
+  FeaturePtr anOwner = ModelAPI_Feature::feature(aStartPointAttr->attr()->owner());
+  if (anOwner)
+    myFeatures.insert(anOwner);
+  anOwner = ModelAPI_Feature::feature(aEndPointAttr->attr()->owner());
+  if (anOwner)
+    myFeatures.insert(anOwner);
 }
 
 void SketchSolver_ConstraintMultiTranslation::process()