// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
//
#ifndef GeomAlgoAPI_ShapeTools_H_
#include <map>
#include <set>
+class GeomAPI_Ax1;
class GeomAPI_Edge;
class GeomAPI_Dir;
class GeomAPI_Face;
class GeomAPI_PlanarEdges;
class GeomAPI_Pln;
class GeomAPI_Pnt;
+class GeomAPI_Wire;
class GeomDataAPI_Point2D;
class ModelAPI_Object;
/// \return the total volume of the solids of the current shape or 0.0 if it can be computed.
GEOMALGOAPI_EXPORT static double volume(const std::shared_ptr<GeomAPI_Shape> theShape);
+ /// \return the total area of the faces of the current shape or 0.0 if it can be computed.
+ GEOMALGOAPI_EXPORT static double area(const std::shared_ptr<GeomAPI_Shape> theShape);
+
/// \return the centre of mass of the current face.
/// The coordinates returned for the center of mass
/// are expressed in the absolute Cartesian coordinate system.
GEOMALGOAPI_EXPORT static std::shared_ptr<GeomAPI_Pnt>
centreOfMass(const std::shared_ptr<GeomAPI_Shape> theShape);
+ /// \brief Obtain radius of cylindrical face.
+ /// Return negative value if the face is not a cylinder
+ GEOMALGOAPI_EXPORT static double radius(const std::shared_ptr<GeomAPI_Face>& theCylinder);
+
+ /// \brief Calculate minimal distance between shapes
+ GEOMALGOAPI_EXPORT static double minimalDistance(const GeomShapePtr& theShape1,
+ const GeomShapePtr& theShape2);
+
/// \brief Combines faces with common edges to shells, or solids to compsolids.
/// \param[in] theCompound compound of shapes.
/// \param[in] theType type of combine.
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;
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);
};
#endif