X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSketchSolver_ConstraintGroup.h;h=36583e3381362b75fa054cc3983a0e39c33d3678;hb=51889d235a27d0ee4b3c3237d21d1ea621063580;hp=2337f5187883059f751f128430e48d02f6bc22fa;hpb=dd0c53b59fb5a93461f76c77ac284b99f71db57b;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SketchSolver_ConstraintGroup.h b/src/SketchSolver/SketchSolver_ConstraintGroup.h index 2337f5187..36583e338 100644 --- a/src/SketchSolver/SketchSolver_ConstraintGroup.h +++ b/src/SketchSolver/SketchSolver_ConstraintGroup.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: SketchSolver_ConstraintGroup.h // Created: 27 May 2014 // Author: Artem ZHIDKOV @@ -10,17 +12,20 @@ #include #include +#include + +#include #include #include #include #include -typedef std::map< boost::shared_ptr, std::vector > +typedef std::map< std::shared_ptr, std::vector > ConstraintMap; /** \class SketchSolver_ConstraintGroup - * \ingroup DataModel + * \ingroup Plugins * \brief Keeps the group of constraints which based on the same entities */ class SketchSolver_ConstraintGroup @@ -30,7 +35,7 @@ class SketchSolver_ConstraintGroup * Throws an exception if theWorkplane is not an object of SketchPlugin_Sketch type * \remark Type of theSketch is not verified inside */ - SketchSolver_ConstraintGroup(boost::shared_ptr theWorkplane); + SketchSolver_ConstraintGroup(std::shared_ptr theWorkplane); ~SketchSolver_ConstraintGroup(); @@ -56,22 +61,27 @@ class SketchSolver_ConstraintGroup * \param[in] theConstraint constraint to be changed * \return \c true if the constraint added or updated successfully */ - bool changeConstraint(boost::shared_ptr theConstraint); - bool changeRigidConstraint(boost::shared_ptr theConstraint); + bool changeConstraint(std::shared_ptr theConstraint); + /** \brief Adds or updates a rigid constraint in the group + * \param[in] theConstraint constraint to be changed + * \return \c true if the constraint added or updated successfully + */ + bool changeRigidConstraint(std::shared_ptr theConstraint); /** \brief Verifies the feature attributes are used in this group * \param[in] theFeature constraint or any other object for verification of interaction * \return \c true if some of attributes are used in current group */ - bool isInteract(boost::shared_ptr theFeature) const; + bool isInteract(std::shared_ptr theFeature) const; /** \brief Verifies the specified feature is equal to the base workplane for this group * \param[in] theWorkplane the feature to be compared with base workplane * \return \c true if workplanes are the same */ - bool isBaseWorkplane(boost::shared_ptr theWorkplane) const; + bool isBaseWorkplane(std::shared_ptr theWorkplane) const; - boost::shared_ptr getWorkplane() const + /// Returns the current workplane + std::shared_ptr getWorkplane() const { return mySketch; } @@ -84,7 +94,7 @@ class SketchSolver_ConstraintGroup /** \brief If the entity is in this group it will updated * \param[in] theEntity attribute, which values should update SolveSpace entity */ - void updateEntityIfPossible(boost::shared_ptr theEntity); + void updateEntityIfPossible(std::shared_ptr theEntity); /** \brief Searches invalid features and constraints in the group and avoids them * \return \c true if the group several constraints were removed @@ -109,8 +119,11 @@ class SketchSolver_ConstraintGroup /** \brief Searches the constraints built on the entity and emit the signal to update them * \param[in] theEntity attribute of the constraint */ - void updateRelatedConstraints(boost::shared_ptr theEntity) const; - void updateRelatedConstraints(boost::shared_ptr theFeature) const; + void updateRelatedConstraints(std::shared_ptr theEntity) const; + /** \brief Searches the constraints built on the entity and emit the signal to update them + * \param[in] theFeature feature of the constraint + */ + void updateRelatedConstraintsFeature(std::shared_ptr theFeature) const; /** \brief Adds or updates an entity in the group * @@ -120,8 +133,8 @@ class SketchSolver_ConstraintGroup * \param[in] theEntity the object of constraint * \return identifier of changed entity or 0 if entity could not be changed */ - Slvs_hEntity changeEntity(boost::shared_ptr theEntity); - Slvs_hEntity changeEntity(FeaturePtr theEntity); + Slvs_hEntity changeEntity(std::shared_ptr theEntity); + Slvs_hEntity changeEntityFeature(std::shared_ptr theEntity); protected: /** \brief Adds or updates a normal in the group @@ -137,9 +150,9 @@ protected: * \param[in] theNorm attribute for the normal (used to identify newly created entity) * \return identifier of created or updated normal */ - Slvs_hEntity changeNormal(boost::shared_ptr theDirX, - boost::shared_ptr theDirY, - boost::shared_ptr theNorm); + Slvs_hEntity changeNormal(std::shared_ptr theDirX, + std::shared_ptr theDirY, + std::shared_ptr theNorm); /** \brief Adds or updates a parameter in the group * \param[in] theParam the value of parameter @@ -158,14 +171,14 @@ protected: /** \brief Removes constraints from the group * \param[in] theConstraint constraint to be removed */ - void removeConstraint(boost::shared_ptr theConstraint); + void removeConstraint(std::shared_ptr theConstraint); /** \brief Change values of attribute by parameters received from SolveSpace solver * \param[in,out] theAttribute pointer to the attribute to be changed * \param[in] theEntityID identifier of SolveSpace entity, which contains updated data * \return \c true if the attribute's value has changed */ - bool updateAttribute(boost::shared_ptr theAttribute, + bool updateAttribute(std::shared_ptr theAttribute, const Slvs_hEntity& theEntityID); /** \brief Adds a constraint for a point which should not be changed during computations @@ -174,7 +187,7 @@ protected: * the 'dragged' field of SolveSpace solver, so this entity * may be changed a little during solution */ - void addTemporaryConstraintWhereDragged(boost::shared_ptr theEntity, + void addTemporaryConstraintWhereDragged(std::shared_ptr theEntity, bool theAllowToFit = true); /** \brief Remove all temporary constraint after computation finished @@ -188,7 +201,7 @@ protected: * \param[in] theSketch parameters of workplane are the attributes of this sketch * \return \c true if success, \c false if workplane parameters are not consistent */ - bool addWorkplane(boost::shared_ptr theSketch); + bool addWorkplane(std::shared_ptr theSketch); /** \brief Add the entities of constraint for points coincidence into the appropriate list * \param[in] thePoint1 identifier of the first point @@ -224,14 +237,14 @@ protected: std::list myTempConstraints; ///< The list of identifiers of temporary constraints (SLVS_C_WHERE_DRAGGED) applied for all other points moved by user // SketchPlugin entities - boost::shared_ptr mySketch; ///< Equivalent to workplane + std::shared_ptr mySketch; ///< Equivalent to workplane ConstraintMap myConstraintMap; ///< The map between SketchPlugin and SolveSpace constraints - std::map, Slvs_hEntity> myEntityAttrMap; ///< The map between "attribute" parameters of constraints and their equivalent SolveSpace entities + std::map, Slvs_hEntity> myEntityAttrMap; ///< The map between "attribute" parameters of constraints and their equivalent SolveSpace entities std::map myEntityFeatMap; ///< The map between "feature" parameters of constraints and their equivalent SolveSpace entities // Conincident items std::vector > myCoincidentPoints; ///< Stores the lists of identifiers of coincident points (to avoid unnecessary coincidence constraints) - std::set > myExtraCoincidence; ///< Additional coincidence constraints which are not necessary (coincidence between points already done + std::set > myExtraCoincidence; ///< Additional coincidence constraints which are not necessary (coincidence between points already done ///< by other constraints) but created by GUI tools. Useful when some coincidence constraints were removed };