20 #ifndef SketchSolver_Group_H_
21 #define SketchSolver_Group_H_
23 #include <SketchSolver_Constraint.h>
24 #include <SketchSolver_Storage.h>
26 #include <PlaneGCSSolver_Solver.h>
28 #include <SketchPlugin_Constraint.h>
37 typedef std::map<ConstraintPtr, SolverConstraintPtr> ConstraintConstraintMap;
57 return myConstraints.empty() && myTempConstraints.empty();
63 return mySketch->data() && mySketch->data()->isValid();
70 bool changeConstraint(std::shared_ptr<SketchPlugin_Constraint> theConstraint);
89 const std::shared_ptr<GeomAPI_Pnt2d>& theFrom,
90 const std::shared_ptr<GeomAPI_Pnt2d>& theTo);
99 bool movePoint(AttributePtr thePointOrArray,
100 const int thePointIndex,
101 const std::shared_ptr<GeomAPI_Pnt2d>& theFrom,
102 const std::shared_ptr<GeomAPI_Pnt2d>& theTo);
128 bool areConstraintsValid()
const;
133 void removeConstraint(ConstraintPtr theConstraint);
136 void removeTemporaryConstraints();
139 void setTemporary(SolverConstraintPtr theConstraint);
145 CompositeFeaturePtr mySketch;
146 std::shared_ptr<GeomAPI_Pnt> mySketchOrigin;
147 std::shared_ptr<GeomAPI_Dir> mySketchNormal;
148 std::shared_ptr<GeomAPI_Dir> mySketchXDir;
150 ConstraintConstraintMap myConstraints;
151 std::set<SolverConstraintPtr> myTempConstraints;
153 StoragePtr myStorage;
154 SolverPtr mySketchSolver;
158 std::set<ObjectPtr> myConflictingConstraints;
162 bool myIsEventsBlocked;
164 int myMultiConstraintUpdateStack;
167 typedef std::shared_ptr<SketchSolver_Group> SketchGroupPtr;
3D direction defined by three normalized coordinates
Definition: GeomAPI_Dir.h:34
2D point defined by two coordinates
Definition: GeomAPI_Pnt2d.h:36
3D point defined by three coordinates
Definition: GeomAPI_Pnt.h:38
SolveStatus
The result of constraints solution.
Definition: PlaneGCSSolver_Solver.h:33
Keeps the group of constraints which placed in the same sketch.
Definition: SketchSolver_Group.h:44
bool resolveConstraints()
Start solution procedure if necessary and update attributes of features.
Definition: SketchSolver_Group.cpp:232
SketchSolver_Group(const CompositeFeaturePtr &theWorkplane)
New group based on specified workplane.
Definition: SketchSolver_Group.cpp:77
bool moveFeature(FeaturePtr theFeature, const std::shared_ptr< GeomAPI_Pnt2d > &theFrom, const std::shared_ptr< GeomAPI_Pnt2d > &theTo)
Updates the data corresponding the specified feature moved in GUI.
Definition: SketchSolver_Group.cpp:196
void repairConsistency()
Searches invalid features and constraints in the group and removes them.
Definition: SketchSolver_Group.cpp:408
const CompositeFeaturePtr & getWorkplane() const
Returns the current workplane.
Definition: SketchSolver_Group.h:105
bool isEmpty() const
Returns true if the group has no constraints yet.
Definition: SketchSolver_Group.h:55
void underconstrainedFeatures(std::set< ObjectPtr > &theFeatures) const
Find the list of features, which are not fully constrained.
Definition: SketchSolver_Group.cpp:513
bool updateSketch(CompositeFeaturePtr theSketch)
Updates the sketch feature.
Definition: SketchSolver_Group.cpp:128
void blockEvents(bool isBlocked)
Block or unblock events sent by features in this group.
Definition: SketchSolver_Group.cpp:487
bool isWorkplaneValid() const
Check for valid sketch data.
Definition: SketchSolver_Group.h:61
bool changeConstraint(std::shared_ptr< SketchPlugin_Constraint > theConstraint)
Adds or updates a constraint in the group.
Definition: SketchSolver_Group.cpp:103
bool movePoint(AttributePtr thePointOrArray, const int thePointIndex, const std::shared_ptr< GeomAPI_Pnt2d > &theFrom, const std::shared_ptr< GeomAPI_Pnt2d > &theTo)
Updates the data corresponding the specified point moved in GUI.
Definition: SketchSolver_Group.cpp:207
bool updateFeature(FeaturePtr theFeature)
Updates the data corresponding the specified feature.
Definition: SketchSolver_Group.cpp:156