Salome HOME
Merge branch 'master' into cgt/devCEA
[modules/shaper.git] / src / SketchSolver / SketchSolver_Group.cpp
index 6f855c97601e4f104516520f3764b4545c063de0..f437103ac38527035421f86396b2fe5c6c0d26fd 100644 (file)
@@ -1,8 +1,22 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File:    SketchSolver_Group.cpp
-// Created: 27 May 2014
-// Author:  Artem ZHIDKOV
+// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
 
 #include "SketchSolver_Group.h"
 #include <SketchSolver_Error.h>
@@ -56,7 +70,7 @@ static void sendMessage(const char* theMessageName,
 
 
 // ========================================================
-// =========       SketchSolver_Group       ===============
+// =========  SketchSolver_Group  ===============
 // ========================================================
 
 SketchSolver_Group::SketchSolver_Group(const CompositeFeaturePtr& theWorkplane)
@@ -115,62 +129,6 @@ bool SketchSolver_Group::updateFeature(FeaturePtr theFeature)
   return myStorage->update(theFeature);
 }
 
-#ifdef SUPPORT_NEW_MOVE
-template <class Type>
-static SolverConstraintPtr move(StoragePtr theStorage,
-                                SolverPtr theSketchSolver,
-                                int theSketchDOF,
-                                bool theEventsBlocked,
-                                Type theFeatureOrPoint,
-                                const std::shared_ptr<GeomAPI_Pnt2d>& theFrom,
-                                const std::shared_ptr<GeomAPI_Pnt2d>& theTo)
-{
-  bool isEntityExists = (theStorage->entity(theFeatureOrPoint).get() != 0);
-  if (theSketchDOF == 0 && isEntityExists) {
-    // avoid moving elements of fully constrained sketch
-    theStorage->refresh();
-    return SolverConstraintPtr();
-  }
-
-  // Create temporary Fixed constraint
-  std::shared_ptr<SketchSolver_ConstraintMovement> aConstraint =
-      PlaneGCSSolver_Tools::createMovementConstraint(theFeatureOrPoint);
-  if (aConstraint) {
-    SolverConstraintPtr(aConstraint)->process(theStorage, theEventsBlocked);
-    if (aConstraint->error().empty()) {
-      if (!theStorage->isEmpty())
-        theStorage->setNeedToResolve(true);
-
-      theSketchSolver->initialize();
-      aConstraint->startPoint(theFrom);
-      aConstraint->moveTo(theTo);
-    } else
-      theStorage->notify(aConstraint->movedFeature());
-  }
-
-  return aConstraint;
-}
-
-bool SketchSolver_Group::moveFeature(FeaturePtr theFeature,
-                                     const std::shared_ptr<GeomAPI_Pnt2d>& theFrom,
-                                     const std::shared_ptr<GeomAPI_Pnt2d>& theTo)
-{
-  SolverConstraintPtr aConstraint =
-      move(myStorage, mySketchSolver, myDOF, myIsEventsBlocked, theFeature, theFrom, theTo);
-  setTemporary(aConstraint);
-  return true;
-}
-
-bool SketchSolver_Group::movePoint(AttributePtr theAttribute,
-                                   const std::shared_ptr<GeomAPI_Pnt2d>& theFrom,
-                                   const std::shared_ptr<GeomAPI_Pnt2d>& theTo)
-{
-  SolverConstraintPtr aConstraint =
-      move(myStorage, mySketchSolver, myDOF, myIsEventsBlocked, theAttribute, theFrom, theTo);
-  setTemporary(aConstraint);
-  return true;
-}
-#else
 bool SketchSolver_Group::moveFeature(FeaturePtr theFeature)
 {
   bool isFeatureExists = (myStorage->entity(theFeature).get() != 0);
@@ -193,12 +151,12 @@ bool SketchSolver_Group::moveFeature(FeaturePtr theFeature)
 
     mySketchSolver->initialize();
     aConstraint->moveFeature();
-  } else
-    myStorage->notify(theFeature);
+  }
 
+  // notify all observers that theFeature has been changed
+  myStorage->notify(theFeature);
   return true;
 }
-#endif
 
 // ============================================================================
 //  Function: resolveConstraints
@@ -414,8 +372,7 @@ void SketchSolver_Group::removeConstraint(ConstraintPtr theConstraint)
 // ============================================================================
 void SketchSolver_Group::setTemporary(SolverConstraintPtr theConstraint)
 {
-  if (theConstraint)
-    myTempConstraints.insert(theConstraint);
+  myTempConstraints.insert(theConstraint);
 }
 
 // ============================================================================