protected:
/// Default constructor
SketchSolver_Constraint() {}
+ /// Constructor based on SketchPlugin constraint
SketchSolver_Constraint(ConstraintPtr theConstraint);
public:
virtual bool remove(ConstraintPtr theConstraint = ConstraintPtr());
/// \brief Update SketchPlugin attributes using the data obtained from SolveSpace entities
- void refresh();
+ virtual void refresh();
/// \brief Returns the type of constraint
virtual int getType() const = 0;
+ /// \brief The constraint is made temporary
+ void makeTemporary() const;
+
/// \brief Checks the constraint is used by current object
virtual bool hasConstraint(ConstraintPtr theConstraint) const
{ return theConstraint == myBaseConstraint; }
/// \brief Return identifier of SolveSpace entity relating to the attribute
Slvs_hEntity getId(AttributePtr theAttribute) const;
+ /// \brief Adds a feature to constraint and create its analogue in SolveSpace
+ virtual void addFeature(FeaturePtr theFeature);
+
/// \brief Shows error message
const std::string& error() const
{ return myErrorMsg; }
/// \param[out] theAttributes list of attributes to be filled
virtual void getAttributes(double& theValue, std::vector<Slvs_hEntity>& theAttributes);
- /// \brief This method is used in derived objects to check consistence of constraint.
+ /// \brief Verify the attributes of constraint are changed (and constraint need to rebuild)
+ /// \param[in] theConstraint constraint, which attributes should be checked (if NULL, the myBaseConstraint is used)
+ /// \return \c true if some attributes are changed
+ virtual bool checkAttributesChanged(ConstraintPtr theConstraint);
+
+ /// \brief This method is used in derived objects to check consistency of constraint.
/// E.g. the distance between line and point may be signed.
virtual void adjustConstraint()
{}
class SketchSolver_ConstraintParallel : public SketchSolver_Constraint
{
public:
+ /// Constructor based on SketchPlugin constraint
SketchSolver_ConstraintParallel(ConstraintPtr theConstraint) :
SketchSolver_Constraint(theConstraint)
{}
class SketchSolver_ConstraintPerpendicular : public SketchSolver_Constraint
{
public:
+ /// Constructor based on SketchPlugin constraint
SketchSolver_ConstraintPerpendicular(ConstraintPtr theConstraint) :
SketchSolver_Constraint(theConstraint)
{}
class SketchSolver_ConstraintHorizontal : public SketchSolver_Constraint
{
public:
+ /// Constructor based on SketchPlugin constraint
SketchSolver_ConstraintHorizontal(ConstraintPtr theConstraint) :
SketchSolver_Constraint(theConstraint)
{}
class SketchSolver_ConstraintVertical : public SketchSolver_Constraint
{
public:
+ /// Constructor based on SketchPlugin constraint
SketchSolver_ConstraintVertical(ConstraintPtr theConstraint) :
SketchSolver_Constraint(theConstraint)
{}
class SketchSolver_ConstraintRadius : public SketchSolver_Constraint
{
public:
+ /// Constructor based on SketchPlugin constraint
SketchSolver_ConstraintRadius(ConstraintPtr theConstraint) :
SketchSolver_Constraint(theConstraint)
{}