Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CompositeBody.hpp
3 : : //
4 : : // Purpose : Composite of BodySMs
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jason Kraftcheck
9 : : //
10 : : // Creation Date : 01/11/02
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef COMPOSITE_BODY_HPP
14 : : #define COMPOSITE_BODY_HPP
15 : :
16 : : #include "VGDefines.h"
17 : : #include "BodySM.hpp"
18 : : #include "TBOwner.hpp"
19 : : #include "VGArray.hpp"
20 : :
21 : : class CompositeLump;
22 : :
23 : : class CompositeBody: public BodySM, public TBOwner
24 : : {
25 : : public:
26 : :
27 : : CompositeBody();
28 : : ~CompositeBody();
29 : :
30 : : CompositeLump* next_lump( CompositeLump* after_this = 0 ) const;
31 : :
32 : : CubitStatus add( CompositeLump* lump );
33 : : CubitStatus remove( CompositeLump* lump );
34 : :
35 : : int num_bodies() const;
36 : : BodySM* get_body( int index ) const;
37 : : int index_of( BodySM* body ) const;
38 : :
39 : : CubitStatus add( BodySM* body );
40 : : CubitStatus remove( BodySM* body );
41 : : CubitStatus remove_body( int index );
42 : : /*
43 : : CubitStatus move( const CubitVector& offset );
44 : : CubitStatus rotate( const CubitVector& axis, double degrees );
45 : : CubitStatus scale( double factor );
46 : : CubitStatus scale( const CubitVector& factors );
47 : : CubitStatus reflect( const CubitVector& axis );
48 : : CubitStatus restore();
49 : : CubitStatus reverse();
50 : : */
51 : : CubitStatus get_transforms( CubitTransformMatrix& tfm );
52 : :
53 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
54 : : void get_children_virt( DLIList<TopologyBridge*>& children );
55 : 0 : int layer() const { return COMPOSITE_LAYER; }
56 : : GeometryQueryEngine* get_geometry_query_engine() const;
57 : :
58 : : virtual void append_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
59 : : virtual void remove_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
60 : : virtual void remove_all_simple_attribute_virt();
61 : : virtual CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& attrib_list );
62 : : virtual CubitStatus get_simple_attribute( const CubitString& name,
63 : : DLIList<CubitSimpleAttrib>& attrib_list );
64 : :
65 : : CubitStatus remove_bridge( TopologyBridge* bridge );
66 : : CubitStatus swap_bridge( TopologyBridge* old_tb,
67 : : TopologyBridge* new_tb,
68 : : bool reversed );
69 : : CubitBoolean contains_bridge( TopologyBridge* bridge ) const;
70 : : void notify_reversed( TopologyBridge* bridge );
71 : :
72 : : CubitPointContainment point_containment( const CubitVector& pos, double tolerance = -1.0 );
73 : :
74 : : CubitStatus mass_properties( CubitVector& centroid, double& volume );
75 : :
76 : : void combine( CompositeBody* other );
77 : :
78 : : private:
79 : :
80 : : CompositeLump* firstLump;
81 : : VGArray<BodySM*> realBodies;
82 : :
83 : : };
84 : :
85 : 0 : inline int CompositeBody::num_bodies() const
86 : 0 : { return realBodies.size(); }
87 : :
88 : 0 : inline BodySM* CompositeBody::get_body( int index ) const
89 : 0 : { return realBodies[index]; }
90 : :
91 : 0 : inline int CompositeBody::index_of( BodySM* body ) const
92 : 0 : { return realBodies.find( body ); }
93 : :
94 : :
95 : :
96 : : #endif
|