Salome HOME
ba92674e8c80a03228a3349655dc711447eef05a
[modules/shaper.git] / src / Model / Model_ResultCompSolid.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        Model_ResultCompSolid.h
4 // Created:     20 Jul 2015
5 // Author:      Natalia ERMOLAEVA
6
7 #ifndef Model_ResultCompSolid_H_
8 #define Model_ResultCompSolid_H_
9
10 #include "Model.h"
11 #include <ModelAPI_ResultCompSolid.h>
12 #include <vector>
13
14 /**\class Model_ResultCompSolid
15 * \ingroup DataModel
16 * \brief The compsolid (container of body results) result of a feature.
17 *
18 * Provides a container of shapes that may be displayed in the viewer.
19 */
20 class Model_ResultCompSolid : public ModelAPI_ResultCompSolid
21 {
22   /// Sub-bodies if this is compsolid: zero base index to subs
23   std::vector<std::shared_ptr<ModelAPI_ResultBody> > mySubs;
24   /// Flag that stores the previous state of "concealed": if it is changed,
25   /// The event must be generated to redisplay this and all subs.
26   bool myLastConcealed;
27
28
29 public:
30
31   /// Removes the stored builders
32   MODEL_EXPORT virtual ~Model_ResultCompSolid();
33
34   /// Request for initialization of data model of the object: adding all attributes
35   MODEL_EXPORT virtual void initAttributes();
36
37   /// Stores the shape (called by the execution method). Creates sub-results for compsolid.
38   MODEL_EXPORT virtual void store(const std::shared_ptr<GeomAPI_Shape>& theShape);
39
40   /// Stores the generated shape.  Creates sub-results for compsolid.
41   MODEL_EXPORT virtual void storeGenerated(const std::shared_ptr<GeomAPI_Shape>& theFromShape,
42     const std::shared_ptr<GeomAPI_Shape>& theToShape);
43
44   /// Stores the modified shape.  Creates sub-results for compsolid.
45   MODEL_EXPORT virtual void storeModified(const std::shared_ptr<GeomAPI_Shape>& theOldShape,
46     const std::shared_ptr<GeomAPI_Shape>& theNewShape, const int theDecomposeSolidsTag = 0);
47
48   /// Returns the number of sub-elements
49   MODEL_EXPORT virtual int numberOfSubs(bool forTree = false) const;
50
51   /// Returns the sub-result by zero-base index
52   MODEL_EXPORT virtual std::shared_ptr<ModelAPI_ResultBody> subResult(const int theIndex,
53     bool forTree = false) const;
54
55   /// Returns true if feature or reuslt belong to this composite feature as subs
56   MODEL_EXPORT virtual bool isSub(ObjectPtr theObject) const;
57
58   /// Returns the parameters of color definition in the resources config manager
59   MODEL_EXPORT virtual void colorConfigInfo(std::string& theSection, std::string& theName,
60                                             std::string& theDefault);
61
62   /// Disables the result body: keeps the resulting shape as selection, but erases the underlaying
63   /// naming data structure if theFlag if false. Or restores everything on theFlag is true.
64   MODEL_EXPORT virtual bool setDisabled(std::shared_ptr<ModelAPI_Result> theThis,
65     const bool theFlag);
66
67   /// The compsolid is concealed if at least one of the sub is concealed
68   MODEL_EXPORT virtual bool isConcealed();
69
70   /// Sets all subs as concealed in the data tree (referenced by other objects)
71   MODEL_EXPORT virtual void setIsConcealed(const bool theValue);
72
73   /// Returns true if the latest modification of this body in the naming history
74   // is equal to the given shape
75   MODEL_EXPORT virtual bool isLatestEqual(const std::shared_ptr<GeomAPI_Shape>& theShape);
76
77 protected:
78   /// Makes a body on the given feature
79   Model_ResultCompSolid();
80
81   /// Updates the sub-bodies if shape of this object is composite-solid
82   void updateSubs(const std::shared_ptr<GeomAPI_Shape>& theThisShape);
83
84   friend class Model_Objects;
85 };
86
87 #endif