#include <SketchSolver_ISolver.h>
#include <SketchPlugin_Constraint.h>
-////#include <ModelAPI_Data.h>
#include <ModelAPI_Feature.h>
-////#include <ModelAPI_AttributeRefList.h>
#include <memory>
#include <list>
return mySketch->data() && mySketch->data()->isValid();
}
- /// \brief Verifies the constraint is complex, i.e. it needs another constraints to be created before
- static bool isComplexConstraint(FeaturePtr theConstraint);
+ /// \brief Check the group has conflicting constraints
+ inline bool isFailed() const
+ {
+ return !myConflictingConstraints.empty();
+ }
/** \brief Adds or updates a constraint in the group
* \param[in] theConstraint constraint to be changed
/** \brief Updates the data corresponding the specified feature
* \param[in] theFeature the feature to be updated
*/
- bool updateFeature(std::shared_ptr<SketchPlugin_Feature> theFeature);
+ bool updateFeature(FeaturePtr theFeature);
/** \brief Updates the data corresponding the specified feature moved in GUI.
* Additional Fixed constraints are created.
* \param[in] theFeature the feature to be updated
*/
- void moveFeature(std::shared_ptr<SketchPlugin_Feature> theFeature);
+ void moveFeature(FeaturePtr theFeature);
/** \brief Verifies the feature attributes are used in this group
* \param[in] theFeature constraint or any other object for verification of interaction
* \return \c true if some of attributes are used in current group
*/
- bool isInteract(std::shared_ptr<SketchPlugin_Feature> theFeature) const;
+ bool isInteract(FeaturePtr theFeature) const;
/** \brief Verifies the specified feature is equal to the base workplane for this group
* \param[in] theWorkplane the feature to be compared with base workplane
/// \brief Verifies is the feature valid
bool checkFeatureValidity(FeaturePtr theFeature);
- /// \brief Update just changed constraints
- void updateConstraints();
-
- /// \brief Update Multi-Translation/-Rotation constraints due to multi coincidence appears/disappears
- void notifyMultiConstraints();
-
private:
GroupID myID; ///< Index of the group
EntityID myWorkplaneID; ///< Index of workplane, the group is based on
ConstraintConstraintMap myConstraints; ///< List of constraints
std::set<SolverConstraintPtr> myTempConstraints; ///< List of temporary constraints
std::map<AttributePtr, SolverConstraintPtr> myParametricConstraints; ///< List of parametric constraints
- std::set<ConstraintPtr> myChangedConstraints; ///< List of just updated constraints
StoragePtr myStorage; ///< Container for the set of SolveSpace constraints and their entities
SolverPtr mySketchSolver; ///< Solver for set of equations obtained by constraints
- bool myPrevSolved; ///< Indicates that previous solving was done correctly
+ SketchSolver_SolveStatus myPrevResult; ///< Result of previous solution of the set of constraints
+ std::set<ObjectPtr> myConflictingConstraints; ///< List of conflicting constraints
};
#endif