Salome HOME
Update unit tests for the PlaneGCS solver. Bug fixes.
[modules/shaper.git] / src / PartSet / PartSet_Tools.h
index ad5fbcbcfc0dde05bf0d3c8ba25088ab373ce6e3..310ac57a7ae929a9792bb6cddfa7665335b7d888 100755 (executable)
@@ -40,6 +40,15 @@ class GeomAPI_Vertex;
  */
 class PARTSET_EXPORT PartSet_Tools
 {
+public:
+  /// \enum ConstraintVisibleState types of constraints which visible state can be
+  /// changed in the sketch widget
+  enum ConstraintVisibleState
+  {
+    Geometrical = 0, // all constrains excepting dimensional
+    Dimensional // lenght, distance, radius and angle constraints
+  };
+
  public:
   /// Converts the 2D screen point to the 3D point on the view according to the point of view
   /// \param thePoint a screen point
@@ -71,22 +80,6 @@ class PARTSET_EXPORT PartSet_Tools
   /// Returns pointer to the root document.
   static std::shared_ptr<ModelAPI_Document> document();
 
-  /// Find an attribute which corresponds to a given pont coordinates
-  /// \param theSketch the sketch feature
-  /// \param theX X coordinate
-  /// \param theY Y coordinate
-  /// \param theTolerance tolerance
-  /// \param theIgnore list of features which has to be ignored
-  //static std::shared_ptr<GeomDataAPI_Point2D> findAttributePoint(CompositeFeaturePtr theSketch, 
-  //  double theX, double theY, double theTolerance, const QList<FeaturePtr>& theIgnore = QList<FeaturePtr>());
-
-  /// Returns a point attribute of the feature by the coordinates if it is
-  /// \param theFeature the feature
-  /// \param theX the horizontal coordinate
-  /// \param theY the vertical coordinate
-  //static std::shared_ptr<GeomDataAPI_Point2D> getFeaturePoint(FeaturePtr theFeature,
-  //                                                              double theX, double theY);
-
   /// \brief Save the double to the feature. If the attribute is double, it is filled.
   /// \param theFeature the feature
   /// \param theX the horizontal coordinate
@@ -201,18 +194,32 @@ class PARTSET_EXPORT PartSet_Tools
   /**
   * Finds an attribute value in attribute reference attribute value
   * \param theAttribute - an attribure reference filled with an attribute
+  * \param theWorkshop a reference to workshop
   * \return a geometry shape
   */
   static GeomShapePtr findShapeBy2DPoint(const AttributePtr& theAttribute,
                                          ModuleBase_IWorkshop* theWorkshop);
 
-  /* Returns point of coincidence feature
+  /**
+  * Returns point of coincidence feature
   * \param theFeature the coincidence feature
   * \param theAttribute the attribute name
   */
   static std::shared_ptr<GeomAPI_Pnt2d> getPoint(std::shared_ptr<ModelAPI_Feature>& theFeature,
                                                  const std::string& theAttribute);
 
+  /**
+  * Gets all references to the feature, take coincidence constraint features, get point 2d attributes
+  * and compare the point value to be equal with the given. Returns the first feature, which has
+  * equal points.
+  * \param theSearchInResults a flag whether the conicidence feature shoudl be searched in
+  * references of the feature results.
+  * \return the coincidence feature or null
+  */
+  static FeaturePtr findFirstCoincidence(const FeaturePtr& theFeature,
+                                         std::shared_ptr<GeomAPI_Pnt2d> thePoint,
+                                         const bool theSearchInResults = false);
+
   /**
   * Returns list of features connected in a councedence feature point
   * \param theStartCoin the coincidence feature
@@ -221,6 +228,12 @@ class PARTSET_EXPORT PartSet_Tools
   */
   static void findCoincidences(FeaturePtr theStartCoin, QList<FeaturePtr>& theList,
                                std::string theAttr);
+
+  /**
+  * Returns point of a coincedence
+  * \param theStartCoin the coincedence feature
+  */
+  static std::shared_ptr<GeomAPI_Pnt2d> getCoincedencePoint(FeaturePtr theStartCoin);
 };
 
 #endif