+ GEOMALGOAPI_EXPORT static
+ std::shared_ptr<GeomAPI_Shape> getFaceOuterWire(const std::shared_ptr<GeomAPI_Shape> theFace);
+
+ /// \return true if edge is parallel to face.
+ GEOMALGOAPI_EXPORT static bool isParallel(const std::shared_ptr<GeomAPI_Edge> theEdge,
+ const std::shared_ptr<GeomAPI_Face> theFace);
+
+ // Computes intersection point between the edge curve and a face surface (only one point, with
+ // preferences to point that belongs to edge and face boundaries.
+ /// \returns null if there is no intersection
+ GEOMALGOAPI_EXPORT static std::list<std::shared_ptr<GeomAPI_Vertex> > intersect(
+ const std::shared_ptr<GeomAPI_Edge> theEdge, const std::shared_ptr<GeomAPI_Face> theFace,
+ const bool thePointsOutsideFace);
+
+ typedef std::map<std::shared_ptr<GeomAPI_Pnt>,
+ std::pair<std::list<std::shared_ptr<GeomDataAPI_Point2D> >,
+ std::list<std::shared_ptr<ModelAPI_Object> > > > PointToRefsMap;
+ /// \brief Performs the split of the shape by points.
+ /// \param[in] theBaseShape shape that should be splitted.
+ /// \param[in] thePoints container of points to split
+ /// \param[out] theShapes container of shapes after split
+ GEOMALGOAPI_EXPORT static void splitShape(const std::shared_ptr<GeomAPI_Shape>& theBaseShape,
+ const PointToRefsMap& thePointsInfo,
+ std::set<std::shared_ptr<GeomAPI_Shape> >& theShapes);
+
+ /// \brief Performs the split of the shape by points.
+ /// \param[in] theBaseShape shape that should be splitted.
+ /// \param[in] thePoints container of points to split
+ /// \param[out] theShapes container of shapes after split
+ GEOMALGOAPI_EXPORT static void splitShape_p(const std::shared_ptr<GeomAPI_Shape>& theBaseShape,
+ const std::list<std::shared_ptr<GeomAPI_Pnt> >& thePoints,
+ std::set<std::shared_ptr<GeomAPI_Shape> >& theShapes);
+
+ GEOMALGOAPI_EXPORT static std::shared_ptr<GeomAPI_Shape> findShape(
+ const std::list<std::shared_ptr<GeomAPI_Pnt> >& thePoints,
+ const std::set<std::shared_ptr<GeomAPI_Shape> >& theShapes);
+
+ /// \brief Returns a dir from a shape and an axis.
+ /// \param[in] theBaseShape shape whose center of mass serves as the starting point of the dir.
+ /// \param[in] theAxis axis that serves as a direction for the dir
+ /// \return dir that builds from center of mass of the base shape and the axis
+ GEOMALGOAPI_EXPORT static std::shared_ptr<GeomAPI_Dir> buildDirFromAxisAndShape(
+ const std::shared_ptr<GeomAPI_Shape> theBaseShape,
+ const std::shared_ptr<GeomAPI_Ax1> theAxis);
+
+ /// \brief Reapproximate a wire to build a single edge
+ GEOMALGOAPI_EXPORT static std::shared_ptr<GeomAPI_Edge> wireToEdge(
+ const std::shared_ptr<GeomAPI_Wire>& theWire);
+
+ /// \brief Get non-composite sub-shapes of the given shape.
+ /// \param[in] theShape shape that should be exploded
+ /// \return list of sub-shapes (vertices, edges, faces, solids)
+ GEOMALGOAPI_EXPORT static ListOfShape getLowLevelSubShapes(const GeomShapePtr& theShape);