X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSketchSolver_ConstraintCoincidence.h;h=47d58e0e23299282a208d848f156ce28faf4b603;hb=3d28bcbab2f3ed0e40295e64f4e836caebc19fca;hp=f726020c766e3e76bb1112bd8a1288523e152541;hpb=0e039eb7c484a1a70e435d01f97a9382ed7e3432;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SketchSolver_ConstraintCoincidence.h b/src/SketchSolver/SketchSolver_ConstraintCoincidence.h index f726020c7..47d58e0e2 100644 --- a/src/SketchSolver/SketchSolver_ConstraintCoincidence.h +++ b/src/SketchSolver/SketchSolver_ConstraintCoincidence.h @@ -19,11 +19,12 @@ class SketchSolver_ConstraintCoincidence : public SketchSolver_Constraint { public: SketchSolver_ConstraintCoincidence(ConstraintPtr theConstraint) : - SketchSolver_Constraint(theConstraint) + SketchSolver_Constraint(theConstraint), + myType(SLVS_C_UNKNOWN) {} virtual int getType() const - { return SLVS_C_POINTS_COINCIDENT; } + { return myType; } /// \brief Tries to remove constraint /// \return \c false, if current constraint contains another SketchPlugin constraints (like for multiple coincidence) @@ -41,6 +42,15 @@ public: /// \brief Append all data of coincidence constaint to the current void attach(std::shared_ptr theConstraint); +protected: + /// \brief Converts SketchPlugin constraint to a list of SolveSpace constraints + virtual void process(); + + /// \brief Generate list of attributes of constraint in order useful for SolveSpace constraints + /// \param[out] theValue numerical characteristic of constraint (e.g. distance) + /// \param[out] theAttributes list of attributes to be filled + virtual void getAttributes(double& theValue, std::vector& theAttributes); + private: /// \brief Creates new coincidence constraint Slvs_hConstraint addConstraint(Slvs_hEntity thePoint1, Slvs_hEntity thePoint2); @@ -48,8 +58,13 @@ private: /// \brief Create full SolveSpace structure according to given constraint void addConstraint(ConstraintPtr theConstraint); + /// \brief Create constraint of point concident to the line or circle + Slvs_hConstraint addPointOnEntity(Slvs_hEntity thePoint, Slvs_hEntity theEntity); + private: - std::map myExtraCoincidence; ///< multiple coincidence of points + int myType; ///< type of constraint (applicable SLVS_C_POINTS_COINCIDENT or SLVS_C_PT_ON_LINE or SLVS_C_PT_ON_CIRCLE) + std::map myExtraCoincidence; ///< multiple coincidence of points + std::set myCoincidentPoints; ///< list of points under the Coincidence constraint }; #endif