Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : OCCBody.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : David White
9 : : //
10 : : // Creation Date : 7/18/00
11 : : //
12 : : //-------------------------------------------------------------------------
13 : :
14 : : #ifndef OCC_BODY_HPP
15 : : #define OCC_BODY_HPP
16 : :
17 : : // ********** BEGIN STANDARD INCLUDES **********
18 : : // ********** END STANDARD INCLUDES **********
19 : :
20 : : // ********** BEGIN CUBIT INCLUDES **********
21 : : #include "CubitDefines.h"
22 : : #include "BodySM.hpp"
23 : : #include "CubitTransformMatrix.hpp"
24 : : #include "CubitSimpleAttrib.hpp"
25 : : #include "CubitBox.hpp"
26 : : #include <TopAbs_ShapeEnum.hxx>
27 : : // ********** END CUBIT INCLUDES **********
28 : :
29 : : // ********** BEGIN FORWARD DECLARATIONS **********
30 : : class Body;
31 : : class TopologyEntity;
32 : : class CubitString;
33 : : class OCCLump;
34 : : class OCCShell;
35 : : class OCCSurface;
36 : : class OCCLoop;
37 : : class OCCCurve;
38 : : class OCCPoint;
39 : : class BRepBuilderAPI_Transform;
40 : : class BRepBuilderAPI_ModifyShape;
41 : : class BRepAlgoAPI_BooleanOperation;
42 : : class BRepBuilderAPI_MakeShape;
43 : : class LocOpe_SplitShape;
44 : : class TopoDS_Shape;
45 : : class TopoDS_Compound;
46 : : // ********** END FORWARD DECLARATIONS **********
47 : :
48 : : class OCCBody : public BodySM
49 : : {
50 : : public:
51 : :
52 : : // Currently, the compound should only consists solids.
53 : : OCCBody(TopoDS_Compound *theShape,
54 : : OCCSurface* surface = NULL, OCCShell* shell = NULL, Lump* lump = NULL);
55 : :
56 : : OCCBody(DLIList<Lump*>& my_lumps, DLIList<OCCShell*>& shells, DLIList<OCCSurface*>& surfaces);
57 : : void lumps(DLIList<Lump*>& my_lumps); //add lump list to myLumps
58 : 45628 : DLIList<Lump*> lumps(){return myLumps;}
59 : :
60 : 542 : void shells(DLIList<OCCShell*> shells) {myShells = shells;}
61 : : void shells(OCCShell* shell) {myShells.append(shell);}
62 : 40844 : DLIList<OCCShell*> shells() {return myShells;}
63 : :
64 : : virtual ~OCCBody() ;
65 : : //- The destructor.
66 : :
67 : : virtual GeometryQueryEngine* get_geometry_query_engine() const;
68 : : //R GeometryQueryEngine*
69 : : //R- A pointer to the geometric modeling engine associated with
70 : : //R- the object.
71 : : //- This function returns a pointer to the geometric modeling engine
72 : : //- associated with the object.
73 : :
74 : : TopoDS_Compound *get_TopoDS_Shape();
75 : : void get_TopoDS_Shape(TopoDS_Shape *& shape);
76 : : void set_TopoDS_Shape( TopoDS_Compound& theshape);
77 : :
78 : : virtual CubitStatus get_transforms( CubitTransformMatrix &tfm );
79 : : //R CubitStatus
80 : : //R- CUBIT_SUCCESS/CUBIT_FAILURE
81 : : //I BODYPtr
82 : : //- return the transformation matrix for this body
83 : :
84 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
85 : : //R void
86 : : //I
87 : : //I-
88 : : //I- that is to be appended to this OSME object.
89 : : //- The purpose of this function is to append a
90 : : //- attribute to the OSME. The is attached to each of the
91 : : //- underlying solid model entities this one points to.
92 : :
93 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
94 : : //R void
95 : : //I CubitSimpleAttrib*
96 : : //I- A reference to a CubitSimpleAttrib object which is the object
97 : : //I- that is to be removed to this OSME object.
98 : : //- The purpose of this function is to remove a simple
99 : : //- attribute from the OSME. The attribute is attached to each of the
100 : : //- underlying solid model entities this one points to.
101 : :
102 : : virtual void remove_all_simple_attribute_virt();
103 : : //R void
104 : : //I-
105 : : //- The purpose of this function is to remove all simple
106 : : //- attributes from the OSME.
107 : :
108 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
109 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
110 : : DLIList<CubitSimpleAttrib>&);
111 : : //R CubitSimpleAttrib*
112 : : //R- the returned cubit simple attribute.
113 : : //- The purpose of this function is to get the attributes
114 : : //- of the geometry entity. The name is attached to the underlying solid
115 : : //- model entity(ies) this one points to.
116 : : //- MJP Note:
117 : : //- This is the code that implements the requirement that names
118 : : //- of VGI Entities propagate across solid model boolean
119 : : //- operations. The success of this relies, of course, on the underlying
120 : : //- solid modeler being able to propagate attributes across
121 : : //- such operations on its entities. If it cannot, then "names"
122 : : //- of VGI entities will not propagate.
123 : :
124 : : virtual BodySM* copy();
125 : : //R OCCBody*
126 : : //R- Pointer to a OCCBody object
127 : : //- Copies this OCCBody object (including the BODY that it
128 : : //- contains) and returns a pointer to a new OCCBody object.
129 : :
130 : : void update_bounding_box();
131 : : // calculate bounding box.
132 : :
133 : : CubitBox get_bounding_box();
134 : : // return bounding box.
135 : :
136 : : virtual CubitStatus move(double , double , double );
137 : : //R CubitStatus
138 : : //R- CUBIT_SUCCESS/FAILURE
139 : : //I dx, dy, dz
140 : : //I- Offset values in each of the 3 Cartesian coordinate directions
141 : : //- Move the BODY by dx, dy and dz
142 : :
143 : : virtual CubitStatus rotate( double , double , double ,
144 : : double );
145 : : //R CubitStatus
146 : : //R- CUBIT_SUCCESS/FAILURE
147 : : //I x, y, z
148 : : //I- Axis of rotation
149 : : //I angle_in_degrees
150 : : //I- Angle of rotation in degrees
151 : : //- Rotate the BODY angle degrees about a vector defined by
152 : : //- x, y and z
153 : :
154 : : virtual CubitStatus scale(double, double, double);
155 : :
156 : : virtual CubitStatus scale(double);
157 : : //R CubitStatus
158 : : //R- CUBIT_SUCCESS/FAILURE
159 : : //I scaling_factor
160 : : //I- Scaling factor
161 : : //- Scale the BODY by the factor, scaling_factor
162 : :
163 : : CubitStatus reflect(double,double,double);
164 : : //- reflect about an axis
165 : :
166 : : virtual void get_parents_virt( DLIList<TopologyBridge*>& parents );
167 : : virtual void get_children_virt( DLIList<TopologyBridge*>& children );
168 : :
169 : : void get_all_surfaces(DLIList<OCCSurface*> &surfaces);
170 : : void get_all_curves(DLIList<OCCCurve*> &curves);
171 : : void get_all_points(DLIList<OCCPoint*> &points);
172 : :
173 : : virtual CubitStatus mass_properties( CubitVector& result, double& volume );
174 : :
175 : : virtual CubitPointContainment point_containment( const CubitVector& pos, double tolerance );
176 : :
177 : : //update the underlining CompSolid, BRepBuilderAPI_ModifyShape now is
178 : : //referring to only BRepBuilderAPI_Transform or BRepBuilderAPI_GTransform.
179 : : CubitStatus update_OCC_entity( BRepBuilderAPI_ModifyShape *aBRepTrsf,
180 : : BRepAlgoAPI_BooleanOperation *op = NULL);
181 : :
182 : : static CubitStatus update_OCC_entity(TopoDS_Shape& old_shape,
183 : : TopoDS_Shape& new_shape,
184 : : BRepBuilderAPI_MakeShape *op,
185 : : LocOpe_SplitShape* sp = NULL );
186 : :
187 : 40844 : DLIList<OCCSurface*> my_sheet_surfaces() {return mySheetSurfaces;}
188 : :
189 : : void set_sheet_surfaces(DLIList<OCCSurface*> surfaces);
190 : :
191 : : void set_sheet_surfaces(OCCSurface* surf) {mySheetSurfaces.append(surf);}
192 : : virtual CubitBoolean is_sheet_body();
193 : :
194 : : static TopoDS_Compound* make_Compound(DLIList<Lump*>& my_lumps,
195 : : DLIList<OCCShell*>& shells,
196 : : DLIList<OCCSurface*>& surfaces);
197 : :
198 : : CubitStatus transform(BRepBuilderAPI_Transform& aBRepTrsf);
199 : : protected:
200 : : private:
201 : :
202 : : DLIList<Lump*> myLumps;
203 : : //List of the attached lumps for the traversal functions.
204 : : DLIList<CubitSimpleAttrib> csa_list;
205 : : //List of CubitSimpleAttribs
206 : : TopoDS_Compound *myTopoDSShape;
207 : :
208 : : CubitBox boundingbox;
209 : :
210 : : DLIList<OCCSurface*> mySheetSurfaces;
211 : :
212 : : DLIList<OCCShell*> myShells;
213 : : };
214 : :
215 : :
216 : : #endif
217 : :
|