Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : OCCLump.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : David White
9 : : //
10 : : // Creation Date : 7/18/2000
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef FACET_LUMP_HPP
14 : : #define FACET_LUMP_HPP
15 : :
16 : : // ********** BEGIN STANDARD INCLUDES **********
17 : : // ********** END STANDARD INCLUDES **********
18 : :
19 : : // ********** BEGIN CUBIT INCLUDES **********
20 : : #include "CubitDefines.h"
21 : : #include "Lump.hpp"
22 : : #include <stdio.h>
23 : : #include "TopoDS_Solid.hxx"
24 : : // ********** END CUBIT INCLUDES **********
25 : :
26 : : // ********** BEGIN FORWARD DECLARATIONS **********
27 : : class TopologyEntity;
28 : : class BodySM;
29 : : class OCCAttrib;
30 : :
31 : : class OCCBody;
32 : : class OCCShell;
33 : : class OCCSurface;
34 : : class OCCLoop;
35 : : class OCCCoEdge;
36 : : class OCCCurve;
37 : : class OCCPoint;
38 : : class BRepBuilderAPI_MakeShape;
39 : : class BRepBuilderAPI_ModifyShape;
40 : : class BRepAlgoAPI_BooleanOperation;
41 : : class LocOpe_SplitShape;
42 : : // ********** END FORWARD DECLARATIONS **********
43 : :
44 : : class OCCLump : public Lump
45 : : {
46 : : public:
47 : :
48 : : OCCLump(TopoDS_Solid *theSolid, OCCSurface* surface = NULL,
49 : : OCCShell* shell = NULL);
50 : :
51 : 176 : OCCSurface* my_sheet_surface() {return mySheetSurface;}
52 : 176 : OCCShell * my_shell() {return myShell;}
53 : : void set_surface(OCCSurface* surface) {mySheetSurface = surface;}
54 : : void set_shell(OCCShell* shell) {myShell = shell;}
55 : :
56 : : virtual ~OCCLump();
57 : : //- The destructor
58 : :
59 : 2500 : void add_body(BodySM* new_body)
60 : 2500 : {myBodyPtr = new_body;}
61 : :
62 : 20903 : TopoDS_Solid *get_TopoDS_Solid()
63 [ + - ][ + - ]: 20903 : {if(myTopoDSSolid && !myTopoDSSolid->IsNull()) assert (myTopoDSSolid->ShapeType() == TopAbs_SOLID); return myTopoDSSolid; }
[ + - ][ - + ]
64 : : void set_TopoDS_Solid(TopoDS_Solid solid);
65 : :
66 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
67 : : //R void
68 : : //I
69 : : //I-
70 : : //I- that is to be appended to this OSME object.
71 : : //- The purpose of this function is to append a
72 : : //- attribute to the OSME. The is attached to each of the
73 : : //- underlying solid model entities this one points to.
74 : :
75 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
76 : : //R void
77 : : //I CubitSimpleAttrib*
78 : : //I- A reference to a CubitSimpleAttrib object which is the object
79 : : //I- that is to be removed to this OSME object.
80 : : //- The purpose of this function is to remove a simple
81 : : //- attribute from the OSME. The attribute is attached to each of the
82 : : //- underlying solid model entities this one points to.
83 : :
84 : : virtual void remove_all_simple_attribute_virt();
85 : : //R void
86 : : //I-
87 : : //- The purpose of this function is to remove all simple
88 : : //- attributes from the OSME.
89 : :
90 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
91 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
92 : : DLIList<CubitSimpleAttrib>&);
93 : : //R CubitSimpleAttrib*
94 : : //R- the returned cubit simple attribute.
95 : : //- The purpose of this function is to get the attributes
96 : : //- of the geometry entity. The name is attached to the underlying solid
97 : : //- model entity(ies) this one points to.
98 : : //- MJP Note:
99 : : //- This is the code that implements the requirement that names
100 : : //- of VGI Entities propagate across solid model boolean
101 : : //- operations. The success of this relies, of course, on the underlying
102 : : //- solid modeler being able to propagate attributes across
103 : : //- such operations on its entities. If it cannot, then "names"
104 : : //- of VGI entities will not propagate.
105 : :
106 : : virtual CubitBox bounding_box() const ;
107 : :
108 : : virtual GeometryQueryEngine*
109 : : get_geometry_query_engine() const;
110 : : //R GeometryQueryEngine*
111 : : //R- A pointer to the geometric modeling engine associated with
112 : : //R- the object.
113 : : //- This function returns a pointer to the geometric modeling engine
114 : : //- associated with the object.
115 : :
116 : 0 : virtual CubitStatus merge( GeometryEntity* /*GEPtr*/)
117 : : {
118 [ # # ]: 0 : PRINT_ERROR("BUG: In OCCLump::merge\n"
119 : : " This function should not be called at all\n"
120 [ # # ]: 0 : " This is a Bug -- please report it!\n");
121 : 0 : return CUBIT_FAILURE;
122 : : }
123 : :
124 : 0 : virtual TopologyEntity* unmerge(DLIList<RefVolume*>)
125 : : {
126 [ # # ]: 0 : PRINT_ERROR( "BUG: In OCCLump::unmerge\n"
127 : : " This function should not be called\n"
128 [ # # ]: 0 : " This is a Bug -- please report it!\n" );
129 : 0 : return (TopologyEntity*)NULL;
130 : : }
131 : :
132 : : virtual double measure();
133 : : //R double
134 : : //R- The numeric value of the measure (its units depend on the dimension
135 : : //R- of the RefEntity being "measured")
136 : : //- A generic geometric extent function.
137 : : //- Returns volume for Lump, area for Surface, length for Curve and
138 : : //- 1.0 for Point
139 : :
140 : : virtual void get_parents_virt( DLIList<TopologyBridge*>& parents );
141 : : virtual void get_children_virt( DLIList<TopologyBridge*>& children );
142 : :
143 : : BodySM* get_body() const;
144 : :
145 : 1514 : inline void remove_body() {myBodyPtr = 0;}
146 : :
147 : : CubitStatus mass_properties( CubitVector& centroid, double& volume );
148 : :
149 : : CubitPointContainment point_containment( const CubitVector &point );
150 : :
151 : : CubitStatus update_OCC_entity( BRepBuilderAPI_ModifyShape *aBRepTrsf,
152 : : BRepAlgoAPI_BooleanOperation *op = NULL);
153 : : static CubitStatus update_OCC_entity(TopoDS_Solid& old_shape,
154 : : TopoDS_Shape& new_shape,
155 : : BRepBuilderAPI_MakeShape *op,
156 : : LocOpe_SplitShape* sp = NULL);
157 : : protected:
158 : :
159 : : private:
160 : : BodySM *myBodyPtr;
161 : :
162 : : TopoDS_Solid *myTopoDSSolid;
163 : :
164 : : OCCSurface *mySheetSurface;
165 : : OCCShell * myShell;
166 : : } ;
167 : :
168 : :
169 : : // ********** BEGIN INLINE FUNCTIONS **********
170 : : // ********** END INLINE FUNCTIONS **********
171 : :
172 : : // ********** BEGIN FRIEND FUNCTIONS **********
173 : : // ********** END FRIEND FUNCTIONS **********
174 : :
175 : : // ********** BEGIN EXTERN FUNCTIONS **********
176 : : // ********** END EXTERN FUNCTIONS **********
177 : :
178 : : #endif
179 : :
|