Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CompositeLump.hpp
3 : : //
4 : : // Purpose : Combine Lumps
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jason Kraftcheck
9 : : //
10 : : // Creation Date : 01/11/02
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef COMPOSITE_LUMP_HPP
14 : : #define COMPOSITE_LUMP_HPP
15 : :
16 : : #include "VGDefines.h"
17 : : #include "Lump.hpp"
18 : : #include "CompositeGeom.hpp"
19 : : #include "TBOwner.hpp"
20 : : #include "HiddenEntitySet.hpp"
21 : : #include "CompositeShell.hpp"
22 : :
23 : : class CompositeBody;
24 : : class HiddenEntitySet;
25 : :
26 : : class CompositeLump : public Lump, public TBOwner
27 : : {
28 : : friend class CompositeBody;
29 : : public:
30 : :
31 : : CompositeLump( Lump* real_lump );
32 : : CompositeLump( CompositeGeom* geom );
33 : : virtual ~CompositeLump();
34 : :
35 : : int num_lumps() const;
36 : : Lump* get_lump( int index ) const;
37 : : int index_of( Lump* ) const;
38 : : void update();
39 : :
40 : : CubitStatus add( Lump* lump );
41 : : CubitStatus remove( Lump* lump );
42 : : CubitStatus remove_lump( int index );
43 : :
44 : : HiddenEntitySet& hidden_entities();
45 : : bool has_hidden_entities() const;
46 : : void get_hidden_surfaces( DLIList<Surface*>& surfaces );
47 : :
48 : : CompositeShell* first_shell() const;
49 : : CompositeShell* next_shell( CompositeShell* after_this ) const;
50 : :
51 : : CubitStatus add( CompositeShell* shell );
52 : : CubitStatus remove( CompositeShell* shell );
53 : :
54 : : CompositeBody* get_body() const;
55 : :
56 : : CubitBox bounding_box() const;
57 : : double measure();
58 : :
59 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
60 : : void get_children_virt( DLIList<TopologyBridge*>& children );
61 : 0 : int layer() const { return COMPOSITE_LAYER; }
62 : : GeometryQueryEngine* get_geometry_query_engine() const;
63 : :
64 : : void append_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
65 : : void remove_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
66 : : void remove_all_simple_attribute_virt();
67 : : CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& attrib_list );
68 : : CubitStatus get_simple_attribute( const CubitString& name,
69 : : DLIList<CubitSimpleAttrib>& attrib_list );
70 : :
71 : : CubitStatus remove_bridge( TopologyBridge* bridge );
72 : : CubitStatus swap_bridge( TopologyBridge* old_tb, TopologyBridge* new_tb, bool );
73 : : CubitBoolean contains_bridge( TopologyBridge* bridge ) const;
74 : : void notify_reversed( TopologyBridge* bridge );
75 : :
76 : : CompositeLump* split( VGArray<int>& indices_to_move );
77 : : CubitStatus combine( CompositeLump* dead_vol );
78 : :
79 : : void print_debug_info( const char* line_prefix = 0, bool brief = false );
80 : :
81 : : virtual CubitStatus mass_properties( CubitVector ¢roid, double &volume );
82 : :
83 : : private:
84 : :
85 : : CompositeBody* myBody;
86 : : CompositeLump* nextLump;
87 : :
88 : : CompositeGeom* compGeom;
89 : :
90 : : CompositeShell* firstShell;
91 : :
92 : : HiddenEntitySet* hiddenSet;
93 : : };
94 : :
95 : 0 : inline CompositeShell* CompositeLump::first_shell() const
96 : 0 : { return firstShell; }
97 : :
98 : 0 : inline CompositeShell* CompositeLump::next_shell( CompositeShell* after ) const
99 [ # # ][ # # ]: 0 : { return !after ? firstShell : after->myLump == this ? after->lumpNext : 0; }
100 : :
101 : 0 : inline int CompositeLump::num_lumps() const
102 : 0 : { return compGeom->num_entities(); }
103 : :
104 : 0 : inline Lump* CompositeLump::get_lump( int index ) const
105 [ # # ]: 0 : { return dynamic_cast<Lump*>(compGeom->entity( index )); }
106 : :
107 : 0 : inline int CompositeLump::index_of( Lump* lump ) const
108 : 0 : { return compGeom->index_of( lump ); }
109 : :
110 : 0 : inline void CompositeLump::update()
111 : 0 : { compGeom->update_cached_data(); }
112 : :
113 : 0 : inline CompositeBody* CompositeLump::get_body() const
114 : 0 : { return myBody; }
115 : :
116 : 0 : inline HiddenEntitySet& CompositeLump::hidden_entities()
117 : : {
118 [ # # ]: 0 : if( !hiddenSet )
119 [ # # ]: 0 : hiddenSet = new HiddenEntitySet(this);
120 : 0 : return *hiddenSet;
121 : : }
122 : :
123 : :
124 : : #endif
|