public:
SketchSolver_Storage(const GroupID& theGroup)
: myGroupID(theGroup),
+ mySketchID(EID_UNKNOWN),
myNeedToResolve(false),
myEventsBlocked(false),
myExistArc(false)
/// \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
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
/// \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
/// \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
/// 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;