From: mpv Date: Thu, 22 May 2014 14:15:29 +0000 (+0400) Subject: Merge branch 'MessagesGroups' X-Git-Tag: V_0.2~26^2~1^2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=d0350421b47740df5540b8165ac7643657cccf66;p=modules%2Fshaper.git Merge branch 'MessagesGroups' Conflicts: src/SketchSolver/SketchSolver_ConstraintManager.cpp --- d0350421b47740df5540b8165ac7643657cccf66 diff --cc src/SketchSolver/SketchSolver_ConstraintManager.cpp index a2db1ce05,d8ae5bcd2..7caf4342c --- a/src/SketchSolver/SketchSolver_ConstraintManager.cpp +++ b/src/SketchSolver/SketchSolver_ConstraintManager.cpp @@@ -72,32 -75,44 +75,45 @@@ SketchSolver_ConstraintManager::~Sketch void SketchSolver_ConstraintManager::processEvent(const Events_Message* theMessage) { if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_CREATED) || - theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED)) + theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED) || + theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_MOVED)) { - const Model_FeatureUpdatedMessage* aUpdateMsg = dynamic_cast(theMessage); + const Model_FeatureUpdatedMessage* anUpdateMsg = dynamic_cast(theMessage); + std::set< boost::shared_ptr > aFeatures = anUpdateMsg->features(); - // Only sketches and constraints can be added by Create event - const std::string& aFeatureKind = aUpdateMsg->feature()->getKind(); - if (aFeatureKind.compare("Sketch") == 0) - { - boost::shared_ptr aSketch = - boost::dynamic_pointer_cast(aUpdateMsg->feature()); - if (aSketch) - changeWorkplane(aSketch); - return ; - } - boost::shared_ptr aConstraint = - boost::dynamic_pointer_cast(aUpdateMsg->feature()); - if (aConstraint) - changeConstraint(aConstraint); - else + bool isModifiedEvt = theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_MOVED); + if (!isModifiedEvt) { - // Sketch plugin features can be only updated - boost::shared_ptr aFeature = - boost::dynamic_pointer_cast(aUpdateMsg->feature()); - if (aFeature) - updateEntity(aFeature); + std::set< boost::shared_ptr >::iterator aFeatIter; + for (aFeatIter = aFeatures.begin(); aFeatIter != aFeatures.end(); aFeatIter++) + { + // Only sketches and constraints can be added by Create event + const std::string& aFeatureKind = (*aFeatIter)->getKind(); + if (aFeatureKind.compare("Sketch") == 0) + { + boost::shared_ptr aSketch = + boost::dynamic_pointer_cast(*aFeatIter); - changeWorkplane(aSketch); ++ if (aSketch) ++ changeWorkplane(aSketch); + return ; + } + boost::shared_ptr aConstraint = + boost::dynamic_pointer_cast(*aFeatIter); + if (aConstraint) + changeConstraint(aConstraint); + else + { + // Sketch plugin features can be only updated + boost::shared_ptr aFeature = + boost::dynamic_pointer_cast(*aFeatIter); + if (aFeature) + updateEntity(aFeature); + } + } } + + // Solve the set of constraints + resolveConstraints(); } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_FEATURE_DELETED)) {