Salome HOME
Remove extra files
[modules/shaper.git] / src / SketchSolver / SketchSolver_Storage.h
index 2be30dec3cd89f4b5999b04ccbdfd2a727e50036..6a1b1b2e817354138c24e4c018869c10a66ff6bf 100644 (file)
@@ -37,6 +37,7 @@ private:
 public:
   SketchSolver_Storage(const GroupID& theGroup)
     : myGroupID(theGroup),
+      mySketchID(EID_UNKNOWN),
       myNeedToResolve(false),
       myEventsBlocked(false),
       myExistArc(false)
@@ -59,12 +60,18 @@ public:
   /// \brief Convert feature to the form applicable for specific solver and map it
   /// \param theFeature [in]  feature to convert
   /// \param theGroup   [in]  id of the group where the feature should be placed
+  /// \param theForce   [in]  forced feature creation
   /// \return \c true if the feature has been created or updated
-  SKETCHSOLVER_EXPORT bool update(FeaturePtr theFeature, const GroupID& theGroup = GID_UNKNOWN);
+  SKETCHSOLVER_EXPORT bool update(FeaturePtr theFeature, 
+                                  const GroupID& theGroup = GID_UNKNOWN, bool theForce = false);
+
   /// \brief Convert attribute to the form applicable for specific solver and map it
-  /// \param theFeature [in]  feature to convert
+  /// \param theAttribute [in]  attribute to convert
+  /// \param theGroup     [in]  id of the group where the feature should be placed
+  /// \param theForce     [in]  forced feature creation
   /// \return \c true if the attribute has been created or updated
-  SKETCHSOLVER_EXPORT bool update(AttributePtr theAttribute, const GroupID& theGroup = GID_UNKNOWN);
+  SKETCHSOLVER_EXPORT bool update(AttributePtr theAttribute, 
+                                  const GroupID& theGroup = GID_UNKNOWN, bool theForce = false);
 
   /// \brief Returns constraint related to corresponding constraint
   SKETCHSOLVER_EXPORT
@@ -131,6 +138,8 @@ public:
 
   /// \brief Initialize solver by constraints, entities and parameters
   virtual void initializeSolver(SolverPtr theSolver) = 0;
+  /// \brief Return list of conflicting constraints
+  std::set<ObjectPtr> getConflictingConstraints(SolverPtr theSolver) const;
 
   /// \brief Update SketchPlugin features after resolving constraints
   /// \param theFixedOnly [in]  if \c true the fixed points will be updated only
@@ -160,7 +169,8 @@ protected:
     void addEntity(FeaturePtr       theFeature,
                    EntityWrapperPtr theSolverEntity);
 
-  /// \brief Change mapping attribute of a feature and the entity applicable for corresponding solver.
+  /// \brief Change mapping attribute of a feature and the entity 
+  /// applicable for corresponding solver.
   /// \param theAttribute    [in]  original attribute
   /// \param theSolverEntity [in]  solver's entity, created outside
   SKETCHSOLVER_EXPORT
@@ -187,6 +197,9 @@ protected:
   /// \return \c true if the parameter has been removed
   virtual bool remove(ParameterWrapperPtr theParameter) = 0;
 
+  /// \brief Remove point-point coincidence
+  SKETCHSOLVER_EXPORT bool removeCoincidence(ConstraintWrapperPtr theConstraint);
+
   /// \brief Update the group for the given entity, its sub-entities and parameters
   virtual void changeGroup(EntityWrapperPtr theEntity, const GroupID& theGroup) = 0;
   /// \brief Update the group for the given parameter
@@ -200,11 +213,15 @@ protected:
   /// \brief Find arcs without corresponding entity applicable for the solver and build them
   SKETCHSOLVER_EXPORT void processArcs();
 
+  /// \brief Replace entities by others
+  void replaceEntities(const std::map<EntityWrapperPtr, EntityWrapperPtr>& theChange);
+
 private:
   /// \brief Find the normal of the sketch
   EntityWrapperPtr getNormal() const;
 
 protected:
+  EntityID mySketchID;     ///< identifier of the sketch
   GroupID myGroupID;       ///< identifier of the group, this storage belongs to
   bool    myNeedToResolve; ///< parameters are changed and group needs to be resolved
   bool    myEventsBlocked; ///< indicates that features do not send events
@@ -217,7 +234,8 @@ protected:
   /// map attribute to solver's entity
   std::map<AttributePtr, EntityWrapperPtr>                  myAttributeMap;
 
-  CoincidentPointsMap myCoincidentPoints; ///< lists of coincident points (first is a master point, second is a set of slaves)
+  /// lists of coincident points (first is a master point, second is a set of slaves)
+  CoincidentPointsMap myCoincidentPoints; 
 
   // to be able to update entities from constraints
   friend class SketchSolver_ConstraintDistance;