Branch data Line data Source code
1 : : /*-------------------------------------------------------------------------
2 : : * Filename : Body.hpp
3 : : *
4 : : * Purpose : This class represents the topological entity, Body,
5 : : * which is the highest level abstraction for a complete
6 : : * geometric model.
7 : : *
8 : : * Special Notes : Body is a GroupingEntity in the TopologyEntity hierarchy.
9 : : * It is also a RefEntity and get a lot of its functionality
10 : : * and data from the RefEntity base class for meshing
11 : : * purposes.
12 : : *
13 : : * The user is provided a handle to Bodies.
14 : : *
15 : : * Creator :
16 : : *
17 : : * Creation Date :
18 : : *
19 : : * Owner :
20 : : *-------------------------------------------------------------------------
21 : : */
22 : :
23 : : #ifndef BODY_HPP
24 : : #define BODY_HPP
25 : :
26 : : #include "GroupingEntity.hpp"
27 : : #include "RefEntity.hpp"
28 : : #include "CoVolume.hpp"
29 : : #include "RefVolume.hpp"
30 : :
31 : : class CubitTransformMatrix;
32 : :
33 : : //! Body class.
34 : : class CUBIT_GEOM_EXPORT Body : public GroupingEntity,
35 : : public RefEntity
36 : : {
37 : : public :
38 : :
39 : : /*- the factory is allowed to call the (private) constructors */
40 : : friend class RefEntityFactory;
41 : :
42 : : /* constructors/destructors */
43 : :
44 : : virtual ~Body() ;
45 : : /*- The destructor. */
46 : :
47 : : /* topology */
48 : :
49 : : //! Gets the dag type.
50 : 295854 : DagType dag_type() const { return DagType::body_type(); }
51 : :
52 : 0 : void get_parent_ref_entities(DLIList<RefEntity*>& entity_list) { entity_list.clean_out(); }
53 : :
54 : : //! Gets the type info.
55 : 86 : const std::type_info& entity_type_info() const { return typeid(Body); }
56 : :
57 : : //! Gets the class name: "Body".
58 : 206 : static const char* get_class_name()
59 : : {
60 : 206 : return "Body";
61 : : }
62 : :
63 : : //! Gets the class name: "Body".
64 : 206 : virtual const char* class_name() const
65 : : {
66 : 206 : return get_class_name();
67 : : }
68 : :
69 : : //! Gets the underlying BodySM pointer.
70 : : BodySM* get_body_sm_ptr() const;
71 : :
72 : : //! Returns the bounding box of this body
73 : : virtual CubitBox bounding_box();
74 : :
75 : : //! Return a CubitVector set to the centroid of this body
76 : : virtual CubitVector center_point();
77 : :
78 : : //! Get certain mass props, cofg is center of gravity
79 : : CubitBoolean get_mass_props(CubitVector& cofg);
80 : :
81 : : //! Determines whether a point is inside, outside, or on boundary
82 : : //! of a volume.
83 : : CubitPointContainment point_containment( CubitVector &point );
84 : :
85 : : //! Returns the volume of this body.
86 : : virtual double measure();
87 : :
88 : : //! Query to see if this is a sheet body.
89 : : CubitBoolean is_sheet_body();
90 : :
91 : : //! Do a measure and api entity check.
92 : : virtual int validate();
93 : :
94 : : //! Functions related to "measuring" the Body
95 : : virtual CubitString measure_label();
96 : :
97 : : //! Sets the color.
98 : : virtual void color(int value);
99 : : //! Gets the color.
100 : : virtual int color() const;
101 : :
102 : : protected:
103 : :
104 : : Body() ;
105 : : /*- The default constructor.
106 : : */
107 : :
108 : : Body(BodySM* OSMEPtr) ;
109 : : /*- The constructor with a pointer to an other solid model entity.
110 : : */
111 : :
112 : : private:
113 : :
114 : : Body( const Body& );
115 : : void operator=( const Body& );
116 : :
117 : : } ;
118 : :
119 : : #endif
120 : :
|