-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File: PlaneGCSSolver_ConstraintWrapper.cpp
-// Created: 14 Dec 2015
-// Author: Artem ZHIDKOV
+// Copyright (C) 2014-2023 CEA, EDF
+//
+// 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
+//
#include <PlaneGCSSolver_ConstraintWrapper.h>
-#include <math.h>
-
PlaneGCSSolver_ConstraintWrapper::PlaneGCSSolver_ConstraintWrapper(
- const ConstraintPtr& theOriginal,
const GCSConstraintPtr& theConstraint,
const SketchSolver_ConstraintType& theType)
: myGCSConstraints(1, theConstraint),
- myType(theType),
- myID(CID_UNKNOWN)
+ myType(theType)
{
- myBaseConstraint = theOriginal;
- myValue = 0.0;
+ myID = CID_UNKNOWN;
}
PlaneGCSSolver_ConstraintWrapper::PlaneGCSSolver_ConstraintWrapper(
- const ConstraintPtr& theOriginal,
const std::list<GCSConstraintPtr>& theConstraints,
const SketchSolver_ConstraintType& theType)
: myGCSConstraints(theConstraints),
- myType(theType),
- myID(CID_UNKNOWN)
-{
- myBaseConstraint = theOriginal;
- myValue = 0.0;
-}
-
-void PlaneGCSSolver_ConstraintWrapper::setValueParameter(const ParameterWrapperPtr& theValue)
-{
- myValueParam = theValue;
- myValue = myValueParam->value();
-}
-
-void PlaneGCSSolver_ConstraintWrapper::setValue(const double& theValue)
-{
- myValue = theValue;
- myValueParam->setValue(theValue);
-}
-
-
-void PlaneGCSSolver_ConstraintWrapper::setGroup(const GroupID& theGroup)
+ myType(theType)
{
- myGroup = theGroup;
- std::list<EntityWrapperPtr>::iterator aSubsIt = myConstrained.begin();
- for (; aSubsIt != myConstrained.end(); ++aSubsIt)
- (*aSubsIt)->setGroup(theGroup);
+ myID = CID_UNKNOWN;
}
-bool PlaneGCSSolver_ConstraintWrapper::isUsed(FeaturePtr theFeature) const
+void PlaneGCSSolver_ConstraintWrapper::setId(const ConstraintID& theID)
{
- std::list<EntityWrapperPtr>::const_iterator anIt = myConstrained.begin();
- for (; anIt != myConstrained.end(); ++anIt)
- if ((*anIt)->isUsed(theFeature))
- return true;
- return false;
+ myID = theID;
}
-bool PlaneGCSSolver_ConstraintWrapper::isUsed(AttributePtr theAttribute) const
+void PlaneGCSSolver_ConstraintWrapper::setValueParameter(const ScalarWrapperPtr& theValue)
{
- std::list<EntityWrapperPtr>::const_iterator anIt = myConstrained.begin();
- for (; anIt != myConstrained.end(); ++anIt)
- if ((*anIt)->isUsed(theAttribute))
- return true;
- return false;
+ myValueParam = theValue;
}
-bool PlaneGCSSolver_ConstraintWrapper::isEqual(const ConstraintWrapperPtr& theOther)
+void PlaneGCSSolver_ConstraintWrapper::setValue(const double& theValue)
{
- if (type() != theOther->type())
- return false;
-
- // Verify equality of values
- if (fabs(myValue - theOther->value()) > tolerance)
- return false;
-
- // Verify equality of entities
- const std::list<EntityWrapperPtr>& anOtherSubs = theOther->entities();
- if (myConstrained.size() != anOtherSubs.size())
- return false;
- std::list<EntityWrapperPtr>::const_iterator aMySubsIt = myConstrained.begin();
- std::list<EntityWrapperPtr>::const_iterator anOtherSubsIt = anOtherSubs.begin();
- for (; aMySubsIt != myConstrained.end(); ++aMySubsIt, ++anOtherSubsIt)
- if (!(*aMySubsIt)->isEqual(*anOtherSubsIt))
- return false;
- return true;
+ myValueParam->setValue(theValue);
}
-bool PlaneGCSSolver_ConstraintWrapper::update(const ConstraintWrapperPtr& theOther)
+double PlaneGCSSolver_ConstraintWrapper::value() const
{
- bool isUpdated = false;
-
- std::list<EntityWrapperPtr> aMySubs = entities();
- std::list<EntityWrapperPtr> anOtherSubs = theOther->entities();
- std::list<EntityWrapperPtr>::const_iterator aMySubsIt = aMySubs.begin();
- std::list<EntityWrapperPtr>::const_iterator anOtherSubsIt = anOtherSubs.begin();
- for (; aMySubsIt != aMySubs.end() && anOtherSubsIt != anOtherSubs.end();
- ++aMySubsIt, ++anOtherSubsIt)
- isUpdated = (*aMySubsIt)->update(*anOtherSubsIt) || isUpdated;
-
- if (fabs(value() - theOther->value()) > tolerance) {
- myValue = theOther->value();
- isUpdated = true;
- }
- return isUpdated;
+ return myValueParam ? myValueParam->value() : 0.0;
}