-// 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>
// ========================================================
-// ========= SketchSolver_Group ===============
+// ========= SketchSolver_Group ===============
// ========================================================
SketchSolver_Group::SketchSolver_Group(const CompositeFeaturePtr& theWorkplane)
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);
mySketchSolver->initialize();
aConstraint->moveFeature();
- } else
- myStorage->notify(theFeature);
+ }
+ // notify all observers that theFeature has been changed
+ myStorage->notify(theFeature);
return true;
}
-#endif
// ============================================================================
// Function: resolveConstraints
// ============================================================================
void SketchSolver_Group::setTemporary(SolverConstraintPtr theConstraint)
{
- if (theConstraint)
- myTempConstraints.insert(theConstraint);
+ myTempConstraints.insert(theConstraint);
}
// ============================================================================