Salome HOME
Compsolid creation in extrusion
[modules/shaper.git] / src / GeomAPI / GeomAPI_Shape.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        GeomAPI_Shape.hxx
4 // Created:     23 Apr 2014
5 // Author:      Mikhail PONIKAROV
6
7 #ifndef GeomAPI_Shape_H_
8 #define GeomAPI_Shape_H_
9
10 #include <GeomAPI_Interface.h>
11 #include <memory>
12 #include <list>
13
14 /**\class GeomAPI_Shape
15  * \ingroup DataModel
16  * \brief Interface to the topological shape object
17  */
18 class GeomAPI_Shape : public GeomAPI_Interface
19 {
20 public:
21   /// Shape type enum
22   enum ShapeType {
23     COMPOUND, COMPSOLID, SOLID, SHELL,
24     FACE, WIRE, EDGE, VERTEX,
25     SHAPE
26   };
27
28  public:
29   /// Creation of empty (null) shape
30   GEOMAPI_EXPORT 
31   GeomAPI_Shape();
32
33   /// Returns true if the underlied shape is null
34   GEOMAPI_EXPORT 
35   bool isNull() const;
36
37   /// Returns whether the shapes are equal
38   GEOMAPI_EXPORT 
39   virtual bool isEqual(const std::shared_ptr<GeomAPI_Shape> theShape) const;
40
41   /// Returns whether the shape is a vertex
42   GEOMAPI_EXPORT 
43   virtual bool isVertex() const;
44
45   /// Returns whether the shape is an edge
46   GEOMAPI_EXPORT 
47   virtual bool isEdge() const;
48
49   /// Returns whether the shape is a face
50   GEOMAPI_EXPORT 
51   virtual bool isFace() const;
52
53   /// Returns whether the shape is a compound
54   GEOMAPI_EXPORT 
55   virtual bool isCompound() const;
56
57   /// Returns whether the shape is a compound of solids
58   GEOMAPI_EXPORT 
59   virtual bool isCompoundOfSolids() const;
60
61   /// Returns whether the shape is a solid
62   GEOMAPI_EXPORT 
63   virtual bool isSolid() const;
64
65   /// Returns the shape type
66   GEOMAPI_EXPORT
67   virtual ShapeType shapeType() const;
68
69   /// Computes boundary dimensions of the shape
70   /// Returns False if it is not possible
71   GEOMAPI_EXPORT 
72   bool computeSize(double& theXmin, double& theYmin, double& theZmin,
73                    double& theXmax, double& theYmax, double& theZmax) const;
74
75   /// Returns the shape as BRep stream
76   GEOMAPI_EXPORT 
77   std::string getShapeStream() const;
78 };
79
80 //! Pointer on list of shapes
81 typedef std::list<std::shared_ptr<GeomAPI_Shape> > ListOfShape;
82
83 //! Pointer on attribute object
84 typedef std::shared_ptr<GeomAPI_Shape> GeomShapePtr;
85
86 #endif