Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_ConstraintMirror.cpp
index fde907d815e9e9616819398e4e1263cd4b610fa1..f28a09516757ff59a05cbe8966e34693cfeb4fd4 100644 (file)
@@ -11,6 +11,7 @@
 #include <ModelAPI_ResultConstruction.h>
 #include <ModelAPI_AttributeRefList.h>
 #include <ModelAPI_AttributeSelectionList.h>
+#include <ModelAPI_Events.h>
 #include <ModelAPI_Session.h>
 #include <ModelAPI_Validator.h>
 
@@ -79,8 +80,7 @@ void SketchPlugin_ConstraintMirror::execute()
         ResultConstructionPtr aRC =
             std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aMirrorIter);
         DocumentPtr aDoc = aRC ? aRC->document() : DocumentPtr();
-        FeaturePtr aFeature =  aDoc ? std::dynamic_pointer_cast<SketchPlugin_Feature>(
-              aDoc->feature(aRC)) : FeaturePtr();
+        FeaturePtr aFeature =  aDoc ? aDoc->feature(aRC) : FeaturePtr();
         if (aFeature)
           aDoc->removeFeature(aFeature);
       }
@@ -91,6 +91,8 @@ void SketchPlugin_ConstraintMirror::execute()
       aMirrorIter++;
   }
 
+  static Events_ID aRedisplayEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
+
   // Check consistency of initial list and mirrored list
   anInitialList =  aRefListOfShapes->list();
   anInitIter = anInitialList.begin();
@@ -132,6 +134,7 @@ void SketchPlugin_ConstraintMirror::execute()
       FeaturePtr aNewFeature = sketch()->addFeature(aFeatureIn->getKind());
       aFeatureIn->data()->copyTo(aNewFeature->data());
       aNewFeature->execute();
+      ModelAPI_EventCreator::get()->sendUpdated(aNewFeature, aRedisplayEvent);
 
       std::shared_ptr<GeomAPI_Shape> aShapeIn = aRCIn->shape();
       const std::list<ResultPtr>& aResults = aNewFeature->results();
@@ -184,7 +187,9 @@ AISObjectPtr SketchPlugin_ConstraintMirror::getAISObject(AISObjectPtr thePreviou
     return thePrevious;
 
   AISObjectPtr anAIS = thePrevious;
-  /// TODO: Equal constraint presentation should be put here
+  if (!anAIS) {
+    anAIS = SketcherPrs_Factory::mirrorConstraint(this, sketch()->coordinatePlane());
+  }
   return anAIS;
 }