Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Copyright Notice
3 : : //
4 : : // Copyright (c) 1996
5 : : // by Malcolm J. Panthaki, DBA, and the University of New Mexico.
6 : : //-------------------------------------------------------------------------
7 : : //
8 : : //-------------------------------------------------------------------------
9 : : // Filename : Shell.C
10 : : //
11 : : // Purpose : This file contains the implementation of the class
12 : : // Shell.
13 : : //
14 : : // Special Notes :
15 : : //
16 : : // Creator : Xuechen Liu
17 : : //
18 : : // Creation Date : 08/02/96
19 : : //
20 : : // Owner : Xuechen Liu
21 : : //-------------------------------------------------------------------------
22 : :
23 : : // ********** BEGIN STANDARD INCLUDES **********
24 : : // ********** END STANDARD INCLUDES **********
25 : :
26 : : // ********** BEGIN MOTIF INCLUDES **********
27 : : // ********** END MOTIF INCLUDES **********
28 : :
29 : : // ********** BEGIN OPEN INVENTOR INCLUDES **********
30 : : // ********** END OPEN INVENTOR INCLUDES **********
31 : :
32 : : // ********** BEGIN CUBIT INCLUDES **********
33 : : #include "Shell.hpp"
34 : : #include "CoFace.hpp"
35 : : #include "CastTo.hpp"
36 : : #include "DLIList.hpp"
37 : : #include "RefFace.hpp"
38 : : #include "CubitBox.hpp"
39 : : #include "RefVolume.hpp"
40 : : #include "ShellSM.hpp"
41 : : // ********** END CUBIT INCLUDES **********
42 : :
43 : : // ********** BEGIN STATIC DECLARATIONS **********
44 : : // ********** END STATIC DECLARATIONS **********
45 : :
46 : : // ********** BEGIN PUBLIC FUNCTIONS **********
47 : :
48 : : //-------------------------------------------------------------------------
49 : : // Purpose : Default constructor.
50 : : //
51 : : // Special Notes :
52 : : //
53 : : // Creator : Xuechen Liu
54 : : //
55 : : // Creation Date : 08/06/96
56 : : //-------------------------------------------------------------------------
57 : 0 : Shell::Shell()
58 : : {
59 : 0 : }
60 : :
61 : : //-------------------------------------------------------------------------
62 : : // Purpose : A constructor woth a pointer to an other solid
63 : : // model entity.
64 : : //
65 : : // Special Notes :
66 : : //
67 : : // Creator : Xuechen Liu
68 : : //
69 : : // Creation Date : 08/06/96
70 : : //-------------------------------------------------------------------------
71 : 5812 : Shell::Shell(ShellSM* OSMEPtr)
72 : : {
73 [ + - ][ + - ]: 2906 : bridge_manager()->add_bridge(OSMEPtr) ;
74 : 2906 : }
75 : :
76 : :
77 : :
78 : 0 : RefVolume* Shell::get_ref_volume_ptr()
79 : : {
80 [ # # ]: 0 : return CAST_TO( get_basic_topology_entity_ptr(), RefVolume );
81 : : }
82 : :
83 : : //-------------------------------------------------------------------------
84 : : // Purpose : Find the bounding box of the Shell
85 : : //
86 : : // Special Notes :
87 : : //
88 : : // Creator : Jason Kraftcheck
89 : : //
90 : : // Creation Date : 11/27/99
91 : : //-------------------------------------------------------------------------
92 : 0 : CubitBox Shell::bounding_box()
93 : : {
94 [ # # ]: 0 : CubitBox result;
95 [ # # ][ # # ]: 0 : DLIList<RefFace*> face_list;
96 [ # # ]: 0 : ref_faces( face_list );
97 [ # # ][ # # ]: 0 : if( face_list.size() > 0 )
98 [ # # ][ # # ]: 0 : result = face_list.get_and_step()->bounding_box();
[ # # ][ # # ]
99 [ # # ][ # # ]: 0 : for( int i = face_list.size(); i > 1; i-- )
100 [ # # ][ # # ]: 0 : result |= face_list.get_and_step()->bounding_box();
[ # # ][ # # ]
101 : 0 : return result;
102 : : }
103 : :
104 : : //-------------------------------------------------------------------------
105 : : // Purpose : Get ShellSM
106 : : //
107 : : // Special Notes :
108 : : //
109 : : // Creator : Jason Kraftcheck
110 : : //
111 : : // Creation Date : 07/23/03
112 : : //-------------------------------------------------------------------------
113 : 11 : ShellSM* Shell::get_shell_sm_ptr() const
114 : : {
115 [ + - ]: 11 : return dynamic_cast<ShellSM*>(bridge_manager()->topology_bridge());
116 : : }
117 : :
118 : : //-------------------------------------------------------------------------
119 : : // Purpose : Check if shell is a sheet.
120 : : //
121 : : // Special Notes :
122 : : //
123 : : // Creator : Jason Kraftcheck
124 : : //
125 : : // Creation Date : 01/15/04
126 : : //-------------------------------------------------------------------------
127 : 55 : CubitBoolean Shell::is_sheet()
128 : : {
129 [ + - ]: 55 : DLIList<RefFace*> faces;
130 [ + - ]: 55 : ref_faces(faces);
131 [ + - ][ + + ]: 88 : while (faces.size())
132 [ + - ][ + - ]: 55 : if ( ! faces.pop()->is_nonmanifold(this) )
[ + + ]
133 : 22 : return CUBIT_FALSE;
134 [ + - ]: 55 : return CUBIT_TRUE;
135 [ + - ][ + - ]: 6540 : }
136 : :
137 : : // ********** END PUBLIC FUNCTIONS **********
138 : :
139 : : // ********** BEGIN PROTECTED FUNCTIONS **********
140 : : // ********** END PROTECTED FUNCTIONS **********
141 : :
142 : : // ********** BEGIN PRIVATE FUNCTIONS **********
143 : : // ********** END PRIVATE FUNCTIONS **********
144 : :
145 : : // ********** BEGIN HELPER CLASSES **********
146 : : // ********** END HELPER CLASSES **********
147 : :
148 : : // ********** BEGIN EXTERN FUNCTIONS **********
149 : : // ********** END EXTERN FUNCTIONS **********
150 : :
151 : : // ********** BEGIN STATIC FUNCTIONS **********
152 : : // ********** END STATIC FUNCTIONS **********
153 : :
|