+ static std::shared_ptr<ModelAPI_Result> findExternalEdge(CompositeFeaturePtr theSketch,
+ std::shared_ptr<GeomAPI_Edge> theEdge);
+
+ /// Returns Result object if the given sketch contains external vertex equal to the given
+ /// \param theSketch - the sketch feature
+ /// \param theVert - the vertex
+ /// \return result object with external vertex if it is found
+ static std::shared_ptr<ModelAPI_Result> findExternalVertex(CompositeFeaturePtr theSketch,
+ std::shared_ptr<GeomAPI_Vertex> theVert);
+
+ /// Returns whether the selected presentation has a shape with the vertex type
+ /// \param thePrs a selected presentation
+ /// \param theSketch the sketch feature
+ /// \param theView a 3D view
+ /// \param theX the output horizontal coordinate of the point
+ /// \param theY the output vertical coordinate of the point
+ static bool hasVertexShape(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs, FeaturePtr theSketch,
+ Handle_V3d_View theView, double& theX, double& theY);
+
+
+ /**
+ * Find attribute of object which corresponds to the given shape
+ * \param theObj - an object
+ * \param theShape - a Shape
+ * \param theSketch - a Sketch to get a plane of converting to 2d
+ */
+ static AttributePtr findAttributeBy2dPoint(ObjectPtr theObj, const TopoDS_Shape theShape,
+ FeaturePtr theSketch);
+
+ /**
+ * 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 std::shared_ptr<GeomAPI_Shape> findShapeBy2DPoint(const AttributePtr& theAttribute,
+ ModuleBase_IWorkshop* theWorkshop);
+
+ /**
+ * 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 theFeature the coincidence feature
+ * \param thePoint a 2d point
+ * \return the coincidence feature or null
+ */
+ static FeaturePtr findFirstCoincidence(const FeaturePtr& theFeature,
+ std::shared_ptr<GeomAPI_Pnt2d> thePoint);
+
+ /**
+ * Returns list of features connected in a councedence feature point
+ * \param theStartCoin the coincidence feature
+ * \param theList a list which collects lines features
+ * \param theCoincidencies a list of coincidence features
+ * \param theAttr the attribute name
+ */
+ static void findCoincidences(FeaturePtr theStartCoin, QList<FeaturePtr>& theList,
+ QList<FeaturePtr>& theCoincidencies,
+ std::string theAttr);
+
+ /**
+ * Returns point of a coincedence
+ * \param theStartCoin the coincedence feature
+ */
+ static std::shared_ptr<GeomAPI_Pnt2d> getCoincedencePoint(FeaturePtr theStartCoin);
+
+ /// Sends redisplay event for all sub-features of the composite. Flush it.
+ static void sendSubFeaturesEvent(const CompositeFeaturePtr& theComposite,
+ const Events_ID theId);
+
+ /**
+ * Returns true if the object is a sketch entity, where auxiliary attribute has true vlaue
+ * \param theObject a result or feature
+ * \return boolean result
+ */
+ static bool isAuxiliarySketchEntity(const ObjectPtr& theObject);