- std::set<FeaturePtr>& theList);
-
-/// Changes the second attribute value to full or single angle. If it is corrected to full
-/// value, the first angle is miltipied to the number of copies otherwise it is separated by it.
-/// \param theFirstAngleAttribute the source attribute
-/// \param theSecondAngleAttribute the changed attribute
-/// \param theNumberOfCopies a value for modification
-/// \param toFullAngle a type of modification
-void updateAngleAttribute(const AttributePtr& theFirstAngleAttribute,
- const AttributePtr& theSecondAngleAttribute,
- const int& theNumberOfCopies,
- const bool toFullAngle);
+ std::set<FeaturePtr>& theList,
+ const bool theIsAttrOnly = false);
+
+/// Find all features the point is coincident to.
+std::set<FeaturePtr> findFeaturesCoincidentToPoint(const AttributePoint2DPtr& thePoint);
+
+/// Find all points the given point is coincident to.
+std::set<AttributePoint2DPtr> findPointsCoincidentToPoint(const AttributePoint2DPtr& thePoint);
+
+void resetAttribute(SketchPlugin_Feature* theFeature, const std::string& theId);
+
+/// Create new constraint between given attributes
+/// \param[in] theSketch a sketch where the constraint will be created
+/// \param[in] theConstraintId a constraint identifier
+/// \param[in] theFirstAttribute an attribute of further constraint
+/// \param[in] theSecondAttribute an attribute of further constraint
+FeaturePtr createConstraintAttrAttr(SketchPlugin_Sketch* theSketch,
+ const std::string& theConstraintId,
+ const AttributePtr& theFirstAttribute,
+ const AttributePtr& theSecondAttribute);
+
+/// Create new constraint between given attribute and object
+/// \param[in] theSketch a sketch where the constraint will be created
+/// \param[in] theConstraintId a constraint identifier
+/// \param[in] theFirstAttribute an attribute of further constraint
+/// \param[in] theSecondObject an attribute of further constraint
+FeaturePtr createConstraintAttrObject(SketchPlugin_Sketch* theSketch,
+ const std::string& theConstraintId,
+ const AttributePtr& theFirstAttribute,
+ const ObjectPtr& theSecondObject);
+
+/// Create new constraint between given objects
+/// \param[in] theSketch a sketch where the constraint will be created
+/// \param[in] theConstraintId a constraint identifier
+/// \param[in] theFirstObject an attribute of further constraint
+/// \param[in] theSecondObject an attribute of further constraint
+FeaturePtr createConstraintObjectObject(SketchPlugin_Sketch* theSketch,
+ const std::string& theConstraintId,
+ const ObjectPtr& theFirstObject,
+ const ObjectPtr& theSecondObject);
+
+/// Creates coincidence or tangent constraint.
+/// \param[in] theFeature to get selected attribute or object
+/// \param[in] theId ID of attribute where selection is.
+/// \param[in] theObject object for constraint
+/// \param[in] theIsCanBeTangent if true constraint can be tangent or coincidence, depending on
+/// the selection in the attribute with passed ID.
+void createCoincidenceOrTangency(SketchPlugin_Feature* theFeature,
+ const std::string& theId,
+ const AttributePtr theAttr,
+ const ObjectPtr theObject,
+ const bool theIsCanBeTangent);
+
+/// Creates passing point or tangent curve basing on the given attributes are initialized.
+/// \param[in] theRefAttr prefered attribute to be converted
+/// \param[in] theDefaultAttr default attribute if theRefAttr is not initialized
+/// \param[out] theTangentCurve tangent curve if theRefAttr refers to an edge
+/// \param[out] thePassingPoint passing point if theRefAttr does not refer to an edge
+void convertRefAttrToPointOrTangentCurve(const AttributeRefAttrPtr& theRefAttr,
+ const AttributePtr& theDefaultAttr,
+ std::shared_ptr<GeomAPI_Shape>& theTangentCurve,
+ std::shared_ptr<GeomAPI_Pnt2d>& thePassingPoint);
+