Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : FacetShell.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Xuechen Liu
9 : : //
10 : : // Creation Date : 08/06/96
11 : : //
12 : : // Owner : Malcolm J. Panthaki
13 : : //-------------------------------------------------------------------------
14 : :
15 : : #ifndef FACET_SHELL_HPP
16 : : #define FACET_SHELL_HPP
17 : :
18 : : // ********** BEGIN STANDARD INCLUDES **********
19 : : // ********** END STANDARD INCLUDES **********
20 : :
21 : : // ********** BEGIN CUBIT INCLUDES **********
22 : : #include "CubitDefines.h"
23 : : #include "ShellSM.hpp"
24 : :
25 : : class FacetBody;
26 : : class FacetLump;
27 : : class FacetSurface;
28 : : class FacetLoop;
29 : : class FacetCoEdge;
30 : : class FacetCurve;
31 : : class FacetPoint;
32 : :
33 : : // ********** END CUBIT INCLUDES **********
34 : :
35 : : class FacetShell : public ShellSM
36 : : {
37 : : public:
38 : :
39 : : FacetShell(Lump* my_lump,
40 : : DLIList<Surface*> &my_surfs );
41 : : //- Constructor with lists of attached lumps and surfaces.
42 : :
43 : : FacetShell( DLIList<Surface*> &my_surfs );
44 : : //- Constructor with lists of attached surfaces.
45 : :
46 : : virtual ~FacetShell() ;
47 : : //- Destructor.
48 : : void add_lump(Lump* lump_ptr);
49 : :
50 : :
51 : : virtual GeometryQueryEngine*
52 : : get_geometry_query_engine() const;
53 : : //R GeometryQueryEngine*
54 : : //R- A pointer to the geometric modeling engine associated with
55 : : //R- the object.
56 : : //- This function returns a pointer to the geometric modeling engine
57 : : //- associated with the object.
58 : :
59 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
60 : : //R void
61 : : //I
62 : : //I-
63 : : //I- that is to be appended to this OSME object.
64 : : //- The purpose of this function is to append a
65 : : //- attribute to the OSME. The is attached to each of the
66 : : //- underlying solid model entities this one points to.
67 : :
68 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
69 : : //R void
70 : : //I CubitSimpleAttrib*
71 : : //I- A reference to a CubitSimpleAttrib object which is the object
72 : : //I- that is to be removed to this OSME object.
73 : : //- The purpose of this function is to remove a simple
74 : : //- attribute from the OSME. The attribute is attached to each of the
75 : : //- underlying solid model entities this one points to.
76 : :
77 : : virtual void remove_all_simple_attribute_virt();
78 : : //R void
79 : : //I-
80 : : //- The purpose of this function is to remove all simple
81 : : //- attributes from the OSME.
82 : :
83 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
84 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
85 : : DLIList<CubitSimpleAttrib>&);
86 : : //R CubitSimpleAttrib*
87 : : //R- the returned cubit simple attribute.
88 : : //- The purpose of this function is to get the attributes
89 : : //- of the geometry entity. The name is attached to the underlying solid
90 : : //- model entity(ies) this one points to.
91 : : //- MJP Note:
92 : : //- This is the code that implements the requirement that names
93 : : //- of VGI Entities propagate across solid model boolean
94 : : //- operations. The success of this relies, of course, on the underlying
95 : : //- solid modeler being able to propagate attributes across
96 : : //- such operations on its entities. If it cannot, then "names"
97 : : //- of VGI entities will not propagate.
98 : :
99 : : void get_lumps ( DLIList<FacetLump *>& lumps );
100 : : void get_surfaces( DLIList<FacetSurface*>& surfaces );
101 : : void get_coedges ( DLIList<FacetCoEdge *>& coedges );
102 : : void get_curves ( DLIList<FacetCurve *>& curves );
103 : :
104 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
105 : : void get_children_virt( DLIList<TopologyBridge*>& children );
106 : :
107 : 0 : inline Lump* get_lump() const { return myLump; }
108 : :
109 : 0 : inline void remove_lump() { myLump = 0; }
110 : :
111 : : void disconnect_surfaces( DLIList<FacetSurface*> &surfs_to_disconnect );
112 : : void disconnect_all_surfaces();
113 : :
114 : : void reverse(); // invert sense of each surface as used in this shell.
115 : : void reverse_surfaces(); //Actually flip the surface... do not change sense.
116 : :
117 : : CubitPointContainment point_containment( const CubitVector &point, double tolerance = -1.0 );
118 : :
119 : : //determine whether this is a sheet shell or not.
120 : : // This function may have problems with certain non-manifold geometries
121 : : // It is looking for facets that aren't attached to another facet for
122 : : // one or more of its edges.
123 : : // NOTE (mbrewer): this can probably be improved by going to the
124 : : // curves and checking for the number of co-edges on each curve.
125 : : CubitBoolean is_sheet();
126 : :
127 : : protected:
128 : :
129 : : private:
130 : : Lump* myLump;
131 : : DLIList<Surface*> mySurfs;
132 : : };
133 : :
134 : :
135 : :
136 : : #endif
137 : :
|