Salome HOME
Merge branch 'BR_internationalization'
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_Pipe.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        GeomAlgoAPI_Pipe.h
4 // Created:     16 March 2016
5 // Author:      Dmitry Bobylev
6
7 #ifndef GeomAlgoAPI_Pipe_H_
8 #define GeomAlgoAPI_Pipe_H_
9
10 #include "GeomAlgoAPI.h"
11
12 #include "GeomAlgoAPI_MakeSweep.h"
13
14 #include <GeomAPI_Shape.h>
15
16 /// \class GeomAlgoAPI_Pipe
17 /// \ingroup DataAlgo
18 /// \brief Allows to create extrusion of objects along a path. It produces the following results from objects:\n
19 /// Vertex -> Edge\n
20 /// Edge -> Face\n
21 /// Wire -> Shell\n
22 /// Face -> Solid
23 class GeomAlgoAPI_Pipe : public GeomAlgoAPI_MakeSweep
24 {
25 public:
26   /// \brief Creates extrusion for the given shape along a path.
27   /// \param[in] theBaseShape base shape(vertex, edge, wire of face).
28   /// \param[in] thePathShape path shape(edge or wire).
29   GEOMALGOAPI_EXPORT GeomAlgoAPI_Pipe(const GeomShapePtr theBaseShape,
30                                       const GeomShapePtr thePathShape);
31
32   /// \brief Creates extrusion for the given shape along a path.
33   /// \param[in] theBaseShape base shape(vertex, edge, wire of face).
34   /// \param[in] thePathShape path shape(edge or wire).
35   /// \param[in] theBiNormal edge or wire to preserve the constant angle between the normal vector
36   /// to the base object and the BiNormal vector.
37   GEOMALGOAPI_EXPORT GeomAlgoAPI_Pipe(const GeomShapePtr theBaseShape,
38                                       const GeomShapePtr thePathShape,
39                                       const GeomShapePtr theBiNormal);
40
41   /// \brief Creates extrusion for the given shape along a path.
42   /// \param[in] theBaseShapes base shape(vertex, edge, wire of face).
43   /// \param[in] theLocations vertexes on the path. Should be empty or same size as theBaseShapes.
44   /// \param[in] thePathShape path shape(edge or wire).
45   /// to the base object and the BiNormal vector.
46   GEOMALGOAPI_EXPORT GeomAlgoAPI_Pipe(const ListOfShape& theBaseShapes,
47                                       const ListOfShape& theLocations,
48                                       const GeomShapePtr thePathShape);
49
50   /// \return the list of shapes generated from theShape.
51   /// \param[in] theShape base shape.
52   /// \param[out] theHistory generated shapes.
53   GEOMALGOAPI_EXPORT void generated(const GeomShapePtr theShape,
54                                     ListOfShape& theHistory);
55
56 private:
57   void build(const GeomShapePtr theBaseShape,
58              const GeomShapePtr thePathShape);
59
60   void build(const GeomShapePtr theBaseShape,
61              const GeomShapePtr thePathShape,
62              const GeomShapePtr theBiNormal);
63
64   void build(const ListOfShape& theBaseShapes,
65              const ListOfShape& theLocations,
66              const GeomShapePtr thePathShape);
67 };
68
69 #endif