Branch data Line data Source code
1 : : #ifndef PARTITION_SHELL_HPP
2 : : #define PARTITION_SHELL_HPP
3 : :
4 : : #include "ShellSM.hpp"
5 : : #include "PartitionCoSurf.hpp"
6 : :
7 : : class PartitionSurface;
8 : : class PartitionLump;
9 : : class CubitVector;
10 : :
11 : : class PartitionShell : public ShellSM
12 : : {
13 : : friend class PartitionLump;
14 : :
15 : : public:
16 : :
17 : : PartitionShell( );
18 : : virtual ~PartitionShell();
19 : :
20 : : PartitionLump* get_lump() const;
21 : :
22 : : PartitionCoSurf* next_co_surface( const PartitionCoSurf* prev = 0 ) const;
23 : :
24 : : CubitStatus add( PartitionCoSurf* cosurf );
25 : : CubitStatus remove( PartitionCoSurf* cosurf );
26 : :
27 : : PartitionCoSurf* add( PartitionSurface* surf, CubitSense sense );
28 : : // create a CoSurf
29 : : PartitionCoSurf* find_first( const PartitionSurface* surface ) const;
30 : : // find first CoSurf with the passed surface
31 : : PartitionCoSurf* find_next( const PartitionCoSurf* cosurf ) const;
32 : : // find next CoSurf with the same surface
33 : : CubitSense find_sense( const PartitionSurface* surface ) const;
34 : : // returns CUBIT_UNKNOWN if multiple CoSurfs
35 : : void remove_all_surfaces( DLIList<PartitionSurface*>* removed = 0 );
36 : :
37 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
38 : : void get_children_virt( DLIList<TopologyBridge*>& children );
39 : : int layer() const;
40 : : GeometryQueryEngine* get_geometry_query_engine() const;
41 : :
42 : : void append_simple_attribute_virt( const CubitSimpleAttrib& );
43 : : void remove_simple_attribute_virt( const CubitSimpleAttrib& );
44 : : void remove_all_simple_attribute_virt();
45 : : CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& );
46 : : CubitStatus get_simple_attribute( const CubitString&,
47 : : DLIList<CubitSimpleAttrib>& );
48 : :
49 : : void print_debug_info( const char* prefix = 0 ) const;
50 : :
51 : : CubitPointContainment point_containment( const CubitVector& pt );
52 : :
53 : : bool is_nonmanifold( PartitionSurface* surface ) const;
54 : :
55 : : CubitStatus mass_properties( CubitVector& centroid, double& volume );
56 : :
57 : : private:
58 : :
59 : : PartitionLump* myLump;
60 : : PartitionShell* lumpNext;
61 : :
62 : : PartitionCoSurf* firstCoSurf;
63 : : };
64 : :
65 : 0 : inline PartitionLump* PartitionShell::get_lump() const
66 : 0 : { return myLump; }
67 : :
68 : : inline PartitionCoSurf*
69 : 0 : PartitionShell::next_co_surface( const PartitionCoSurf* prev ) const
70 [ # # ][ # # ]: 0 : { return !prev ? firstCoSurf : prev->myShell == this ? prev->shellNext : 0; }
71 : :
72 : : #endif
|