/// \brief Returns true if the group has no constraints yet
inline bool isEmpty() const
{
- return myConstraints.empty();
+ return myConstraints.empty() && myTempConstraints.empty();
}
/// \brief Check for valid sketch data
void blockEvents(bool isBlocked);
private:
+ /// \biref Verify constraints have not been removed
+ bool areConstraintsValid() const;
+
/** \brief Removes constraints from the group
* \param[in] theConstraint constraint to be removed
*/
void setTemporary(SolverConstraintPtr theConstraint);
/// \brief Compute DoF of the sketch and set corresponding field
- void computeDoF() const;
+ void computeDoF();
private:
CompositeFeaturePtr mySketch; ///< Sketch for this group
PlaneGCSSolver_Solver::SolveStatus myPrevResult;
std::set<ObjectPtr> myConflictingConstraints; ///< List of conflicting constraints
+ int myDOF; ///< degrees of freedom of the current sketch
+
bool myIsEventsBlocked; ///< shows the events are blocked for this group
+
+ int myMultiConstraintUpdateStack; ///< depth of the stack updating "Multi" constraints
};
typedef std::shared_ptr<SketchSolver_Group> SketchGroupPtr;