Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : OCCShell.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jane Hu
9 : : //
10 : : // Creation Date : 11/16/07
11 : : //
12 : : // Owner :
13 : : //-------------------------------------------------------------------------
14 : :
15 : : #ifndef OCC_SHELL_HPP
16 : : #define OCC_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 : : #include "TopoDS_Shell.hxx"
26 : :
27 : : class OCCBody;
28 : : class OCCLump;
29 : : class OCCSurface;
30 : : class OCCLoop;
31 : : class OCCCurve;
32 : : class OCCPoint;
33 : : class BRepAlgoAPI_BooleanOperation;
34 : : class BRepBuilderAPI_ModifyShape;
35 : : class BRepBuilderAPI_MakeShape;
36 : : class LocOpe_SplitShape;
37 : : // ********** END CUBIT INCLUDES **********
38 : :
39 : : class OCCShell : public ShellSM
40 : : {
41 : : public:
42 : :
43 : : OCCShell(TopoDS_Shell *theShell, OCCSurface* surface = NULL);
44 : :
45 : : virtual ~OCCShell() ;
46 : : //- Destructor.
47 : :
48 : 20094 : TopoDS_Shell* get_TopoDS_Shell()
49 [ + - ][ + - ]: 20094 : {if(myTopoDSShell && !myTopoDSShell->IsNull()) assert (myTopoDSShell->ShapeType() == TopAbs_SHELL); return myTopoDSShell;}
[ + - ][ - + ]
50 : : void set_TopoDS_Shell(TopoDS_Shell shell);
51 : :
52 : 242 : OCCLump* my_lump() {return myLump;}
53 : 622 : OCCBody* my_body() {return myBody;}
54 : 0 : OCCSurface* my_surface() {return mySheetSurface;}
55 : 0 : void set_sheet_surface (OCCSurface* surface) {mySheetSurface = surface;}
56 : :
57 : 5510 : void set_lump(OCCLump* lump) {myLump = lump;}
58 : 5510 : void set_body(OCCBody* body) {myBody = body;}
59 : :
60 : 36822 : bool is_sheet() const { return mySheetSurface != 0; }
61 : :
62 : : virtual GeometryQueryEngine*
63 : : get_geometry_query_engine() const;
64 : : //R GeometryQueryEngine*
65 : : //R- A pointer to the geometric modeling engine associated with
66 : : //R- the object.
67 : : //- This function returns a pointer to the geometric modeling engine
68 : : //- associated with the object.
69 : :
70 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
71 : : //R void
72 : : //I
73 : : //I-
74 : : //I- that is to be appended to this OSME object.
75 : : //- The purpose of this function is to append a
76 : : //- attribute to the OSME. The is attached to each of the
77 : : //- underlying solid model entities this one points to.
78 : :
79 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
80 : : //R void
81 : : //I CubitSimpleAttrib*
82 : : //I- A reference to a CubitSimpleAttrib object which is the object
83 : : //I- that is to be removed to this OSME object.
84 : : //- The purpose of this function is to remove a simple
85 : : //- attribute from the OSME. The attribute is attached to each of the
86 : : //- underlying solid model entities this one points to.
87 : :
88 : : virtual void remove_all_simple_attribute_virt();
89 : : //R void
90 : : //I-
91 : : //- The purpose of this function is to remove all simple
92 : : //- attributes from the OSME.
93 : :
94 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
95 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
96 : : DLIList<CubitSimpleAttrib>&);
97 : : //R CubitSimpleAttrib*
98 : : //R- the returned cubit simple attribute.
99 : : //- The purpose of this function is to get the attributes
100 : : //- of the geometry entity. The name is attached to the underlying solid
101 : : //- model entity(ies) this one points to.
102 : : //- MJP Note:
103 : : //- This is the code that implements the requirement that names
104 : : //- of VGI Entities propagate across solid model boolean
105 : : //- operations. The success of this relies, of course, on the underlying
106 : : //- solid modeler being able to propagate attributes across
107 : : //- such operations on its entities. If it cannot, then "names"
108 : : //- of VGI entities will not propagate.
109 : :
110 : : virtual void get_parents_virt( DLIList<TopologyBridge*>& parents );
111 : : virtual void get_children_virt( DLIList<TopologyBridge*>& children );
112 : :
113 : : //ModifyShape refers only to Transform and GTransform for now 1/10/11)
114 : : CubitStatus update_OCC_entity( BRepBuilderAPI_ModifyShape *aBRepTrsf,
115 : : BRepAlgoAPI_BooleanOperation *op = NULL);
116 : : double measure(); //area of the shell
117 : : static CubitStatus update_OCC_entity(TopoDS_Shell& old_shell,
118 : : TopoDS_Shape& new_shell,
119 : : BRepBuilderAPI_MakeShape *op,
120 : : LocOpe_SplitShape* sp = NULL);
121 : :
122 : 242 : DLIList<OCCSurface*> getMemberSurfaces() { return memberSurfaces; }
123 : 2593 : void setMemberSurfaces(DLIList<OCCSurface*> surfaceList)
124 : : {
125 : 2593 : memberSurfaces = surfaceList;
126 : 2593 : }
127 : : protected:
128 : :
129 : : private:
130 : : TopoDS_Shell *myTopoDSShell;
131 : : OCCSurface* mySheetSurface;
132 : : OCCLump* myLump;
133 : : OCCBody* myBody;
134 : : DLIList<OCCSurface*> memberSurfaces;
135 : : };
136 : :
137 : : #endif
138 : :
|