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 : CoFace.cc
10 : : //
11 : : // Purpose :
12 : : //
13 : : // Special Notes :
14 : : //
15 : : // Creator : Xuechen Liu
16 : : //
17 : : // Creation Date : 08/02/96
18 : : //
19 : : // Owner : Jihong Ma
20 : : //-------------------------------------------------------------------------
21 : :
22 : : // ********** BEGIN STANDARD INCLUDES **********
23 : : // ********** END STANDARD INCLUDES **********
24 : :
25 : : // ********** BEGIN MOTIF INCLUDES **********
26 : : // ********** END MOTIF INCLUDES **********
27 : :
28 : : // ********** BEGIN OPEN INVENTOR INCLUDES **********
29 : : // ********** END OPEN INVENTOR INCLUDES **********
30 : :
31 : : // ********** BEGIN CUBIT INCLUDES **********
32 : :
33 : : #include "CoFace.hpp"
34 : : #include "RefFace.hpp"
35 : : #include "RefVolume.hpp"
36 : : #include "GroupingEntity.hpp"
37 : : #include "CastTo.hpp"
38 : : #include "GeometryDefines.h"
39 : : #include "Shell.hpp"
40 : :
41 : : // ********** END CUBIT INCLUDES **********
42 : :
43 : : // ********** BEGIN STATIC DECLARATIONS **********
44 : : // ********** END STATIC DECLARATIONS **********
45 : :
46 : :
47 : : // ********** BEGIN PUBLIC FUNCTIONS **********
48 : : //-------------------------------------------------------------------------
49 : : // Purpose : The default constructor.
50 : : //
51 : : // Special Notes :
52 : : //
53 : : // Creator : Xuechen Liu
54 : : //
55 : : // Creation Date : 08/02/96
56 : : //-------------------------------------------------------------------------
57 : 34550 : CoFace::CoFace()
58 : : {
59 : 17275 : }
60 : :
61 : : //-------------------------------------------------------------------------
62 : : // Purpose : The destructor.
63 : : //
64 : : // Special Notes :
65 : : //
66 : : // Creator : Raikanta Sahu
67 : : //
68 : : // Creation Date : 10/22/96
69 : : //-------------------------------------------------------------------------
70 : 31596 : CoFace::~CoFace()
71 : : {
72 [ - + ]: 21064 : }
73 : :
74 : : //-------------------------------------------------------------------------
75 : : // Purpose : The constructor with a pointer to a face and the
76 : : // sense of this CoFace.
77 : : //
78 : : // Special Notes :
79 : : //
80 : : // Creator : Xuechen Liu
81 : : //
82 : : // Creation Date : 08/02/96
83 : : //-------------------------------------------------------------------------
84 : 0 : CoFace::CoFace(RefFace* facePtr, CubitSense sense)
85 : : {
86 [ # # ]: 0 : attach_basic_topology_entity(facePtr) ;
87 [ # # ]: 0 : set_sense(sense) ;
88 : 0 : }
89 : :
90 : : //-------------------------------------------------------------------------
91 : : // Purpose : This function returns a pointer to the RefFace which
92 : : // the current CoFace is associated with.
93 : : //
94 : : // Special Notes :
95 : : //
96 : : // Creator : Malcolm J. Panthaki
97 : : //
98 : : // Creation Date : 08/02/96
99 : : //-------------------------------------------------------------------------
100 : 0 : RefFace* CoFace::get_ref_face_ptr()
101 : : {
102 : : // Call the generic function defined in the SenseEntity class to
103 : : // do the real work
104 : 0 : BasicTopologyEntity* BTEPtr = get_basic_topology_entity_ptr();
105 : :
106 : : // Cast the returned pointer to RefFace and return it
107 [ # # ]: 0 : return CAST_TO( BTEPtr, RefFace );
108 : : }
109 : :
110 : : //-------------------------------------------------------------------------
111 : : // Purpose : Get the parent Shell.
112 : : //
113 : : // Special Notes :
114 : : //
115 : : // Creator : Jason Kraftcheck
116 : : //
117 : : // Creation Date : 06/09/99
118 : : //-------------------------------------------------------------------------
119 : 2437 : Shell* CoFace::get_shell_ptr()
120 : : {
121 : 2437 : GroupingEntity* gpe_ptr = get_grouping_entity_ptr();
122 : :
123 : : // Cast the returned pointer to RefFace and return it
124 [ + + ]: 2437 : return CAST_TO( gpe_ptr, Shell );
125 : : }
126 : :
127 : : //-------------------------------------------------------------------------
128 : : // Purpose : This function returns a pointer to the RefVolume which
129 : : // the current CoFace is associated with.
130 : : //
131 : : // Special Notes :
132 : : //
133 : : // Creator : David White
134 : : //
135 : : // Creation Date : 03/14/97
136 : : //-------------------------------------------------------------------------
137 : 0 : RefVolume* CoFace::get_ref_volume()
138 : : {
139 : 0 : BasicTopologyEntity* bte_ptr = get_parent_basic_topology_entity_ptr();
140 : :
141 : : // Cast the returned pointer to RefFace and return it
142 [ # # ]: 0 : return dynamic_cast<RefVolume*>(bte_ptr);
143 : : }
144 : :
145 : :
146 : : //-------------------------------------------------------------------------
147 : : // Purpose : This function is called after a child of a TopologyEntity
148 : : // is switched. The sense of a CoFace may change if one
149 : : // of its RefFace changes. This function takes care of
150 : : // that. If the sense of the RefFaces that were switched
151 : : // is same, nothing is done. If the RefFaces are of
152 : : // opposite sense, the sense of this object is switched,
153 : : // i.e. if it was FORWARD, it is made REVERSE, and vice
154 : : // versa.
155 : : //
156 : : // Special Notes : This function assumes the RefFaces are equivalent...
157 : : //
158 : : // Creator : David White
159 : : //
160 : : // Creation Date : 4/3/97
161 : : //-------------------------------------------------------------------------
162 : :
163 : 0 : void CoFace::switch_child_notify(TopologyEntity const* newChild,
164 : : TopologyEntity const* oldChild )
165 : : {
166 : : // Make sure the entities being switched are RefFaces. If not,
167 : : // get out of this function.
168 : 0 : TopologyEntity* tmp_new_child = const_cast<TopologyEntity*>(newChild);
169 : 0 : TopologyEntity* tmp_old_child = const_cast<TopologyEntity*>(oldChild);
170 [ # # ]: 0 : RefFace* new_child_ref_face = CAST_TO(tmp_new_child, RefFace) ;
171 [ # # ]: 0 : RefFace* old_child_ref_face = CAST_TO(tmp_old_child, RefFace) ;
172 : :
173 [ # # ][ # # ]: 0 : if ( ( new_child_ref_face == NULL ) || ( old_child_ref_face == NULL ) )
174 : : {
175 : 0 : return ;
176 : : }
177 : :
178 : : CubitSense sense =
179 : 0 : old_child_ref_face->compare_alignment( new_child_ref_face );
180 : :
181 : : // If the sense of the old RefFace relative to the new RefFace is
182 : : // same, nothing needs to be done. However, if the relative sense
183 : : // is reversed, switch the sense of the CoFace.
184 [ # # ]: 0 : if ( sense == CUBIT_REVERSED )
185 : : {
186 [ # # ]: 0 : if ( get_sense() == CUBIT_FORWARD )
187 : : {
188 : 0 : set_sense(CUBIT_REVERSED) ;
189 : : }
190 : : else
191 : : {
192 : 0 : set_sense(CUBIT_FORWARD) ;
193 : : }
194 : : }
195 [ + - ][ + - ]: 6540 : }
196 : :
197 : :
198 : : // ********** END PUBLIC FUNCTIONS **********
199 : :
200 : : // ********** BEGIN PROTECTED FUNCTIONS **********
201 : : // ********** END PROTECTED FUNCTIONS **********
202 : :
203 : : // ********** BEGIN PRIVATE FUNCTIONS **********
204 : : // ********** END PRIVATE FUNCTIONS **********
205 : :
206 : : // ********** BEGIN HELPER CLASSES **********
207 : : // ********** END HELPER CLASSES **********
208 : :
209 : : // ********** BEGIN EXTERN FUNCTIONS **********
210 : : // ********** END EXTERN FUNCTIONS **********
211 : :
212 : : // ********** BEGIN STATIC FUNCTIONS **********
213 : : // ********** END STATIC FUNCTIONS **********
214 : :
|