Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : FacetLoop.cpp
3 : : //
4 : : // Purpose : Loops for Facet-based geometry module
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Steven J. Owen
9 : : //
10 : : // Creation Date : 12/06/00
11 : : //
12 : : // Owner : Steven J. Owen
13 : : //-------------------------------------------------------------------------
14 : :
15 : : #include "CastTo.hpp"
16 : : #include "FacetLoop.hpp"
17 : : #include "FacetQueryEngine.hpp"
18 : : #include "CoEdgeSM.hpp"
19 : :
20 : : #include "FacetBody.hpp"
21 : : #include "FacetLump.hpp"
22 : : #include "FacetShell.hpp"
23 : : #include "FacetSurface.hpp"
24 : : #include "FacetCoEdge.hpp"
25 : : #include "FacetCurve.hpp"
26 : : #include "FacetPoint.hpp"
27 : : // ********** END CUBIT INCLUDES **********
28 : :
29 : : // ********** BEGIN STATIC DECLARATIONS **********
30 : : // ********** END STATIC DECLARATIONS **********
31 : :
32 : : // ********** BEGIN PUBLIC FUNCTIONS **********
33 : :
34 : : //-------------------------------------------------------------------------
35 : : // Purpose : The constructor with a pointer to the FacetEvalTool.
36 : : //
37 : : // Special Notes :
38 : : //
39 : : //-------------------------------------------------------------------------
40 : 330 : FacetLoop::FacetLoop( Surface *surf_ptr,
41 [ + - ]: 330 : DLIList<CoEdgeSM*> &coedge_list )
42 : : {
43 : 330 : mySurface = surf_ptr;
44 [ + - ]: 330 : myCoEdges += coedge_list;
45 : 330 : }
46 : :
47 : : //-------------------------------------------------------------------------
48 : : // Purpose : The constructor with coedges.
49 : : //
50 : : // Special Notes :
51 : : //
52 : : //-------------------------------------------------------------------------
53 [ + - ]: 264 : FacetLoop::FacetLoop( DLIList<CoEdgeSM*> &coedge_list )
54 : : {
55 [ + - ]: 132 : myCoEdges += coedge_list;
56 : 132 : }
57 : :
58 : : //-------------------------------------------------------------------------
59 : : // Purpose : The default destructor.
60 : : //
61 : : // Special Notes :
62 : : //
63 : : //-------------------------------------------------------------------------
64 [ # # ]: 0 : FacetLoop::~FacetLoop()
65 : : {
66 [ # # ]: 0 : }
67 : :
68 : : //-------------------------------------------------------------------------
69 : : // Purpose : The purpose of this function is to see if a loop is an external
70 : : // or internal loop of a surface.
71 : : //
72 : : // Special Notes :
73 : : //
74 : : // Creator : Jonathan Bugman
75 : : //
76 : : // Creation Date : 9/9/2008
77 : : //-------------------------------------------------------------------------
78 : 0 : CubitBoolean FacetLoop::is_external()
79 : : {
80 [ # # ][ # # ]: 0 : PRINT_ERROR( "This command is not supported with this engine.\n");
81 : 0 : return CUBIT_FAILURE;
82 : : }
83 : :
84 : 0 : LoopType FacetLoop::loop_type()
85 : : {
86 : 0 : return LOOP_TYPE_UNKNOWN;
87 : : }
88 : :
89 : : //-------------------------------------------------------------------------
90 : : // Purpose : The purpose of this function is to append a
91 : : // attribute to the GE. The name is attached to the
92 : : // underlying solid model entity this one points to.
93 : : //
94 : : //
95 : : // Special Notes :
96 : : //
97 : : //-------------------------------------------------------------------------
98 : 0 : void FacetLoop::append_simple_attribute_virt(const CubitSimpleAttrib& /*csattrib_ptr*/)
99 : : {
100 : : //PRINT_ERROR("FacetLoop::append_simple_attribute_virt not defined\n");
101 : 0 : return;
102 : :
103 : : }
104 : :
105 : : //-------------------------------------------------------------------------
106 : : // Purpose : The purpose of this function is to remove a simple
107 : : // attribute attached to this geometry entity. The name is
108 : : // removed from the underlying BODY this points to.
109 : : //
110 : : // Special Notes :
111 : : //
112 : : //-------------------------------------------------------------------------
113 : 0 : void FacetLoop::remove_simple_attribute_virt(const CubitSimpleAttrib& /*csattrib_ptr*/)
114 : : {
115 : : //PRINT_ERROR("FacetLoop::remove_simple_attribute_virt not defined\n");
116 : 0 : return;
117 : : }
118 : :
119 : : //-------------------------------------------------------------------------
120 : : // Purpose : The purpose of this function is to remove all simple
121 : : // attributes attached to this geometry entity. Also
122 : : // removes lingering GTC attributes.
123 : : //
124 : : //
125 : : // Special Notes :
126 : : //
127 : : //-------------------------------------------------------------------------
128 : 0 : void FacetLoop::remove_all_simple_attribute_virt()
129 : : {
130 : : //PRINT_ERROR(" FacetLoop::remove_all_simple_attribute_virt not defined\n");
131 : 0 : return;
132 : : }
133 : :
134 : : //-------------------------------------------------------------------------
135 : : // Purpose : The purpose of this function is to get the
136 : : // attributes attached to this geometry entity. The name is
137 : : // attached to the underlying BODY this points to.
138 : : //
139 : : // Special Notes :
140 : : //
141 : : //-------------------------------------------------------------------------
142 : 0 : CubitStatus FacetLoop::get_simple_attribute(DLIList<CubitSimpleAttrib>&
143 : : /*cubit_simple_attrib_list*/)
144 : : {
145 : : //PRINT_ERROR("FacetLoop::get_simple_attribute not defined\n");
146 : 0 : return CUBIT_FAILURE;
147 : : }
148 : 0 : CubitStatus FacetLoop::get_simple_attribute(const CubitString&,
149 : : DLIList<CubitSimpleAttrib>&)
150 : 0 : { return CUBIT_FAILURE; }
151 : :
152 : : //-------------------------------------------------------------------------
153 : : // Purpose : compute bounding box of loop
154 : : //
155 : : // Special Notes :
156 : : //
157 : : //-------------------------------------------------------------------------
158 : 0 : CubitBox FacetLoop::bounding_box() const
159 : : {
160 : 0 : CubitBox box;
161 : : //PRINT_ERROR("FacetLoop::bounding_box not implemented\n");
162 : 0 : return box;
163 : : }
164 : :
165 : : //-------------------------------------------------------------------------
166 : : // Purpose : Get geometry modeling engine: FacetQueryEngine
167 : : //
168 : : // Special Notes :
169 : : //
170 : : //-------------------------------------------------------------------------
171 : 0 : GeometryQueryEngine* FacetLoop::get_geometry_query_engine() const
172 : : {
173 : 0 : return FacetQueryEngine::instance();
174 : : }
175 : :
176 : : /*
177 : : void FacetLoop::bodysms(DLIList<BodySM*> &bodies)
178 : : {
179 : : mySurface->bodysms(bodies);
180 : : }
181 : :
182 : : void FacetLoop::lumps(DLIList<Lump*> &lumps)
183 : : {
184 : : mySurface->lumps(lumps);
185 : : }
186 : :
187 : : void FacetLoop::shellsms(DLIList<ShellSM*> &shellsms)
188 : : {
189 : : mySurface->shellsms(shellsms);
190 : : }
191 : :
192 : : void FacetLoop::surfaces(DLIList<Surface*> &surfaces)
193 : : {
194 : : surfaces.append_unique( mySurface );
195 : : }
196 : :
197 : : void FacetLoop::loopsms(DLIList<LoopSM*> &loopsms)
198 : : {
199 : : loopsms.append_unique( this );
200 : : }
201 : : void FacetLoop::coedgesms(DLIList<CoEdgeSM*> &coedgesms)
202 : : {
203 : : int ii;
204 : : for ( ii = myCoEdges.size(); ii > 0; ii-- )
205 : : {
206 : : coedgesms.append_unique(myCoEdges.get_and_step());
207 : : }
208 : : }
209 : :
210 : : void FacetLoop::curves(DLIList<Curve*> &curves)
211 : : {
212 : : int ii;
213 : : for ( ii = myCoEdges.size(); ii > 0; ii-- )
214 : : {
215 : : myCoEdges.get_and_step()->curves(curves);
216 : : }
217 : : }
218 : : void FacetLoop::points(DLIList<Point*> &points)
219 : : {
220 : : int ii;
221 : : for ( ii = myCoEdges.size(); ii > 0; ii-- )
222 : : {
223 : : myCoEdges.get_and_step()->points(points);
224 : : }
225 : : }
226 : : */
227 : :
228 : :
229 : 55 : void FacetLoop::get_parents_virt( DLIList<TopologyBridge*>& parents )
230 [ + - ]: 55 : { parents.append( mySurface ); }
231 : 1936 : void FacetLoop::get_children_virt( DLIList<TopologyBridge*>& children )
232 [ + - ][ + + ]: 9284 : { CAST_LIST_TO_PARENT( myCoEdges, children ); }
233 : :
234 : :
235 : 0 : void FacetLoop::get_lumps( DLIList<FacetLump*>& result_list )
236 : : {
237 [ # # ]: 0 : DLIList<FacetShell*> shell_list;
238 [ # # ]: 0 : get_shells( shell_list );
239 [ # # ]: 0 : shell_list.reset();
240 [ # # ][ # # ]: 0 : for ( int i = shell_list.size(); i--; )
241 : : {
242 [ # # ]: 0 : FacetShell* shell = shell_list.get_and_step();
243 [ # # ]: 0 : shell->get_lumps( result_list );
244 [ # # ][ # # ]: 0 : FacetLump* lump = dynamic_cast<FacetLump*>(shell->get_lump());
245 [ # # ]: 0 : if (lump)
246 [ # # ]: 0 : result_list.append_unique(lump);
247 [ # # ]: 0 : }
248 : 0 : }
249 : :
250 : 0 : void FacetLoop::get_shells( DLIList<FacetShell*>& result_list )
251 : : {
252 [ # # ][ # # ]: 0 : if ( FacetSurface* surf = dynamic_cast<FacetSurface*>(mySurface) )
253 : 0 : surf->get_shells( result_list );
254 : 0 : }
255 : :
256 : 924 : void FacetLoop::get_coedges( DLIList<FacetCoEdge*>& result_list )
257 : : {
258 : 924 : myCoEdges.reset();
259 [ + + ]: 4026 : for ( int i = 0; i < myCoEdges.size(); i++ )
260 [ + - ][ - + ]: 3102 : if (FacetCoEdge* coedge = dynamic_cast<FacetCoEdge*>(myCoEdges.next(i)))
[ + - ]
261 [ + - ]: 3102 : result_list.append( coedge );
262 : 924 : }
263 : :
264 : 0 : void FacetLoop::get_curves( DLIList<FacetCurve*>& result_list )
265 : : {
266 [ # # ]: 0 : DLIList<FacetCoEdge*> coedge_list;
267 [ # # ]: 0 : get_coedges( coedge_list );
268 [ # # ]: 0 : coedge_list.reset();
269 [ # # ][ # # ]: 0 : for ( int i = coedge_list.size(); i--; )
270 : : {
271 [ # # ]: 0 : FacetCoEdge* coedge = coedge_list.get_and_step();
272 [ # # ][ # # ]: 0 : FacetCurve* curve = dynamic_cast<FacetCurve*>(coedge->curve());
273 [ # # ]: 0 : if (curve)
274 [ # # ]: 0 : result_list.append_unique(curve);
275 [ # # ]: 0 : }
276 : 0 : }
277 : :
278 : :
279 : : //-------------------------------------------------------------------------
280 : : // Purpose : Tear down topology
281 : : //
282 : : // Special Notes :
283 : : //
284 : : // Creator : Jason Kraftcheck
285 : : //
286 : : // Creation Date : 09/29/03
287 : : //-------------------------------------------------------------------------
288 : 0 : void FacetLoop::disconnect_all_coedges()
289 : : {
290 : 0 : myCoEdges.reset();
291 [ # # ]: 0 : for (int i = myCoEdges.size(); i--; )
292 : : {
293 : 0 : CoEdgeSM* sm_ptr = myCoEdges.get_and_step();
294 [ # # ]: 0 : FacetCoEdge* coedge = dynamic_cast<FacetCoEdge*>(sm_ptr);
295 [ # # ]: 0 : if (coedge)
296 : : {
297 [ # # ]: 0 : assert(coedge->get_loop() == this);
298 : 0 : coedge->remove_loop();
299 : : }
300 : : }
301 : 0 : myCoEdges.clean_out();
302 [ + - ][ + - ]: 6540 : }
303 : :
304 : :
|