]> SALOME platform Git repositories - modules/shaper.git/blob - src/GeomAPI/GeomAPI_Shape.h
Salome HOME
Update SketchPlugin_Projection feature (issue #1459)
[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 whether the shape is a compsolid
66   GEOMAPI_EXPORT
67   virtual bool isCompSolid() const;
68
69   /// Returns whether the shape is planar
70   GEOMAPI_EXPORT
71   virtual bool isPlanar() const;
72
73   /// Returns the shape type
74   GEOMAPI_EXPORT
75   virtual ShapeType shapeType() const;
76
77   /// \return the shape type as string.
78   GEOMAPI_EXPORT
79   virtual std::string shapeTypeStr() const;
80
81   /// \return true if passed shape is a sub-shape of this shape.
82   /// \param theShape shape to search.
83   GEOMAPI_EXPORT virtual bool isSubShape(const std::shared_ptr<GeomAPI_Shape> theShape) const;
84
85
86   /// Computes boundary dimensions of the shape
87   /// Returns False if it is not possible
88   GEOMAPI_EXPORT 
89   bool computeSize(double& theXmin, double& theYmin, double& theZmin,
90                    double& theXmax, double& theYmax, double& theZmax) const;
91
92   /// Returns the shape as BRep stream
93   GEOMAPI_EXPORT 
94   std::string getShapeStream() const;
95 };
96
97 //! Pointer on list of shapes
98 typedef std::list<std::shared_ptr<GeomAPI_Shape> > ListOfShape;
99
100 //! Pointer on attribute object
101 typedef std::shared_ptr<GeomAPI_Shape> GeomShapePtr;
102
103 #endif