Branch data Line data Source code
1 : : #include <iostream>
2 : : #include <map>
3 : : #include "FBiGeom_MOAB.hpp"
4 : : #include "moab/GeomTopoTool.hpp"
5 : : #include "moab/OrientedBoxTreeTool.hpp"
6 : : #include "moab/CartVect.hpp"
7 : : #include "moab/FileOptions.hpp"
8 : : #include "MBTagConventions.hpp"
9 : : #include <stdlib.h>
10 : : #include <cstring>
11 : : #include <map>
12 : : #include "assert.h"
13 : :
14 : : using namespace moab;
15 : :
16 : 0 : static int compare_no_case1( const char* str1, const char* str2, size_t n )
17 : : {
18 [ # # ][ # # ]: 0 : for( size_t i = 1; i != n && *str1 && toupper( *str1 ) == toupper( *str2 ); ++i, ++str1, ++str2 )
[ # # ]
19 : : ;
20 : 0 : return toupper( *str2 ) - toupper( *str1 );
21 : : }
22 : : // Filter out non-MOAB options and remove the "moab:" prefix
23 : 5 : static std::string filter_options1( const char* begin, const char* end )
24 : : {
25 : 5 : const char* opt_begin = begin;
26 : 5 : const char* opt_end = begin;
27 : :
28 : 5 : std::string filtered;
29 : 5 : bool first = true;
30 : :
31 [ - + ]: 5 : while( opt_end != end )
32 : : {
33 [ # # ]: 0 : opt_end = std::find( opt_begin, end, ' ' );
34 : :
35 [ # # ][ # # ]: 0 : if( opt_end - opt_begin >= 5 && compare_no_case1( opt_begin, "moab:", 5 ) == 0 )
[ # # ]
36 : : {
37 [ # # ][ # # ]: 0 : if( !first ) filtered.push_back( ';' );
38 : 0 : first = false;
39 [ # # ]: 0 : filtered.append( opt_begin + 5, opt_end );
40 : : }
41 : :
42 : 0 : opt_begin = opt_end + 1;
43 : : }
44 : 5 : return filtered;
45 : : }
46 : :
47 : : bool debug_igeom = false;
48 : : bool Debug_surf_eval = false;
49 : :
50 : : #define COPY_RANGE( r, vec ) \
51 : : { \
52 : : EntityHandle* tmp_ptr = reinterpret_cast< EntityHandle* >( vec ); \
53 : : std::copy( r.begin(), r.end(), tmp_ptr ); \
54 : : }
55 : :
56 : : #define TAG_HANDLE( tagh ) reinterpret_cast< Tag >( tagh )
57 : :
58 : : #define COPY_DOUBLEVEC( r, vec ) \
59 : : { \
60 : : double* tmp_ptr = reinterpret_cast< double* >( vec ); \
61 : : std::copy( r.begin(), r.end(), tmp_ptr ); \
62 : : }
63 : :
64 : 1 : void FBiGeom_getDescription( FBiGeom_Instance instance, char* descr, int descr_len )
65 : : {
66 : 1 : iMesh_getDescription( IMESH_INSTANCE( instance ), descr, descr_len );
67 : 1 : }
68 : :
69 : 0 : void FBiGeom_getErrorType( FBiGeom_Instance instance, /*out*/ int* error_type )
70 : : {
71 : 0 : iMesh_getErrorType( IMESH_INSTANCE( instance ), /*out*/ error_type );
72 : 0 : }
73 : :
74 : 5 : void FBiGeom_newGeom( char const* options, FBiGeom_Instance* instance_out, int* err, int options_len )
75 : : {
76 : :
77 [ + - ]: 5 : std::string tmp_options = filter_options1( options, options + options_len );
78 [ + - ]: 10 : FileOptions opts( tmp_options.c_str() );
79 : : // process some options?
80 : :
81 : 5 : MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( instance_out );
82 : 5 : *mbigeom = NULL;
83 [ + - ][ + - ]: 5 : *mbigeom = new MBiGeom();
84 : 5 : *err = iBase_SUCCESS;
85 : 5 : }
86 : :
87 : 5 : void FBiGeom_dtor( FBiGeom_Instance instance, int* err )
88 : : {
89 : 5 : MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( &instance );
90 [ + - ][ + - ]: 5 : if( *mbigeom ) delete *mbigeom;
91 : 5 : *err = iBase_SUCCESS;
92 : 5 : }
93 : :
94 : 1 : void FBiGeom_newGeomFromMesh( iMesh_Instance mesh, iBase_EntitySetHandle set, const char* options,
95 : : FBiGeom_Instance* geom, int* err, int )
96 : : {
97 : 1 : MBiMesh* mbimesh = reinterpret_cast< MBiMesh* >( mesh );
98 : 1 : moab::Interface* mbi = mbimesh->mbImpl;
99 : 1 : moab::EntityHandle rootSet = reinterpret_cast< moab::EntityHandle >( set );
100 [ + - ][ + - ]: 1 : moab::GeomTopoTool* gtt = new moab::GeomTopoTool( mbi, true, rootSet );
101 : 1 : bool smooth = false; // decide from options
102 : 1 : char smth[] = "SMOOTH;";
103 : 1 : const char* res = strstr( options, smth );
104 [ + - ]: 1 : if( res != NULL ) smooth = true;
105 [ + - ][ + - ]: 1 : moab::FBEngine* fbe = new moab::FBEngine( mbi, gtt, smooth );
106 : 1 : MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( geom );
107 : 1 : *mbigeom = NULL;
108 [ + - ][ + - ]: 1 : *mbigeom = new MBiGeom( mbimesh, fbe );
109 : : // will do now the initialization of the engine;
110 : : // heavy duty computation
111 [ + - ]: 1 : fbe->Init();
112 : 1 : *err = iBase_SUCCESS;
113 : 1 : }
114 : : // corresponding to constructor 2, from iMesh instance
115 : 1 : void FBiGeom_dtor2( FBiGeom_Instance instance, int* err )
116 : : {
117 : 1 : moab::FBEngine* fbe = FBE_cast( instance );
118 [ + - ]: 1 : if( fbe )
119 : : {
120 : 1 : moab::GeomTopoTool* gtt = fbe->get_gtt();
121 [ + - ][ + - ]: 1 : if( gtt ) delete gtt;
122 [ + - ]: 1 : delete fbe;
123 : : }
124 : 1 : MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( &instance );
125 [ + - ][ + - ]: 1 : if( *mbigeom ) delete *mbigeom;
126 : 1 : *err = iBase_SUCCESS;
127 : 1 : }
128 : :
129 : 4 : void FBiGeom_load( FBiGeom_Instance instance, char const* name, char const* options, int* err, int, int options_len )
130 : : {
131 : : // first remove option for smooth facetting
132 : :
133 : 4 : const char smth[] = "SMOOTH;";
134 : 4 : bool smooth = false;
135 : 4 : const char* res = NULL;
136 : :
137 : 4 : char* reducedOptions = NULL;
138 : 4 : bool localReduce = false;
139 [ + + ]: 4 : if( options ) res = strstr( options, smth );
140 [ + + ]: 4 : if( res )
141 : : {
142 : : // extract that option, will not be recognized by our moab/imesh
143 [ + - ]: 2 : reducedOptions = new char[options_len - 6];
144 : 2 : localReduce = true;
145 : 2 : int preLen = (int)( res - options );
146 : 2 : strncpy( reducedOptions, options, preLen );
147 : 2 : int postLen = options_len - 7 - preLen;
148 : :
149 : 2 : char* tmp = reducedOptions + preLen;
150 : :
151 : 2 : strncpy( tmp, res + 7, postLen );
152 : 2 : reducedOptions[options_len - 7] = 0;
153 [ + - ][ + - ]: 2 : std::cout << reducedOptions << std::endl;
154 : 2 : smooth = true;
155 : : }
156 : : else
157 : : {
158 : 2 : reducedOptions = const_cast< char* >( options );
159 : : }
160 : : // load mesh-based geometry
161 : 4 : const EntityHandle* file_set = 0;
162 [ + - ][ + - ]: 4 : ErrorCode rval = MBI->load_file( name, file_set, reducedOptions );CHKERR( rval, "can't load mesh file" );
[ - + ][ # # ]
[ # # ]
163 [ + + ][ + - ]: 4 : if( localReduce ) delete[] reducedOptions;
164 : :
165 [ + - ]: 4 : FBEngine* fbe = FBE_cast( instance );
166 [ - + ]: 4 : if( fbe == NULL )
167 : : {
168 : 0 : *err = iBase_FAILURE;
169 : 0 : return;
170 : : }
171 [ + - ][ + - ]: 4 : GeomTopoTool* gtt = GETGTT( instance );
172 [ - + ]: 4 : if( gtt == NULL )
173 : : {
174 : 0 : *err = iBase_FAILURE;
175 : 0 : return;
176 : : }
177 : : // keep mesh-based geometries in Range
178 [ + - ][ - + ]: 4 : rval = gtt->find_geomsets();CHKERR( rval, "Failure to find geometry lists." );
[ # # ][ # # ]
179 : :
180 [ + + ][ + - ]: 4 : if( smooth ) fbe->set_smooth(); // assumes that initialization did not happen yet
181 : :
182 [ + - ]: 4 : fbe->Init(); // major computation
183 : :
184 [ + - ][ + - ]: 4 : RETURN( iBase_SUCCESS );
185 : : }
186 : :
187 : 0 : void FBiGeom_save( FBiGeom_Instance instance, char const* name, char const* options, int* err, int name_len,
188 : : int options_len )
189 : : {
190 : 0 : iMesh_save( IMESH_INSTANCE( instance ), NULL, name, options, err, name_len, options_len );
191 : 0 : }
192 : :
193 : 19 : void FBiGeom_getRootSet( FBiGeom_Instance instance, iBase_EntitySetHandle* root_set, int* err )
194 : : {
195 : : EntityHandle modelSet;
196 [ + - ][ + - ]: 19 : ErrorCode rval = FBE_cast( instance )->getRootSet( &modelSet );CHKERR( rval, "can't get root set " );
[ - + ][ # # ]
[ # # ]
197 : 19 : *root_set = (iBase_EntitySetHandle)modelSet;
198 [ + - ][ + - ]: 19 : RETURN( iBase_SUCCESS );
199 : : }
200 : :
201 : 0 : void FBiGeom_getBoundBox( FBiGeom_Instance instance, double*, double*, double*, double*, double*, double*, int* err )
202 : : {
203 : 0 : RETURN( iBase_NOT_SUPPORTED );
204 : : }
205 : :
206 : 66 : void FBiGeom_getEntities( FBiGeom_Instance instance, iBase_EntitySetHandle set_handle, int entity_type,
207 : : iBase_EntityHandle** entity_handles, int* entity_handles_allocated, int* entity_handles_size,
208 : : int* err )
209 : : {
210 : :
211 [ + - ][ - + ]: 66 : if( 0 > entity_type || 4 < entity_type ) { ERROR( iBase_INVALID_ENTITY_TYPE, "Bad entity type." ); }
212 : : else /* 0<= entity_type <= 4) */
213 : : {
214 [ + - ]: 66 : Range gentities;
215 [ + - ][ + - ]: 66 : ErrorCode rval = FBE_cast( instance )->getEntities( (EntityHandle)set_handle, entity_type, gentities );CHKERR( rval, "can't get entities " );
[ - + ][ # # ]
[ # # ]
216 [ + - ]: 66 : *entity_handles_size = gentities.size();
217 : :
218 [ - + ][ # # ]: 66 : CHECK_SIZE( *entity_handles, *entity_handles_allocated, *entity_handles_size, iBase_EntityHandle, NULL );
[ # # ][ # # ]
[ # # ][ + + ]
[ - + ][ # # ]
[ - + ][ # # ]
[ # # ]
219 [ + - ][ + - ]: 66 : COPY_RANGE( gentities, *entity_handles );
[ + - ][ + - ]
220 : : }
221 : :
222 : 66 : RETURN( iBase_SUCCESS );
223 : : }
224 : :
225 : 24 : void FBiGeom_getNumOfType( FBiGeom_Instance instance, iBase_EntitySetHandle set_handle, int entity_type, int* num_out,
226 : : int* err )
227 : : {
228 [ + - ][ - + ]: 24 : if( 0 > entity_type || 4 < entity_type ) { ERROR( iBase_INVALID_ENTITY_TYPE, "Bad entity type." ); }
229 [ - + ]: 24 : ErrorCode rval = FBE_cast( instance )->getNumOfType( (EntityHandle)set_handle, entity_type, num_out );CHKERR( rval, "can't get number of type " );
230 : :
231 : 24 : RETURN( iBase_SUCCESS );
232 : : }
233 : :
234 : 68 : void FBiGeom_getEntType( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* type, int* err )
235 : : {
236 : :
237 [ - + ]: 68 : ErrorCode rval = FBE_cast( instance )->getEntType( (EntityHandle)entity_handle, type );CHKERR( rval, "can't get entity type " );
238 : :
239 : 68 : RETURN( iBase_SUCCESS );
240 : : }
241 : :
242 : 3 : void FBiGeom_getArrType( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
243 : : int** type, int* type_allocated, int* type_size, int* err )
244 : : {
245 [ + - ][ + - ]: 3 : CHECK_SIZE( *type, *type_allocated, entity_handles_size, int, NULL );
[ - + ][ # # ]
[ # # ][ + - ]
[ + - ][ - + ]
[ # # ][ # # ]
[ # # ]
246 : 3 : *type_size = entity_handles_size;
247 : :
248 : : int tmp_err;
249 : :
250 [ + + ]: 39 : for( int i = 0; i < entity_handles_size; i++ )
251 : : {
252 [ + - ]: 36 : FBiGeom_getEntType( instance, entity_handles[i], *type + i, &tmp_err );
253 [ - + ][ # # ]: 36 : if( iBase_SUCCESS != tmp_err ) { ERROR( tmp_err, "Failed to get entity type in FBiGeom_getArrType." ); }
[ # # ]
254 : : }
255 : :
256 [ + - ][ + - ]: 3 : RETURN( iBase_SUCCESS );
257 : : }
258 : :
259 : 123 : void FBiGeom_getEntAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int to_dimension,
260 : : iBase_EntityHandle** adj_entities, int* adj_entities_allocated, int* adj_entities_size,
261 : : int* err )
262 : : {
263 [ + - ]: 123 : Range adjs;
264 : 123 : EntityHandle this_ent = MBH_cast( entity_handle );
265 : :
266 [ + - ][ + - ]: 123 : ErrorCode rval = FBE_cast( instance )->getEntAdj( this_ent, to_dimension, adjs );
267 : :
268 [ - + ][ # # ]: 123 : CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEntAdj." );
[ # # ]
269 : :
270 : : // copy adjacent entities
271 [ + - ]: 123 : *adj_entities_size = adjs.size();
272 [ - + ][ # # ]: 123 : CHECK_SIZE( *adj_entities, *adj_entities_allocated, *adj_entities_size, iBase_EntityHandle, NULL );
[ # # ][ # # ]
[ # # ][ + - ]
[ - + ][ # # ]
[ - + ][ # # ]
[ # # ]
273 [ + - ][ + - ]: 123 : COPY_RANGE( adjs, *adj_entities );
[ + - ]
274 : :
275 [ + - ][ + - ]: 123 : RETURN( iBase_SUCCESS );
276 : : }
277 : :
278 : : // I suspect this is wrong
279 : 0 : void FBiGeom_getArrAdj( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
280 : : int requested_entity_type, iBase_EntityHandle** adj_entity_handles,
281 : : int* adj_entity_handles_allocated, int* adj_entity_handles_size, int** offset,
282 : : int* offset_allocated, int* offset_size, int* err )
283 : : {
284 : : // check offset array size
285 [ # # ][ # # ]: 0 : Range temp_range, total_range;
286 [ # # ][ # # ]: 0 : CHECK_SIZE( *offset, *offset_allocated, entity_handles_size + 1, int, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
287 : 0 : *offset_size = entity_handles_size + 1;
288 : :
289 : : // get adjacent entities
290 [ # # ]: 0 : for( int i = 0; i < entity_handles_size; ++i )
291 : : {
292 [ # # ]: 0 : ( *offset )[i] = total_range.size();
293 [ # # ]: 0 : temp_range.clear();
294 : : ErrorCode rval =
295 [ # # ][ # # ]: 0 : FBE_cast( instance )->getEntAdj( MBH_cast( entity_handles[i] ), requested_entity_type, temp_range );CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getArrAdj." );
[ # # ][ # # ]
[ # # ]
296 [ # # ]: 0 : total_range.merge( temp_range );
297 : : }
298 [ # # ]: 0 : int nTot = total_range.size();
299 : 0 : ( *offset )[entity_handles_size] = nTot;
300 : :
301 : : // copy adjacent entities
302 [ # # ][ # # ]: 0 : CHECK_SIZE( *adj_entity_handles, *adj_entity_handles_allocated, nTot, iBase_EntityHandle, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
303 [ # # ][ # # ]: 0 : COPY_RANGE( total_range, *adj_entity_handles );
[ # # ]
304 : 0 : *adj_entity_handles_size = nTot;
305 : :
306 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
307 : : }
308 : :
309 : 0 : void FBiGeom_getEnt2ndAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int bridge_dimension,
310 : : int to_dimension, iBase_EntityHandle** adjacent_entities, int* adjacent_entities_allocated,
311 : : int* adjacent_entities_size, int* err )
312 : : {
313 [ # # ][ # # ]: 0 : Range to_ents, bridge_ents, tmp_ents;
[ # # ]
314 [ # # ][ # # ]: 0 : ErrorCode rval = FBE_cast( instance )->getEntAdj( MBH_cast( entity_handle ), bridge_dimension, bridge_ents );
315 : :
316 [ # # ][ # # ]: 0 : CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEnt2ndAdj." );
[ # # ]
317 : :
318 [ # # ][ # # ]: 0 : Range::iterator iter, jter, kter, end_jter;
[ # # ][ # # ]
319 [ # # ]: 0 : Range::iterator end_iter = bridge_ents.end();
320 [ # # ][ # # ]: 0 : for( iter = bridge_ents.begin(); iter != end_iter; ++iter )
[ # # ][ # # ]
321 : : {
322 [ # # ][ # # ]: 0 : rval = FBE_cast( instance )->getEntAdj( *iter, to_dimension, tmp_ents );
[ # # ]
323 : :
324 [ # # ][ # # ]: 0 : CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEnt2ndAdj." );
[ # # ]
325 : :
326 [ # # ][ # # ]: 0 : for( jter = tmp_ents.begin(); jter != end_jter; ++jter )
[ # # ][ # # ]
327 : : {
328 [ # # ][ # # ]: 0 : if( to_ents.find( *jter ) == to_ents.end() ) { to_ents.insert( *jter ); }
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
329 : : }
330 [ # # ]: 0 : tmp_ents.clear();
331 : : }
332 : :
333 [ # # ]: 0 : *adjacent_entities_size = to_ents.size();
334 [ # # ][ # # ]: 0 : CHECK_SIZE( *adjacent_entities, *adjacent_entities_allocated, *adjacent_entities_size, iBase_EntityHandle, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
335 [ # # ][ # # ]: 0 : COPY_RANGE( to_ents, *adjacent_entities );
[ # # ]
336 : :
337 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
338 : : }
339 : :
340 : 0 : void FBiGeom_getArr2ndAdj( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, int, iBase_EntityHandle**,
341 : : int*, int*, int**, int*, int*, int* err )
342 : : {
343 : : // not implemented
344 : : // who would need this monster, anyway?
345 : 0 : RETURN( iBase_NOT_SUPPORTED );
346 : : }
347 : :
348 : 0 : void FBiGeom_isEntAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle1, iBase_EntityHandle entity_handle2,
349 : : int* are_adjacent, int* err )
350 : : {
351 : :
352 : : bool adjacent_out;
353 : : ErrorCode rval =
354 [ # # ][ # # ]: 0 : FBE_cast( instance )->isEntAdj( MBH_cast( entity_handle1 ), MBH_cast( entity_handle2 ), adjacent_out );CHKERR( rval, "Failed to get adjacent info" );
[ # # ][ # # ]
[ # # ]
355 : 0 : *are_adjacent = (int)adjacent_out; // 0 or 1, really
356 : :
357 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
358 : : }
359 : :
360 : 0 : void FBiGeom_isArrAdj( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles_1, int entity_handles_1_size,
361 : : iBase_EntityHandle const* entity_handles_2, int entity_handles_2_size, int** is_adjacent_info,
362 : : int* is_adjacent_info_allocated, int* is_adjacent_info_size, int* err )
363 : : {
364 : 0 : int index1 = 0;
365 : 0 : int index2 = 0;
366 : : size_t index1_step, index2_step;
367 : : int count;
368 : :
369 : : // If either list contains only 1 entry, compare that entry with
370 : : // every entry in the other list.
371 [ # # ]: 0 : if( entity_handles_1_size == entity_handles_2_size )
372 : : {
373 : 0 : index1_step = index2_step = 1;
374 : 0 : count = entity_handles_1_size;
375 : : }
376 [ # # ]: 0 : else if( entity_handles_1_size == 1 )
377 : : {
378 : 0 : index1_step = 0;
379 : 0 : index2_step = 1;
380 : 0 : count = entity_handles_2_size;
381 : : }
382 [ # # ]: 0 : else if( entity_handles_2_size == 1 )
383 : : {
384 : 0 : index1_step = 1;
385 : 0 : index2_step = 0;
386 : 0 : count = entity_handles_1_size;
387 : : }
388 : : else
389 : : {
390 : 0 : RETURN( iBase_INVALID_ENTITY_COUNT );
391 : : }
392 : :
393 [ # # ][ # # ]: 0 : CHECK_SIZE( *is_adjacent_info, *is_adjacent_info_allocated, count, int, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
394 : :
395 [ # # ]: 0 : for( int i = 0; i < count; ++i )
396 : : {
397 : 0 : FBiGeom_isEntAdj( instance, entity_handles_1[index1], entity_handles_2[index2], &( ( *is_adjacent_info )[i] ),
398 : 0 : err );
399 [ # # ]: 0 : FWDERR();
400 : :
401 : 0 : index1 += index1_step;
402 : 0 : index2 += index2_step;
403 : : }
404 : : // it is now safe to set the size
405 : 0 : *is_adjacent_info_size = count;
406 : :
407 : 0 : RETURN( iBase_SUCCESS );
408 : : }
409 : :
410 : 24 : void FBiGeom_getEntClosestPt( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double near_x, double near_y,
411 : : double near_z, double* on_x, double* on_y, double* on_z, int* err )
412 : : {
413 : :
414 : : ErrorCode rval =
415 [ - + ]: 24 : FBE_cast( instance )->getEntClosestPt( MBH_cast( entity_handle ), near_x, near_y, near_z, on_x, on_y, on_z );CHKERR( rval, "Failed to get closest point" );
416 : :
417 : 24 : RETURN( iBase_SUCCESS );
418 : : }
419 : :
420 : 0 : void FBiGeom_getArrClosestPt( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
421 : : int entity_handles_size, int storage_order, double const* near_coordinates,
422 : : int near_coordinates_size, double** on_coordinates, int* on_coordinates_allocated,
423 : : int* on_coordinates_size, int* err )
424 : : {
425 [ # # ][ # # ]: 0 : CHECK_SIZE( *on_coordinates, *on_coordinates_allocated, near_coordinates_size, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
426 : :
427 [ # # ]: 0 : for( int i = 0; i < entity_handles_size; i++ )
428 : : {
429 [ # # ]: 0 : if( storage_order == iBase_INTERLEAVED )
430 : : {
431 : 0 : FBiGeom_getEntClosestPt( instance, entity_handles[i], near_coordinates[3 * i], near_coordinates[3 * i + 1],
432 : 0 : near_coordinates[3 * i + 2], on_coordinates[3 * i], on_coordinates[3 * i + 1],
433 : 0 : on_coordinates[3 * i + 2], err );
434 : : }
435 [ # # ]: 0 : else if( storage_order == iBase_BLOCKED )
436 : : {
437 : 0 : FBiGeom_getEntClosestPt( instance, entity_handles[i], near_coordinates[i],
438 : 0 : near_coordinates[i + entity_handles_size],
439 : 0 : near_coordinates[i + 2 * entity_handles_size], on_coordinates[i],
440 : 0 : on_coordinates[i + entity_handles_size],
441 : 0 : on_coordinates[i + 2 * entity_handles_size], err );
442 : : }
443 [ # # ]: 0 : FWDERR();
444 : : }
445 : 0 : *on_coordinates_size = near_coordinates_size;
446 : :
447 : 0 : RETURN( iBase_SUCCESS );
448 : : }
449 : :
450 : 4 : void FBiGeom_getEntNrmlXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double x, double y, double z,
451 : : double* nrml_i, double* nrml_j, double* nrml_k, int* err )
452 : : {
453 : :
454 [ - + ]: 4 : ErrorCode rval = FBE_cast( instance )->getEntNrmlXYZ( MBH_cast( entity_handle ), x, y, z, nrml_i, nrml_j, nrml_k );CHKERR( rval, "Failed to get normal" );
455 : 4 : RETURN( iBase_SUCCESS );
456 : : }
457 : :
458 : 0 : void FBiGeom_getArrNrmlXYZ( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
459 : : int entity_handles_size, int storage_order, double const* coordinates, int coordinates_size,
460 : : double** normals, int* normals_allocated, int* normals_size, int* err )
461 : : {
462 : : // set up iteration according to storage order.
463 : : // allow either gentity_handles or near_coordinates to contain
464 : : // only one value, where that single value is applied for every
465 : : // entry in the other list.
466 : 0 : size_t index = 0;
467 : 0 : size_t coord_step, norm_step = 1, ent_step;
468 : : int count;
469 [ # # ]: 0 : if( 3 * entity_handles_size == coordinates_size )
470 : : {
471 : 0 : coord_step = ent_step = 1;
472 : 0 : count = entity_handles_size;
473 : : }
474 [ # # ]: 0 : else if( coordinates_size == 3 )
475 : : {
476 : 0 : coord_step = 0;
477 : 0 : ent_step = 1;
478 : 0 : count = entity_handles_size;
479 : : }
480 [ # # ]: 0 : else if( entity_handles_size == 1 )
481 : : {
482 : 0 : coord_step = 1;
483 : 0 : ent_step = 0;
484 : 0 : count = coordinates_size / 3;
485 : : }
486 : : else
487 : : {
488 : 0 : ERROR( iBase_INVALID_ENTITY_COUNT, "Mismatched array sizes" );
489 : : }
490 : :
491 : : // check or pre-allocate the coordinate arrays
492 [ # # ][ # # ]: 0 : CHECK_SIZE( *normals, *normals_allocated, 3 * count, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
493 : :
494 : : const double *coord_x, *coord_y, *coord_z;
495 : : double *norm_x, *norm_y, *norm_z;
496 [ # # ]: 0 : if( storage_order == iBase_BLOCKED )
497 : : {
498 : 0 : coord_x = coordinates;
499 : 0 : coord_y = coord_x + coordinates_size / 3;
500 : 0 : coord_z = coord_y + coordinates_size / 3;
501 : 0 : norm_x = *normals;
502 : 0 : norm_y = norm_x + count;
503 : 0 : norm_z = norm_y + count;
504 : 0 : norm_step = 1;
505 : : }
506 : : else
507 : : {
508 : 0 : storage_order = iBase_INTERLEAVED; /* set if unspecified */
509 : 0 : coord_x = coordinates;
510 : 0 : coord_y = coord_x + 1;
511 : 0 : coord_z = coord_x + 2;
512 : 0 : norm_x = *normals;
513 : 0 : norm_y = norm_x + 1;
514 : 0 : norm_z = norm_x + 2;
515 : 0 : coord_step *= 3;
516 : 0 : norm_step = 3;
517 : : }
518 : :
519 [ # # ]: 0 : for( int i = 0; i < count; ++i )
520 : : {
521 : 0 : FBiGeom_getEntNrmlXYZ( instance, entity_handles[index], *coord_x, *coord_y, *coord_z, norm_x, norm_y, norm_z,
522 : 0 : err );
523 [ # # ]: 0 : FWDERR();
524 : :
525 : 0 : index += ent_step;
526 : 0 : coord_x += coord_step;
527 : 0 : coord_y += coord_step;
528 : 0 : coord_z += coord_step;
529 : 0 : norm_x += norm_step;
530 : 0 : norm_y += norm_step;
531 : 0 : norm_z += norm_step;
532 : : }
533 : 0 : *normals_size = count;
534 : 0 : RETURN( iBase_SUCCESS );
535 : : }
536 : :
537 : 0 : void FBiGeom_getEntNrmlPlXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double x, double y, double z,
538 : : double* pt_x, double* pt_y, double* pt_z, double* nrml_i, double* nrml_j, double* nrml_k,
539 : : int* err )
540 : : {
541 : : // just do for surface and volume
542 : : int type;
543 [ # # ]: 0 : FBiGeom_getEntType( instance, entity_handle, &type, err );
544 [ # # ]: 0 : FWDERR();
545 : :
546 [ # # ][ # # ]: 0 : if( type != 2 && type != 3 )
547 [ # # ][ # # ]: 0 : { ERROR( iBase_INVALID_ENTITY_TYPE, "Entities passed into gentityNormal must be face or volume." ); }
548 : :
549 : : // do 2 searches, so it is not fast enough
550 [ # # ]: 0 : FBiGeom_getEntClosestPt( instance, entity_handle, x, y, z, pt_x, pt_y, pt_z, err );
551 : :
552 [ # # ]: 0 : FWDERR();
553 [ # # ]: 0 : FBiGeom_getEntNrmlXYZ( instance, entity_handle, *pt_x, *pt_y, *pt_z, nrml_i, nrml_j, nrml_k, err );
554 [ # # ]: 0 : FWDERR();
555 : :
556 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
557 : : }
558 : :
559 : 0 : void FBiGeom_getArrNrmlPlXYZ( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
560 : : int entity_handles_size, int storage_order, double const* near_coordinates,
561 : : int near_coordinates_size, double** on_coordinates, int* on_coordinates_allocated,
562 : : int* on_coordinates_size, double** normals, int* normals_allocated, int* normals_size,
563 : : int* err )
564 : : {
565 : : // set up iteration according to storage order.
566 : : // allow either gentity_handles or near_coordinates to contain
567 : : // only one value, where that single value is applied for every
568 : : // entry in the other list.
569 : 0 : size_t index = 0;
570 : 0 : size_t near_step, on_step = 1, ent_step;
571 : : int count;
572 [ # # ]: 0 : if( 3 * entity_handles_size == near_coordinates_size )
573 : : {
574 : 0 : near_step = ent_step = 1;
575 : 0 : count = entity_handles_size;
576 : : }
577 [ # # ]: 0 : else if( near_coordinates_size == 3 )
578 : : {
579 : 0 : near_step = 0;
580 : 0 : ent_step = 1;
581 : 0 : count = entity_handles_size;
582 : : }
583 [ # # ]: 0 : else if( entity_handles_size == 1 )
584 : : {
585 : 0 : near_step = 1;
586 : 0 : ent_step = 0;
587 : 0 : count = near_coordinates_size / 3;
588 : : }
589 : : else
590 : : {
591 : 0 : ERROR( iBase_INVALID_ENTITY_COUNT, "Mismatched array sizes" );
592 : : }
593 : :
594 : : // check or pre-allocate the coordinate arrays
595 [ # # ][ # # ]: 0 : CHECK_SIZE( *on_coordinates, *on_coordinates_allocated, 3 * count, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
596 [ # # ][ # # ]: 0 : CHECK_SIZE( *normals, *normals_allocated, 3 * count, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
597 : :
598 : : const double *near_x, *near_y, *near_z;
599 : : double *on_x, *on_y, *on_z;
600 : : double *norm_x, *norm_y, *norm_z;
601 [ # # ]: 0 : if( storage_order == iBase_BLOCKED )
602 : : {
603 : 0 : near_x = near_coordinates;
604 : 0 : near_y = near_x + near_coordinates_size / 3;
605 : 0 : near_z = near_y + near_coordinates_size / 3;
606 : 0 : on_x = *on_coordinates;
607 : 0 : on_y = on_x + count;
608 : 0 : on_z = on_y + count;
609 : 0 : norm_x = *normals;
610 : 0 : norm_y = norm_x + count;
611 : 0 : norm_z = norm_y + count;
612 : 0 : on_step = 1;
613 : : }
614 : : else
615 : : {
616 : 0 : storage_order = iBase_INTERLEAVED; /* set if unspecified */
617 : 0 : near_x = near_coordinates;
618 : 0 : near_y = near_x + 1;
619 : 0 : near_z = near_x + 2;
620 : 0 : on_x = *on_coordinates;
621 : 0 : on_y = on_x + 1;
622 : 0 : on_z = on_x + 2;
623 : 0 : norm_x = *normals;
624 : 0 : norm_y = norm_x + 1;
625 : 0 : norm_z = norm_x + 2;
626 : 0 : near_step *= 3;
627 : 0 : on_step = 3;
628 : : }
629 : :
630 [ # # ]: 0 : for( int i = 0; i < count; ++i )
631 : : {
632 : 0 : FBiGeom_getEntNrmlPlXYZ( instance, entity_handles[index], *near_x, *near_y, *near_z, on_x, on_y, on_z, norm_x,
633 : 0 : norm_y, norm_z, err );
634 [ # # ]: 0 : FWDERR();
635 : :
636 : : // entities += ent_step;
637 : 0 : index += ent_step;
638 : 0 : near_x += near_step;
639 : 0 : near_y += near_step;
640 : 0 : near_z += near_step;
641 : 0 : on_x += on_step;
642 : 0 : on_y += on_step;
643 : 0 : on_z += on_step;
644 : 0 : norm_x += on_step;
645 : 0 : norm_y += on_step;
646 : 0 : norm_z += on_step;
647 : : }
648 : 0 : *on_coordinates_size = count * 3;
649 : 0 : *normals_size = count;
650 : 0 : RETURN( iBase_SUCCESS );
651 : : }
652 : :
653 : 0 : void FBiGeom_getEntTgntXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
654 : : double*, int* err )
655 : : {
656 : 0 : RETURN( iBase_NOT_SUPPORTED );
657 : : }
658 : :
659 : 0 : void FBiGeom_getArrTgntXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
660 : : double**, int*, int*, int* err )
661 : : {
662 : 0 : RETURN( iBase_NOT_SUPPORTED );
663 : : }
664 : :
665 : 30 : void FBiGeom_getEntBoundBox( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double* min_x, double* min_y,
666 : : double* min_z, double* max_x, double* max_y, double* max_z, int* err )
667 : : {
668 : : ErrorCode rval;
669 : : int type;
670 [ + - ]: 30 : FBiGeom_getEntType( instance, entity_handle, &type, err );
671 [ - + ]: 30 : FWDERR();
672 : :
673 [ + + ]: 30 : if( type == 0 )
674 : : {
675 [ + - ]: 18 : FBiGeom_getVtxCoord( instance, entity_handle, min_x, min_y, min_z, err );
676 [ - + ]: 18 : FWDERR();
677 : 18 : max_x = min_x;
678 : 18 : max_y = min_y;
679 : 18 : max_z = min_z;
680 : : }
681 [ - + ]: 12 : else if( type == 1 )
682 : : {
683 : : // it could be relatively easy to support
684 : 0 : *err = iBase_NOT_SUPPORTED;
685 [ # # ]: 0 : FWDERR();
686 : : }
687 [ - + ][ # # ]: 12 : else if( type == 2 || type == 3 )
688 : : {
689 : :
690 : : EntityHandle root;
691 [ + - ][ + - ]: 48 : CartVect center, axis[3];
[ + + ]
692 [ + - ][ + - ]: 12 : GeomTopoTool* gtt = GETGTT( instance );
693 [ - + ][ # # ]: 12 : if( !gtt ) ERROR( iBase_FAILURE, "Can't get geom topo tool." );
[ # # ]
694 [ + - ][ - + ]: 12 : rval = gtt->get_root( MBH_cast( entity_handle ), root );CHKERR( rval, "Failed to get tree root in FBiGeom_getEntBoundBox." );
[ # # ][ # # ]
695 [ + - ][ + - ]: 12 : rval = gtt->obb_tree()->box( root, center.array(), axis[0].array(), axis[1].array(), axis[2].array() );CHKERR( rval, "Failed to get box from obb tree." );
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ # # ]
[ # # ]
696 : :
697 [ + - ][ + + ]: 48 : CartVect absv[3];
698 [ + + ]: 48 : for( int i = 0; i < 3; i++ )
699 : : {
700 [ + - ][ + - ]: 36 : absv[i] = CartVect( fabs( axis[i][0] ), fabs( axis[i][1] ), fabs( axis[i][2] ) );
[ + - ][ + - ]
701 : : }
702 [ + - ][ + - ]: 12 : CartVect min, max;
703 [ + - ][ + - ]: 12 : min = center - absv[0] - absv[1] - absv[2];
[ + - ]
704 [ + - ][ + - ]: 12 : max = center + absv[0] + absv[1] + absv[2];
[ + - ]
705 [ + - ]: 12 : *min_x = min[0];
706 [ + - ]: 12 : *min_y = min[1];
707 [ + - ]: 12 : *min_z = min[2];
708 [ + - ]: 12 : *max_x = max[0];
709 [ + - ]: 12 : *max_y = max[1];
710 [ + - ]: 12 : *max_z = max[2];
711 : : }
712 : : else
713 [ # # ][ # # ]: 0 : RETURN( iBase_INVALID_ENTITY_TYPE );
714 : :
715 [ + - ][ + - ]: 30 : RETURN( iBase_SUCCESS );
716 : : }
717 : :
718 : 0 : void FBiGeom_getArrBoundBox( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
719 : : int entity_handles_size, int storage_order, double** min_corner, int* min_corner_allocated,
720 : : int* min_corner_size, double** max_corner, int* max_corner_allocated, int* max_corner_size,
721 : : int* err )
722 : : {
723 : : // check or pre-allocate the coordinate arrays
724 [ # # ][ # # ]: 0 : CHECK_SIZE( *min_corner, *min_corner_allocated, 3 * entity_handles_size, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
725 [ # # ][ # # ]: 0 : CHECK_SIZE( *max_corner, *max_corner_allocated, 3 * entity_handles_size, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
726 : :
727 : : size_t step, init;
728 [ # # ]: 0 : if( storage_order == iBase_BLOCKED )
729 : : {
730 : 0 : step = 1;
731 : 0 : init = entity_handles_size;
732 : : }
733 : : else
734 : : {
735 : 0 : step = 3;
736 : 0 : init = 1;
737 : : }
738 : : double *min_x, *min_y, *min_z, *max_x, *max_y, *max_z;
739 : 0 : min_x = *min_corner;
740 : 0 : max_x = *max_corner;
741 : 0 : min_y = min_x + init;
742 : 0 : max_y = max_x + init;
743 : 0 : min_z = min_y + init;
744 : 0 : max_z = max_y + init;
745 : :
746 [ # # ]: 0 : for( int i = 0; i < entity_handles_size; ++i )
747 : : {
748 : 0 : FBiGeom_getEntBoundBox( instance, entity_handles[i], min_x, min_y, min_z, max_x, max_y, max_z, err );
749 [ # # ]: 0 : FWDERR();
750 : :
751 : 0 : min_x += step;
752 : 0 : max_x += step;
753 : 0 : min_y += step;
754 : 0 : max_y += step;
755 : 0 : min_z += step;
756 : 0 : max_z += step;
757 : : }
758 : 0 : *min_corner_size = 3 * entity_handles_size;
759 : 0 : *max_corner_size = 3 * entity_handles_size;
760 : 0 : RETURN( iBase_SUCCESS );
761 : : }
762 : :
763 : 18 : void FBiGeom_getVtxCoord( FBiGeom_Instance instance, iBase_EntityHandle vertex_handle, double* x, double* y, double* z,
764 : : int* err )
765 : : {
766 [ - + ]: 18 : ErrorCode rval = FBE_cast( instance )->getVtxCoord( MBH_cast( vertex_handle ), x, y, z );CHKERR( rval, "Failed to vertex position" );
767 : 18 : RETURN( iBase_SUCCESS );
768 : : }
769 : :
770 : 0 : void FBiGeom_getVtxArrCoords( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
771 : : int entity_handles_size, int storage_order, double** coordinates,
772 : : int* coordinates_allocated, int* coordinates_size, int* err )
773 : : {
774 : : // check or pre-allocate the coordinate arrays
775 [ # # ][ # # ]: 0 : CHECK_SIZE( *coordinates, *coordinates_allocated, 3 * entity_handles_size, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
776 : :
777 : : double *x, *y, *z;
778 : : size_t step;
779 [ # # ]: 0 : if( storage_order == iBase_BLOCKED )
780 : : {
781 : 0 : x = *coordinates;
782 : 0 : y = x + entity_handles_size;
783 : 0 : z = y + entity_handles_size;
784 : 0 : step = 1;
785 : : }
786 : : else
787 : : {
788 : 0 : x = *coordinates;
789 : 0 : y = x + 1;
790 : 0 : z = x + 2;
791 : 0 : step = 3;
792 : : }
793 : :
794 [ # # ]: 0 : for( int i = 0; i < entity_handles_size; i++ )
795 : : {
796 : 0 : FBiGeom_getVtxCoord( instance, entity_handles[i], x, y, z, err );
797 : 0 : x += step;
798 : 0 : y += step;
799 : 0 : z += step;
800 : : }
801 : 0 : *coordinates_size = 3 * entity_handles_size;
802 : 0 : RETURN( iBase_SUCCESS );
803 : : }
804 : :
805 : 2 : void FBiGeom_getPntRayIntsct( FBiGeom_Instance instance, double x, double y, double z, double dir_x, double dir_y,
806 : : double dir_z, iBase_EntityHandle** intersect_entity_handles,
807 : : int* intersect_entity_handles_allocated, int* intersect_entity_handles_size,
808 : : int storage_order, double** intersect_coords, int* intersect_coords_allocated,
809 : : int* intersect_coords_size, double** param_coords, int* param_coords_allocated,
810 : : int* param_coords_size, int* err )
811 : : {
812 : : // this is pretty cool
813 : : // we will return only surfaces
814 : : //
815 : : // storage order is ignored
816 [ + - ]: 2 : std::vector< EntityHandle > intersect_handles;
817 [ + - ]: 4 : std::vector< double > coords;
818 [ + - ]: 4 : std::vector< double > params;
819 : : ErrorCode rval =
820 [ + - ][ + - ]: 2 : FBE_cast( instance )->getPntRayIntsct( x, y, z, dir_x, dir_y, dir_z, intersect_handles, coords, params );CHKERR( rval, "can't get ray intersections " );
[ - + ][ # # ]
[ # # ]
821 : 2 : *intersect_entity_handles_size = (int)intersect_handles.size();
822 : :
823 [ - + ][ # # ]: 2 : CHECK_SIZE( *intersect_entity_handles, *intersect_entity_handles_allocated, *intersect_entity_handles_size,
[ # # ][ # # ]
[ # # ][ + - ]
[ - + ][ # # ]
[ - + ][ # # ]
[ # # ]
824 : : iBase_EntityHandle, NULL );
825 : 2 : *intersect_coords_size = 3 * (int)intersect_handles.size();
826 [ - + ][ # # ]: 2 : CHECK_SIZE( *intersect_coords, *intersect_coords_allocated, *intersect_coords_size, double, NULL );
[ # # ][ # # ]
[ # # ][ + - ]
[ - + ][ # # ]
[ - + ][ # # ]
[ # # ]
827 : 2 : *param_coords_size = (int)intersect_handles.size();
828 [ - + ][ # # ]: 2 : CHECK_SIZE( *param_coords, *param_coords_allocated, *param_coords_size, double, NULL );
[ # # ][ # # ]
[ # # ][ + - ]
[ - + ][ # # ]
[ - + ][ # # ]
[ # # ]
829 : :
830 [ + - ]: 2 : COPY_RANGE( intersect_handles, *intersect_entity_handles );
831 : :
832 [ + - ]: 2 : COPY_DOUBLEVEC( params, *param_coords );
833 [ - + ]: 2 : if( storage_order == iBase_BLOCKED )
834 : : {
835 : 0 : int sz = (int)intersect_handles.size();
836 [ # # ]: 0 : for( int i = 0; i < sz; i++ )
837 : : {
838 [ # # ]: 0 : *intersect_coords[i] = coords[3 * i];
839 [ # # ]: 0 : *intersect_coords[sz + i] = coords[3 * i + 1];
840 [ # # ]: 0 : *intersect_coords[2 * sz + i] = coords[3 * i + 2];
841 : : }
842 : : }
843 : : else
844 : : {
845 [ + - ]: 2 : COPY_DOUBLEVEC( coords, *intersect_coords );
846 : : }
847 : :
848 [ + - ][ + - ]: 4 : RETURN( iBase_SUCCESS );
849 : : }
850 : :
851 : 0 : void FBiGeom_getPntArrRayIntsct( FBiGeom_Instance instance, int, const double*, int, const double*, int,
852 : : iBase_EntityHandle**, int*, int*, int**, int*, int*, double**, int*, int*, double**,
853 : : int*, int*, int* err )
854 : : {
855 : : // not implemented
856 : 0 : RETURN( iBase_NOT_SUPPORTED );
857 : : }
858 : :
859 : 0 : void FBiGeom_getEntNrmlSense( FBiGeom_Instance instance, iBase_EntityHandle face, iBase_EntityHandle region,
860 : : int* sense_out, int* err )
861 : : {
862 : 0 : moab::EntityHandle mbregion = (moab::EntityHandle)region;
863 : 0 : moab::EntityHandle mbface = (moab::EntityHandle)face;
864 [ # # ]: 0 : moab::ErrorCode rval = FBE_cast( instance )->getEgFcSense( mbface, mbregion, *sense_out );CHKERR( rval, "can't get normal sense " );
865 : 0 : RETURN( iBase_SUCCESS );
866 : : }
867 : 0 : void FBiGeom_getArrNrmlSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
868 : : int**, int*, int*, int* err )
869 : : {
870 : : // not implemented
871 : 0 : RETURN( iBase_NOT_SUPPORTED );
872 : : }
873 : :
874 : : /**\brief Get the sense of an edge with respect to a face
875 : : * Get the sense of an edge with respect to a face. Sense returned is -1, 0, or 1,
876 : : * representing "reversed", "both", or "forward". "both" sense indicates that edge bounds
877 : : * the face once with each sense.
878 : : * \param edge Edge being queried
879 : : * \param face Face being queried
880 : : * \param sense_out Sense of edge with respect to face
881 : : */
882 : :
883 : 0 : void FBiGeom_getEgFcSense( FBiGeom_Instance instance, iBase_EntityHandle edge, iBase_EntityHandle face, int* sense_out,
884 : : int* err )
885 : : {
886 : : // this one is important, for establishing the orientation of the edges in faces
887 : : // bummer, I "thought" it is already implemented
888 : : // use senses
889 : 0 : ErrorCode rval = FBE_cast( instance )->getEgFcSense( MBH_cast( edge ), MBH_cast( face ), *sense_out );
890 : :
891 [ # # ]: 0 : CHKERR( rval, "Failed to get edge senses in FBiGeom_getEgFcSense." );
892 : 0 : RETURN( iBase_SUCCESS );
893 : : }
894 : 0 : void FBiGeom_getEgFcArrSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
895 : : int**, int*, int*, int* err )
896 : : {
897 : 0 : RETURN( iBase_NOT_SUPPORTED );
898 : : }
899 : :
900 : 0 : void FBiGeom_getEgVtxSense( FBiGeom_Instance instance, iBase_EntityHandle edge, iBase_EntityHandle vertex1,
901 : : iBase_EntityHandle vertex2, int* sense_out, int* err )
902 : : {
903 : :
904 : : ErrorCode rval =
905 [ # # ]: 0 : FBE_cast( instance )->getEgVtxSense( MBH_cast( edge ), MBH_cast( vertex1 ), MBH_cast( vertex2 ), *sense_out );CHKERR( rval, "Failed to get vertex sense wrt edge in FBiGeom_getEgVtxSense" );
906 : 0 : RETURN( iBase_SUCCESS );
907 : : }
908 : 0 : void FBiGeom_getEgVtxArrSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*,
909 : : int, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
910 : : {
911 : 0 : RETURN( iBase_NOT_SUPPORTED );
912 : : }
913 : :
914 : 0 : void FBiGeom_measure( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
915 : : double** measures, int* measures_allocated, int* measures_size, int* err )
916 : : {
917 : :
918 [ # # ][ # # ]: 0 : CHECK_SIZE( *measures, *measures_allocated, entity_handles_size, double, NULL );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
919 [ # # ]: 0 : ErrorCode rval = FBE_cast( instance )->measure( (EntityHandle*)( entity_handles ), entity_handles_size, *measures );CHKERR( rval, "Failed to get measures" );
920 : 0 : *measures_size = entity_handles_size;
921 : 0 : RETURN( iBase_SUCCESS );
922 : : }
923 : :
924 : 0 : void FBiGeom_getFaceType( FBiGeom_Instance instance, iBase_EntityHandle, char* face_type, int* err,
925 : : int* face_type_length )
926 : : {
927 [ # # ]: 0 : std::string type = "nonplanar"; // for swept faces created with rays between surfaces,
928 : : // we could actually create planar surfaces; maybe we should
929 : : // recognize them as such
930 [ # # ]: 0 : face_type = new char[type.length() + 1];
931 : 0 : strcpy( face_type, type.c_str() );
932 : 0 : *face_type_length = type.length() + 1;
933 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
934 : : }
935 : 0 : void FBiGeom_getParametric( FBiGeom_Instance instance, int* is_parametric, int* err )
936 : : {
937 : 0 : *is_parametric = 0; //(false)
938 : 0 : RETURN( iBase_SUCCESS );
939 : : }
940 : 0 : void FBiGeom_isEntParametric( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* parametric, int* err )
941 : : {
942 : 0 : int type = -1;
943 [ # # ]: 0 : FBiGeom_getEntType( instance, entity_handle, &type, err );
944 [ # # ]: 0 : if( type == 1 )
945 : 0 : *parametric = 1; // true
946 : : else
947 : 0 : *parametric = 0; // false
948 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
949 : : }
950 : 0 : void FBiGeom_isArrParametric( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
951 : : {
952 : : // not implemented
953 : 0 : RETURN( iBase_NOT_SUPPORTED );
954 : : }
955 : 0 : void FBiGeom_getEntUVtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
956 : : int* err )
957 : : {
958 : 0 : RETURN( iBase_NOT_SUPPORTED );
959 : : }
960 : 0 : void FBiGeom_getArrUVtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
961 : : double**, int*, int*, int* err )
962 : : {
963 : 0 : RETURN( iBase_NOT_SUPPORTED );
964 : : }
965 : :
966 : 0 : void FBiGeom_getEntUtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double u, double* x, double* y,
967 : : double* z, int* err )
968 : : {
969 : : int type;
970 [ # # ]: 0 : FBiGeom_getEntType( instance, entity_handle, &type, err );
971 [ # # ]: 0 : FWDERR();
972 : :
973 [ # # ]: 0 : if( type != 1 ) // not edge
974 [ # # ][ # # ]: 0 : RETURN( iBase_NOT_SUPPORTED );
975 : :
976 [ # # ][ # # ]: 0 : ErrorCode rval = FBE_cast( instance )->getEntUtoXYZ( (EntityHandle)entity_handle, u, *x, *y, *z );CHKERR( rval, "Failed to get position from parameter" );
[ # # ][ # # ]
[ # # ]
977 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
978 : : }
979 : :
980 : 0 : void FBiGeom_getArrUtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double const*, int, int, double**,
981 : : int*, int*, int* err )
982 : : {
983 : : // not implemented
984 : 0 : RETURN( iBase_NOT_SUPPORTED );
985 : : }
986 : 0 : void FBiGeom_getEntXYZtoUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
987 : : int* err )
988 : : {
989 : 0 : RETURN( iBase_NOT_SUPPORTED );
990 : : }
991 : 0 : void FBiGeom_getEntXYZtoU( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, int* err )
992 : : {
993 : 0 : RETURN( iBase_NOT_SUPPORTED );
994 : : }
995 : 0 : void FBiGeom_getArrXYZtoUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
996 : : double**, int*, int*, int* err )
997 : : {
998 : 0 : RETURN( iBase_NOT_SUPPORTED );
999 : : }
1000 : 0 : void FBiGeom_getArrXYZtoU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
1001 : : int*, int*, int* err )
1002 : : {
1003 : 0 : RETURN( iBase_NOT_SUPPORTED );
1004 : : }
1005 : 0 : void FBiGeom_getEntXYZtoUVHint( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
1006 : : int* err )
1007 : : {
1008 : 0 : RETURN( iBase_NOT_SUPPORTED );
1009 : : }
1010 : 0 : void FBiGeom_getArrXYZtoUVHint( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1011 : : double**, int*, int*, int* err )
1012 : : {
1013 : 0 : RETURN( iBase_NOT_SUPPORTED );
1014 : : }
1015 : 0 : void FBiGeom_getEntUVRange( FBiGeom_Instance instance, iBase_EntityHandle, double*, double*, double*, double*,
1016 : : int* err )
1017 : : {
1018 : 0 : RETURN( iBase_NOT_SUPPORTED );
1019 : : }
1020 : :
1021 : 0 : void FBiGeom_getEntURange( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double* u_min, double* u_max,
1022 : : int* err )
1023 : : {
1024 [ # # ]: 0 : ErrorCode rval = FBE_cast( instance )->getEntURange( (EntityHandle)entity_handle, *u_min, *u_max );CHKERR( rval, "Failed to get range" );
1025 : 0 : RETURN( iBase_SUCCESS );
1026 : : }
1027 : 0 : void FBiGeom_getArrUVRange( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double**, int*, int*,
1028 : : double**, int*, int*, int* err )
1029 : : {
1030 : 0 : RETURN( iBase_NOT_SUPPORTED );
1031 : : }
1032 : 0 : void FBiGeom_getArrURange( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double**, int*, int*, double**,
1033 : : int*, int*, int* err )
1034 : : {
1035 : 0 : RETURN( iBase_NOT_SUPPORTED );
1036 : : }
1037 : 0 : void FBiGeom_getEntUtoUV( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double, double*, double*,
1038 : : int* err )
1039 : : {
1040 : 0 : RETURN( iBase_NOT_SUPPORTED );
1041 : : }
1042 : 0 : void FBiGeom_getVtxToUV( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double*, double*, int* err )
1043 : : {
1044 : 0 : RETURN( iBase_NOT_SUPPORTED );
1045 : : }
1046 : 0 : void FBiGeom_getVtxToU( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double*, int* err )
1047 : : {
1048 : 0 : RETURN( iBase_NOT_SUPPORTED );
1049 : : }
1050 : 0 : void FBiGeom_getArrUtoUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
1051 : : double const*, int, int, double**, int*, int*, int* err )
1052 : : {
1053 : 0 : RETURN( iBase_NOT_SUPPORTED );
1054 : : }
1055 : 0 : void FBiGeom_getVtxArrToUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
1056 : : int, double**, int*, int*, int* err )
1057 : : {
1058 : 0 : RETURN( iBase_NOT_SUPPORTED );
1059 : : }
1060 : 0 : void FBiGeom_getVtxArrToU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
1061 : : double**, int*, int*, int* err )
1062 : : {
1063 : 0 : RETURN( iBase_NOT_SUPPORTED );
1064 : : }
1065 : 0 : void FBiGeom_getEntNrmlUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
1066 : : int* err )
1067 : : {
1068 : 0 : RETURN( iBase_NOT_SUPPORTED );
1069 : : }
1070 : 0 : void FBiGeom_getArrNrmlUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
1071 : : int*, int*, int* err )
1072 : : {
1073 : 0 : RETURN( iBase_NOT_SUPPORTED );
1074 : : }
1075 : 0 : void FBiGeom_getEntTgntU( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double u, double* tgnt_i,
1076 : : double* tgnt_j, double* tgnt_k, int* err )
1077 : : {
1078 : : ErrorCode rval =
1079 [ # # ]: 0 : FBE_cast( instance )->getEntTgntU( (moab::EntityHandle)entity_handle, u, *tgnt_i, *tgnt_j, *tgnt_k );CHKERR( rval, "Failed to get tangent from u" );
1080 : 0 : RETURN( iBase_SUCCESS );
1081 : : }
1082 : 0 : void FBiGeom_getArrTgntU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
1083 : : int*, int*, int* err )
1084 : : {
1085 : 0 : RETURN( iBase_NOT_SUPPORTED );
1086 : : }
1087 : 0 : void FBiGeom_getEnt1stDrvt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double**, int*, int*,
1088 : : double**, int*, int*, int* err )
1089 : : {
1090 : 0 : RETURN( iBase_NOT_SUPPORTED );
1091 : : }
1092 : 0 : void FBiGeom_getArr1stDrvt( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1093 : : double**, int*, int*, int**, int*, int*, double**, int*, int*, int**, int*, int*, int* err )
1094 : : {
1095 : 0 : RETURN( iBase_NOT_SUPPORTED );
1096 : : }
1097 : 0 : void FBiGeom_getEnt2ndDrvt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double**, int*, int*,
1098 : : double**, int*, int*, double**, int*, int*, int* err )
1099 : : {
1100 : 0 : RETURN( iBase_NOT_SUPPORTED );
1101 : : }
1102 : 0 : void FBiGeom_getArr2ndDrvt( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1103 : : double**, int*, int*, int**, int*, int*, double**, int*, int*, int**, int*, int*, double**,
1104 : : int*, int*, int**, int*, int*, int* err )
1105 : : {
1106 : 0 : RETURN( iBase_NOT_SUPPORTED );
1107 : : }
1108 : 0 : void FBiGeom_getFcCvtrUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
1109 : : double*, double*, double*, int* err )
1110 : : {
1111 : 0 : RETURN( iBase_NOT_SUPPORTED );
1112 : : }
1113 : 0 : void FBiGeom_getFcArrCvtrUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1114 : : double**, int*, int*, double**, int*, int*, int* err )
1115 : : {
1116 : 0 : RETURN( iBase_NOT_SUPPORTED );
1117 : : }
1118 : 0 : void FBiGeom_isEntPeriodic( FBiGeom_Instance /*instance*/, iBase_EntityHandle /*entity_handle*/, int* in_u, int* in_v,
1119 : : int* err )
1120 : : {
1121 : 0 : *in_u = 0;
1122 : 0 : *in_v = 0;
1123 : 0 : *err = 0;
1124 : 0 : return;
1125 : : }
1126 : 0 : void FBiGeom_isArrPeriodic( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
1127 : : {
1128 : 0 : RETURN( iBase_NOT_SUPPORTED );
1129 : : }
1130 : 0 : void FBiGeom_isFcDegenerate( FBiGeom_Instance instance, iBase_EntityHandle, int*, int* err )
1131 : : {
1132 : 0 : RETURN( iBase_NOT_SUPPORTED );
1133 : : }
1134 : 0 : void FBiGeom_isFcArrDegenerate( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
1135 : : {
1136 : 0 : RETURN( iBase_NOT_SUPPORTED );
1137 : : }
1138 : :
1139 : 0 : void FBiGeom_initEntIter( FBiGeom_Instance instance, iBase_EntitySetHandle, int, iBase_EntityIterator*, int* err )
1140 : : {
1141 : 0 : RETURN( iBase_NOT_SUPPORTED );
1142 : : }
1143 : :
1144 : 0 : void FBiGeom_initEntArrIter( FBiGeom_Instance instance, iBase_EntitySetHandle, int, int, iBase_EntityArrIterator*,
1145 : : int* err )
1146 : : {
1147 : 0 : RETURN( iBase_NOT_SUPPORTED );
1148 : : }
1149 : :
1150 : 0 : void FBiGeom_getNextEntIter( FBiGeom_Instance instance, iBase_EntityIterator, iBase_EntityHandle*, int*, int* err )
1151 : : {
1152 : 0 : RETURN( iBase_NOT_SUPPORTED );
1153 : : }
1154 : :
1155 : 0 : void FBiGeom_getNextEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, iBase_EntityHandle**, int*, int*,
1156 : : int*, int* err )
1157 : : {
1158 : 0 : RETURN( iBase_NOT_SUPPORTED );
1159 : : }
1160 : :
1161 : 0 : void FBiGeom_resetEntIter( FBiGeom_Instance instance, iBase_EntityIterator, int* err )
1162 : : {
1163 : 0 : RETURN( iBase_NOT_SUPPORTED );
1164 : : }
1165 : :
1166 : 0 : void FBiGeom_resetEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, int* err )
1167 : : {
1168 : 0 : RETURN( iBase_NOT_SUPPORTED );
1169 : : }
1170 : :
1171 : 0 : void FBiGeom_endEntIter( FBiGeom_Instance instance, iBase_EntityIterator, int* err )
1172 : : {
1173 : 0 : RETURN( iBase_NOT_SUPPORTED );
1174 : : }
1175 : :
1176 : 0 : void FBiGeom_endEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, int* err )
1177 : : {
1178 : 0 : RETURN( iBase_NOT_SUPPORTED );
1179 : : }
1180 : :
1181 : 0 : void FBiGeom_copyEnt( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle*, int* err )
1182 : : {
1183 : 0 : RETURN( iBase_NOT_SUPPORTED );
1184 : : }
1185 : :
1186 : 0 : void FBiGeom_sweepEntAboutAxis( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double,
1187 : : iBase_EntityHandle*, int* err )
1188 : : {
1189 : 0 : RETURN( iBase_NOT_SUPPORTED );
1190 : : }
1191 : :
1192 : 0 : void FBiGeom_deleteAll( FBiGeom_Instance instance, int* err )
1193 : : {
1194 : : // it means deleting some sets from moab db ; is this what we want?
1195 : 0 : RETURN( iBase_NOT_SUPPORTED );
1196 : : }
1197 : :
1198 : 0 : void FBiGeom_deleteEnt( FBiGeom_Instance instance, iBase_EntityHandle /*entity_handle*/, int* err )
1199 : : {
1200 : 0 : RETURN( iBase_NOT_SUPPORTED );
1201 : : }
1202 : :
1203 : 0 : void FBiGeom_createSphere( FBiGeom_Instance instance, double, iBase_EntityHandle*, int* err )
1204 : : {
1205 : 0 : RETURN( iBase_NOT_SUPPORTED );
1206 : : }
1207 : :
1208 : 0 : void FBiGeom_createPrism( FBiGeom_Instance instance, double, int, double, double, iBase_EntityHandle*, int* err )
1209 : : {
1210 : 0 : RETURN( iBase_NOT_SUPPORTED );
1211 : : }
1212 : :
1213 : 0 : void FBiGeom_createBrick( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
1214 : : {
1215 : 0 : RETURN( iBase_NOT_SUPPORTED );
1216 : : }
1217 : :
1218 : 0 : void FBiGeom_createCylinder( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
1219 : : {
1220 : 0 : RETURN( iBase_NOT_SUPPORTED );
1221 : : }
1222 : :
1223 : 0 : void FBiGeom_createCone( FBiGeom_Instance instance, double, double, double, double, iBase_EntityHandle*, int* err )
1224 : : {
1225 : 0 : RETURN( iBase_NOT_SUPPORTED );
1226 : : }
1227 : :
1228 : 0 : void FBiGeom_createTorus( FBiGeom_Instance instance, double, double, iBase_EntityHandle*, int* err )
1229 : : {
1230 : 0 : RETURN( iBase_NOT_SUPPORTED );
1231 : : }
1232 : :
1233 : 0 : void FBiGeom_moveEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, int* err )
1234 : : {
1235 : 0 : RETURN( iBase_NOT_SUPPORTED );
1236 : : }
1237 : :
1238 : 0 : void FBiGeom_rotateEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, int* err )
1239 : : {
1240 : 0 : RETURN( iBase_NOT_SUPPORTED );
1241 : : }
1242 : :
1243 : 0 : void FBiGeom_reflectEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, double, double,
1244 : : int* err )
1245 : : {
1246 : 0 : RETURN( iBase_NOT_SUPPORTED );
1247 : : }
1248 : :
1249 : 0 : void FBiGeom_scaleEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, double, double,
1250 : : int* err )
1251 : : {
1252 : 0 : RETURN( iBase_NOT_SUPPORTED );
1253 : : }
1254 : :
1255 : 0 : void FBiGeom_uniteEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle*, int* err )
1256 : : {
1257 : 0 : RETURN( iBase_NOT_SUPPORTED );
1258 : : }
1259 : :
1260 : 0 : void FBiGeom_subtractEnts( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, iBase_EntityHandle*,
1261 : : int* err )
1262 : : {
1263 : 0 : RETURN( iBase_NOT_SUPPORTED );
1264 : : }
1265 : :
1266 : 0 : void FBiGeom_intersectEnts( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, iBase_EntityHandle*,
1267 : : int* err )
1268 : : {
1269 : 0 : RETURN( iBase_NOT_SUPPORTED );
1270 : : }
1271 : :
1272 : 0 : void FBiGeom_sectionEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, int,
1273 : : iBase_EntityHandle*, int* err )
1274 : : {
1275 : 0 : RETURN( iBase_NOT_SUPPORTED );
1276 : : }
1277 : :
1278 : 0 : void FBiGeom_imprintEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int* err )
1279 : : {
1280 : 0 : RETURN( iBase_NOT_SUPPORTED );
1281 : : }
1282 : :
1283 : 0 : void FBiGeom_mergeEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double, int* err )
1284 : : {
1285 : 0 : RETURN( iBase_NOT_SUPPORTED );
1286 : : }
1287 : : // start copy old
1288 : :
1289 : 0 : void FBiGeom_createEntSet( FBiGeom_Instance instance, int isList, iBase_EntitySetHandle* entity_set_created, int* err )
1290 : : {
1291 : 0 : iMesh_createEntSet( IMESH_INSTANCE( instance ), isList, entity_set_created, err );
1292 [ # # ]: 0 : FWDERR();
1293 : : }
1294 : :
1295 : 0 : void FBiGeom_destroyEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle, int* err )
1296 : : {
1297 : 0 : RETURN( iBase_NOT_SUPPORTED );
1298 : : }
1299 : :
1300 : 0 : void FBiGeom_isList( FBiGeom_Instance instance, iBase_EntitySetHandle, int*, int* err )
1301 : : {
1302 : 0 : RETURN( iBase_NOT_SUPPORTED );
1303 : : }
1304 : :
1305 : 0 : void FBiGeom_getNumEntSets( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle, int /*num_hops*/,
1306 : : int* num_sets, int* err )
1307 : : {
1308 : : // here, we get only the entity sets that have gents as members
1309 : : // we have the convention that entity sets of geom dimension 4 are
1310 : : // sets of geo entities; they should contain only gentities as elements (or other sets of gents)
1311 : : // we should also consider the number of hops
1312 : : // first, get all sets of geo dim 4 from the entity_set_handle; then intersect with
1313 : : // the range from geom topo tool
1314 : : Tag geomTag;
1315 [ # # ][ # # ]: 0 : ErrorCode rval = MBI->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geomTag );
1316 [ # # ][ # # ]: 0 : if( MB_SUCCESS != rval ) RETURN( iBase_FAILURE );
[ # # ]
1317 [ # # ][ # # ]: 0 : GeomTopoTool* gtt = GETGTT( instance );
1318 [ # # ]: 0 : const Range* gRange = gtt->geoRanges();
1319 : : // get all sets of geom dimension 4 from the entity set
1320 : 0 : EntityHandle moabSet = (EntityHandle)entity_set_handle;
1321 : 0 : const int four = 4;
1322 : 0 : const void* const four_val[] = { &four };
1323 [ # # ]: 0 : Range tmp;
1324 [ # # ][ # # ]: 0 : rval = MBI->get_entities_by_type_and_tag( moabSet, MBENTITYSET, &geomTag, four_val, 1, tmp );CHKERR( rval, "can't get sets of geo dim 4 " );
[ # # ][ # # ]
[ # # ]
1325 [ # # ][ # # ]: 0 : tmp = intersect( tmp, gRange[4] );
1326 [ # # ]: 0 : *num_sets = tmp.size(); // ignore, for the time being, number of hops
1327 : :
1328 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
1329 : : }
1330 : :
1331 : 0 : void FBiGeom_getEntSets( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle, int,
1332 : : iBase_EntitySetHandle** contained_set_handles, int* contained_set_handles_allocated,
1333 : : int* contained_set_handles_size, int* err )
1334 : : {
1335 : : // we get only the entity sets that have gents as members
1336 : : // we keep the convention that entity sets of geom dimension 4 are
1337 : : // sets of geo entities; they should contain only gentities as elements (or other sets of gents)
1338 : : Tag geomTag;
1339 [ # # ][ # # ]: 0 : ErrorCode rval = MBI->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geomTag );
1340 [ # # ][ # # ]: 0 : if( MB_SUCCESS != rval ) RETURN( iBase_FAILURE );
[ # # ]
1341 [ # # ][ # # ]: 0 : GeomTopoTool* gtt = GETGTT( instance );
1342 [ # # ]: 0 : const Range* gRange = gtt->geoRanges();
1343 : : // get all sets of geom dimension 4 from the entity set
1344 : 0 : EntityHandle moabSet = (EntityHandle)entity_set_handle;
1345 : 0 : const int four = 4;
1346 : 0 : const void* const four_val[] = { &four };
1347 [ # # ]: 0 : Range tmp;
1348 [ # # ][ # # ]: 0 : rval = MBI->get_entities_by_type_and_tag( moabSet, MBENTITYSET, &geomTag, four_val, 1, tmp );CHKERR( rval, "can't get sets of geo dim 4 " );
[ # # ][ # # ]
[ # # ]
1349 [ # # ][ # # ]: 0 : tmp = intersect( tmp, gRange[4] );
1350 [ # # ]: 0 : *contained_set_handles_size = tmp.size();
1351 [ # # ][ # # ]: 0 : CHECK_SIZE( *contained_set_handles, *contained_set_handles_allocated, *contained_set_handles_size,
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
1352 : : iBase_EntitySetHandle, NULL );
1353 [ # # ][ # # ]: 0 : COPY_RANGE( tmp, *contained_set_handles );
[ # # ]
1354 : :
1355 [ # # ][ # # ]: 0 : RETURN( iBase_SUCCESS );
1356 : : }
1357 : :
1358 : 0 : void FBiGeom_addEntToSet( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_EntitySetHandle entity_set,
1359 : : int* err )
1360 : : {
1361 : 0 : iMesh_addEntToSet( IMESH_INSTANCE( instance ), entity_handle, entity_set, err );
1362 : 0 : }
1363 : :
1364 : 0 : void FBiGeom_rmvEntFromSet( FBiGeom_Instance instance, iBase_EntityHandle entity_handle,
1365 : : iBase_EntitySetHandle entity_set, int* err )
1366 : : {
1367 : 0 : iMesh_rmvEntFromSet( IMESH_INSTANCE( instance ), entity_handle, entity_set, err );
1368 : 0 : }
1369 : :
1370 : 0 : void FBiGeom_addEntArrToSet( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1371 : : int entity_handles_size, iBase_EntitySetHandle entity_set, int* err )
1372 : : {
1373 : 0 : iMesh_addEntArrToSet( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, entity_set, err );
1374 : 0 : }
1375 : :
1376 : 0 : void FBiGeom_rmvEntArrFromSet( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1377 : : int entity_handles_size, iBase_EntitySetHandle entity_set, int* err )
1378 : : {
1379 : 0 : iMesh_rmvEntArrFromSet( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, entity_set, err );
1380 : 0 : }
1381 : :
1382 : 0 : void FBiGeom_addEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_to_add,
1383 : : iBase_EntitySetHandle entity_set_handle, int* err )
1384 : : {
1385 : 0 : iMesh_addEntSet( IMESH_INSTANCE( instance ), entity_set_to_add, entity_set_handle, err );
1386 : 0 : }
1387 : :
1388 : 0 : void FBiGeom_rmvEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_to_remove,
1389 : : iBase_EntitySetHandle entity_set_handle, int* err )
1390 : : {
1391 : 0 : iMesh_rmvEntSet( IMESH_INSTANCE( instance ), entity_set_to_remove, entity_set_handle, err );
1392 : 0 : }
1393 : :
1394 : 0 : void FBiGeom_isEntContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_entity_set,
1395 : : iBase_EntityHandle contained_entity, int* is_contained, int* err )
1396 : : {
1397 : 0 : iMesh_isEntContained( IMESH_INSTANCE( instance ), containing_entity_set, contained_entity, is_contained, err );
1398 : 0 : }
1399 : :
1400 : 0 : void FBiGeom_isEntArrContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_set,
1401 : : const iBase_EntityHandle* entity_handles, int num_entity_handles, int** is_contained,
1402 : : int* is_contained_allocated, int* is_contained_size, int* err )
1403 : : {
1404 : 0 : iMesh_isEntArrContained( IMESH_INSTANCE( instance ), containing_set, entity_handles, num_entity_handles,
1405 : 0 : is_contained, is_contained_allocated, is_contained_size, err );
1406 : 0 : }
1407 : :
1408 : 0 : void FBiGeom_isEntSetContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_entity_set,
1409 : : iBase_EntitySetHandle contained_entity_set, int* is_contained, int* err )
1410 : : {
1411 : 0 : iMesh_isEntSetContained( IMESH_INSTANCE( instance ), containing_entity_set, contained_entity_set, is_contained,
1412 : 0 : err );
1413 : 0 : }
1414 : :
1415 : 0 : void FBiGeom_addPrntChld( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
1416 : : iBase_EntitySetHandle child_entity_set, int* err )
1417 : : {
1418 : 0 : iMesh_addPrntChld( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, err );
1419 : 0 : }
1420 : :
1421 : 0 : void FBiGeom_rmvPrntChld( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
1422 : : iBase_EntitySetHandle child_entity_set, int* err )
1423 : : {
1424 : 0 : iMesh_rmvPrntChld( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, err );
1425 : 0 : }
1426 : :
1427 : 0 : void FBiGeom_isChildOf( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
1428 : : iBase_EntitySetHandle child_entity_set, int* is_child, int* err )
1429 : : {
1430 : 0 : iMesh_isChildOf( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, is_child, err );
1431 : 0 : }
1432 : :
1433 : 0 : void FBiGeom_getNumChld( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int num_hops, int* num_child,
1434 : : int* err )
1435 : : {
1436 : 0 : iMesh_getNumChld( IMESH_INSTANCE( instance ), entity_set, num_hops, num_child, err );
1437 : 0 : }
1438 : :
1439 : 0 : void FBiGeom_getNumPrnt( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int num_hops, int* num_parent,
1440 : : int* err )
1441 : : {
1442 : 0 : iMesh_getNumPrnt( IMESH_INSTANCE( instance ), entity_set, num_hops, num_parent, err );
1443 : 0 : }
1444 : :
1445 : 0 : void FBiGeom_getChldn( FBiGeom_Instance instance, iBase_EntitySetHandle from_entity_set, int num_hops,
1446 : : iBase_EntitySetHandle** entity_set_handles, int* entity_set_handles_allocated,
1447 : : int* entity_set_handles_size, int* err )
1448 : : {
1449 : 0 : iMesh_getChldn( IMESH_INSTANCE( instance ), from_entity_set, num_hops, entity_set_handles,
1450 : 0 : entity_set_handles_allocated, entity_set_handles_size, err );
1451 : 0 : }
1452 : :
1453 : 0 : void FBiGeom_getPrnts( FBiGeom_Instance instance, iBase_EntitySetHandle from_entity_set, int num_hops,
1454 : : iBase_EntitySetHandle** entity_set_handles, int* entity_set_handles_allocated,
1455 : : int* entity_set_handles_size, int* err )
1456 : : {
1457 : 0 : iMesh_getPrnts( IMESH_INSTANCE( instance ), from_entity_set, num_hops, entity_set_handles,
1458 : 0 : entity_set_handles_allocated, entity_set_handles_size, err );
1459 : 0 : }
1460 : :
1461 : 7 : void FBiGeom_createTag( FBiGeom_Instance instance, const char* tag_name, int tag_size, int tag_type,
1462 : : iBase_TagHandle* tag_handle, int* err, int tag_name_len )
1463 : : {
1464 : :
1465 : 7 : iMesh_createTag( IMESH_INSTANCE( instance ), tag_name, tag_size, tag_type, tag_handle, err, tag_name_len );
1466 : 7 : }
1467 : :
1468 : 7 : void FBiGeom_destroyTag( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int, int* err )
1469 : : {
1470 [ - + ]: 7 : ErrorCode rval = MBI->tag_delete( TAG_HANDLE( tag_handle ) );CHKERR( rval, "Failed to delete tag" );
1471 : 7 : RETURN( iBase_SUCCESS );
1472 : : }
1473 : :
1474 : 13 : void FBiGeom_getTagName( FBiGeom_Instance instance, iBase_TagHandle tag_handle, char* name, int* err, int name_len )
1475 : : {
1476 : 13 : iMesh_getTagName( IMESH_INSTANCE( instance ), tag_handle, name, err, name_len );
1477 : 13 : }
1478 : :
1479 : 3 : void FBiGeom_getTagSizeValues( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err )
1480 : : {
1481 : 3 : iMesh_getTagSizeValues( IMESH_INSTANCE( instance ), tag_handle, tag_size, err );
1482 : 3 : }
1483 : :
1484 : 3 : void FBiGeom_getTagSizeBytes( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err )
1485 : : {
1486 : 3 : iMesh_getTagSizeBytes( IMESH_INSTANCE( instance ), tag_handle, tag_size, err );
1487 : 3 : }
1488 : :
1489 : 5 : void FBiGeom_getTagHandle( FBiGeom_Instance instance, const char* tag_name, iBase_TagHandle* tag_handle, int* err,
1490 : : int tag_name_len )
1491 : : {
1492 : 5 : iMesh_getTagHandle( IMESH_INSTANCE( instance ), tag_name, tag_handle, err, tag_name_len );
1493 : 5 : }
1494 : :
1495 : 3 : void FBiGeom_getTagType( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_type, int* err )
1496 : : {
1497 : 3 : iMesh_getTagType( IMESH_INSTANCE( instance ), tag_handle, tag_type, err );
1498 : 3 : }
1499 : :
1500 : 0 : void FBiGeom_setEntSetData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
1501 : : iBase_TagHandle tag_handle, const void* tag_value, int tag_value_size, int* err )
1502 : : {
1503 : 0 : iMesh_setEntSetData( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, tag_value, tag_value_size, err );
1504 : 0 : }
1505 : :
1506 : 0 : void FBiGeom_setEntSetIntData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1507 : : int tag_value, int* err )
1508 : : {
1509 : 0 : iMesh_setEntSetIntData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
1510 : 0 : }
1511 : :
1512 : 0 : void FBiGeom_setEntSetDblData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1513 : : double tag_value, int* err )
1514 : : {
1515 : 0 : iMesh_setEntSetDblData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
1516 : 0 : }
1517 : :
1518 : 0 : void FBiGeom_setEntSetEHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1519 : : iBase_EntityHandle tag_value, int* err )
1520 : : {
1521 : 0 : iMesh_setEntSetEHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
1522 : 0 : }
1523 : :
1524 : 0 : void FBiGeom_setEntSetESHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1525 : : iBase_EntitySetHandle tag_value, int* err )
1526 : : {
1527 : 0 : iMesh_setEntSetESHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
1528 : 0 : }
1529 : :
1530 : 0 : void FBiGeom_getEntSetData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
1531 : : iBase_TagHandle tag_handle, void** tag_value, int* tag_value_allocated, int* tag_value_size,
1532 : : int* err )
1533 : : {
1534 : 0 : iMesh_getEntSetData( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, tag_value, tag_value_allocated,
1535 : 0 : tag_value_size, err );
1536 : 0 : }
1537 : :
1538 : 0 : void FBiGeom_getEntSetIntData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1539 : : int* out_data, int* err )
1540 : : {
1541 : 0 : iMesh_getEntSetIntData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
1542 : 0 : }
1543 : :
1544 : 0 : void FBiGeom_getEntSetDblData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1545 : : double* out_data, int* err )
1546 : : {
1547 : 0 : iMesh_getEntSetDblData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
1548 : 0 : }
1549 : :
1550 : 0 : void FBiGeom_getEntSetEHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1551 : : iBase_EntityHandle* out_data, int* err )
1552 : : {
1553 : 0 : iMesh_getEntSetEHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
1554 : 0 : }
1555 : :
1556 : 0 : void FBiGeom_getEntSetESHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
1557 : : iBase_EntitySetHandle* out_data, int* err )
1558 : : {
1559 : 0 : iMesh_getEntSetESHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
1560 : 0 : }
1561 : :
1562 : 0 : void FBiGeom_getAllEntSetTags( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
1563 : : iBase_TagHandle** tag_handles, int* tag_handles_allocated, int* tag_handles_size,
1564 : : int* err )
1565 : : {
1566 : 0 : iMesh_getAllEntSetTags( IMESH_INSTANCE( instance ), entity_set_handle, tag_handles, tag_handles_allocated,
1567 : 0 : tag_handles_size, err );
1568 : 0 : }
1569 : :
1570 : 0 : void FBiGeom_rmvEntSetTag( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
1571 : : iBase_TagHandle tag_handle, int* err )
1572 : : {
1573 : 0 : iMesh_rmvEntSetTag( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, err );
1574 : 0 : }
1575 : :
1576 : 19 : void FBiGeom_getArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
1577 : : iBase_TagHandle tag_handle, void** tag_values, int* tag_values_allocated, int* tag_values_size,
1578 : : int* err )
1579 : : {
1580 : 19 : iMesh_getArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1581 : 19 : tag_values_allocated, tag_values_size, err );
1582 : 19 : }
1583 : :
1584 : 0 : void FBiGeom_getIntArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1585 : : int entity_handles_size, iBase_TagHandle tag_handle, int** tag_values,
1586 : : int* tag_values_allocated, int* tag_values_size, int* err )
1587 : : {
1588 : 0 : iMesh_getIntArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1589 : 0 : tag_values_allocated, tag_values_size, err );
1590 : 0 : }
1591 : :
1592 : 0 : void FBiGeom_getDblArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1593 : : int entity_handles_size, iBase_TagHandle tag_handle, double** tag_values,
1594 : : int* tag_values_allocated, int* tag_values_size, int* err )
1595 : : {
1596 : 0 : iMesh_getDblArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1597 : 0 : tag_values_allocated, tag_values_size, err );
1598 : 0 : }
1599 : :
1600 : 0 : void FBiGeom_getEHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
1601 : : iBase_TagHandle tag_handle, iBase_EntityHandle** tag_value, int* tag_value_allocated,
1602 : : int* tag_value_size, int* err )
1603 : : {
1604 : 0 : iMesh_getEHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_value,
1605 : 0 : tag_value_allocated, tag_value_size, err );
1606 : 0 : }
1607 : :
1608 : 0 : void FBiGeom_getESHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1609 : : int entity_handles_size, iBase_TagHandle tag_handle, iBase_EntitySetHandle** tag_value,
1610 : : int* tag_value_allocated, int* tag_value_size, int* err )
1611 : : {
1612 : 0 : iMesh_getESHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_value,
1613 : 0 : tag_value_allocated, tag_value_size, err );
1614 : 0 : }
1615 : :
1616 : 55 : void FBiGeom_setArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
1617 : : iBase_TagHandle tag_handle, const void* tag_values, int tag_values_size, int* err )
1618 : : {
1619 : 55 : iMesh_setArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1620 : 55 : tag_values_size, err );
1621 : 55 : }
1622 : :
1623 : 0 : void FBiGeom_setIntArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1624 : : int entity_handles_size, iBase_TagHandle tag_handle, const int* tag_values,
1625 : : int tag_values_size, int* err )
1626 : : {
1627 : 0 : iMesh_setIntArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1628 : 0 : tag_values_size, err );
1629 : 0 : }
1630 : :
1631 : 0 : void FBiGeom_setDblArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1632 : : int entity_handles_size, iBase_TagHandle tag_handle, const double* tag_values,
1633 : : const int tag_values_size, int* err )
1634 : : {
1635 : 0 : iMesh_setDblArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1636 : 0 : tag_values_size, err );
1637 : 0 : }
1638 : :
1639 : 0 : void FBiGeom_setEHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
1640 : : iBase_TagHandle tag_handle, const iBase_EntityHandle* tag_values, int tag_values_size,
1641 : : int* err )
1642 : : {
1643 : 0 : iMesh_setEHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1644 : 0 : tag_values_size, err );
1645 : 0 : }
1646 : :
1647 : 0 : void FBiGeom_setESHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
1648 : : int entity_handles_size, iBase_TagHandle tag_handle,
1649 : : const iBase_EntitySetHandle* tag_values, int tag_values_size, int* err )
1650 : : {
1651 : 0 : iMesh_setESHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
1652 : 0 : tag_values_size, err );
1653 : 0 : }
1654 : :
1655 : 1 : void FBiGeom_rmvArrTag( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
1656 : : iBase_TagHandle tag_handle, int* err )
1657 : : {
1658 : 1 : iMesh_rmvArrTag( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, err );
1659 : 1 : }
1660 : :
1661 : 0 : void FBiGeom_getData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1662 : : void** tag_value, int* tag_value_allocated, int* tag_value_size, int* err )
1663 : : {
1664 : 0 : iMesh_getData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, tag_value_allocated,
1665 : 0 : tag_value_size, err );
1666 : 0 : }
1667 : :
1668 : 0 : void FBiGeom_getIntData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1669 : : int* out_data, int* err )
1670 : : {
1671 : 0 : iMesh_getIntData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
1672 : 0 : }
1673 : :
1674 : 0 : void FBiGeom_getDblData( FBiGeom_Instance instance, const iBase_EntityHandle entity_handle,
1675 : : const iBase_TagHandle tag_handle, double* out_data, int* err )
1676 : : {
1677 : 0 : iMesh_getDblData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
1678 : 0 : }
1679 : :
1680 : 0 : void FBiGeom_getEHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1681 : : iBase_EntityHandle* out_data, int* err )
1682 : : {
1683 : 0 : iMesh_getEHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
1684 : 0 : }
1685 : :
1686 : 0 : void FBiGeom_getESHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1687 : : iBase_EntitySetHandle* out_data, int* err )
1688 : : {
1689 : 0 : iMesh_getESHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
1690 : 0 : }
1691 : :
1692 : 0 : void FBiGeom_setData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1693 : : const void* tag_value, int tag_value_size, int* err )
1694 : : {
1695 : 0 : iMesh_setData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, tag_value_size, err );
1696 : 0 : }
1697 : :
1698 : 0 : void FBiGeom_setIntData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1699 : : int tag_value, int* err )
1700 : : {
1701 : 0 : iMesh_setIntData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
1702 : 0 : }
1703 : :
1704 : 0 : void FBiGeom_setDblData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1705 : : double tag_value, int* err )
1706 : : {
1707 : 0 : iMesh_setDblData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
1708 : 0 : }
1709 : :
1710 : 0 : void FBiGeom_setEHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1711 : : iBase_EntityHandle tag_value, int* err )
1712 : : {
1713 : 0 : iMesh_setEHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
1714 : 0 : }
1715 : :
1716 : 0 : void FBiGeom_setESHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
1717 : : iBase_EntitySetHandle tag_value, int* err )
1718 : : {
1719 : 0 : iMesh_setESHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
1720 : 0 : }
1721 : :
1722 : 45 : void FBiGeom_getAllTags( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle** tag_handles,
1723 : : int* tag_handles_allocated, int* tag_handles_size, int* err )
1724 : : {
1725 : 45 : iMesh_getAllTags( IMESH_INSTANCE( instance ), entity_handle, tag_handles, tag_handles_allocated, tag_handles_size,
1726 : 45 : err );
1727 : 45 : }
1728 : :
1729 : 0 : void FBiGeom_rmvTag( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle, int* err )
1730 : : {
1731 : 0 : iMesh_rmvTag( IMESH_INSTANCE( instance ), entity_handle, tag_handle, err );
1732 : 0 : }
1733 : :
1734 : 0 : void FBiGeom_subtract( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
1735 : : int* err )
1736 : : {
1737 : 0 : RETURN( iBase_NOT_SUPPORTED );
1738 : : }
1739 : :
1740 : 0 : void FBiGeom_intersect( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
1741 : : int* err )
1742 : : {
1743 : 0 : RETURN( iBase_NOT_SUPPORTED );
1744 : : }
1745 : :
1746 : 0 : void FBiGeom_unite( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
1747 : : int* err )
1748 : : {
1749 : 0 : RETURN( iBase_NOT_SUPPORTED );
1750 : : }
1751 : :
1752 : : // TODO methods not yet implemented
1753 : 0 : void FBiGeom_getEntClosestPtTrimmed( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*,
1754 : : double*, double*, int* err )
1755 : : {
1756 : 0 : RETURN( iBase_NOT_SUPPORTED );
1757 : : }
1758 : :
1759 : 0 : void FBiGeom_getFcCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
1760 : : double*, double*, double*, double*, int* err )
1761 : : {
1762 : 0 : RETURN( iBase_NOT_SUPPORTED );
1763 : : }
1764 : :
1765 : 0 : void FBiGeom_getEgCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
1766 : : double*, int* err )
1767 : : {
1768 : 0 : RETURN( iBase_NOT_SUPPORTED );
1769 : : }
1770 : :
1771 : 0 : void FBiGeom_getEntArrCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1772 : : double**, int*, int*, double**, int*, int*, int* err )
1773 : : {
1774 : 0 : RETURN( iBase_NOT_SUPPORTED );
1775 : : }
1776 : :
1777 : 0 : void FBiGeom_getEgEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle edge, double x, double y, double z,
1778 : : double* on_x, double* on_y, double* on_z, double* tngt_i, double* tngt_j, double* tngt_k,
1779 : : double* cvtr_i, double* cvtr_j, double* cvtr_k, int* err )
1780 : : {
1781 : : ErrorCode rval = FBE_cast( instance )
1782 : : ->getEgEvalXYZ( (moab::EntityHandle)edge, x, y, z, *on_x, *on_y, *on_z, *tngt_i, *tngt_j,
1783 [ # # ]: 0 : *tngt_k, *cvtr_i, *cvtr_j, *cvtr_k );CHKERR( rval, "can't get point on edge " );
1784 : 0 : RETURN( iBase_SUCCESS );
1785 : : }
1786 : :
1787 : 0 : void FBiGeom_getFcEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle face_handle, double x, double y, double z,
1788 : : double* on_x, double* on_y, double* on_z, double* nrml_i, double* nrml_j, double* nrml_k,
1789 : : double* cvtr1_i, double* cvtr1_j, double* cvtr1_k, double* cvtr2_i, double* cvtr2_j,
1790 : : double* cvtr2_k, int* err )
1791 : : {
1792 : : /*
1793 : : moab::ErrorCode rval = _fbEngine->getFcEvalXYZ( (moab::EntityHandle) face,
1794 : : x, y, z,
1795 : : on_x, on_y, on_z,
1796 : : nrml_i, nrml_j, nrml_k,
1797 : : cvtr1_i, cvtr1_j, cvtr1_k,
1798 : : cvtr2_i, cvtr2_j, cvtr2_k );*/
1799 : : // camal really does not use curvatures
1800 : : // the most it is calling for normals and for closest point
1801 : : // return all curvatures = 0 for the time being, because we
1802 : : // know camal is not requesting them
1803 : :
1804 : 0 : *cvtr1_i = *cvtr1_j = *cvtr1_k = *cvtr2_i = *cvtr2_j = *cvtr2_k = 0.;
1805 : : // first get closest point, then normal, separately
1806 : : ErrorCode rval =
1807 [ # # ]: 0 : FBE_cast( instance )->getEntClosestPt( (moab::EntityHandle)face_handle, x, y, z, on_x, on_y, on_z );CHKERR( rval, "can't get closest point on surface " );
1808 : : rval = FBE_cast( instance )
1809 : : ->getEntNrmlXYZ( (moab::EntityHandle)face_handle, x, y, z, nrml_i, nrml_j,
1810 : 0 : nrml_k ); // some inconsistency here, we use pointers, not refs
1811 [ # # ]: 0 : CHKERR( rval, "can't get normal on closest point on surface " );
1812 : 0 : RETURN( iBase_SUCCESS );
1813 : : }
1814 : :
1815 : 0 : void FBiGeom_getArrEgEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1816 : : double**, int*, int*, double**, int*, int*, double**, int*, int*, int* err )
1817 : : {
1818 : 0 : RETURN( iBase_NOT_SUPPORTED );
1819 : : }
1820 : :
1821 : 0 : void FBiGeom_getArrFcEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
1822 : : double**, int*, int*, double**, int*, int*, double**, int*, int*, double**, int*, int*,
1823 : : int* err )
1824 : : {
1825 : 0 : RETURN( iBase_NOT_SUPPORTED );
1826 : : }
1827 : :
1828 : 0 : void FBiGeom_getPntClsf( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
1829 : : {
1830 : 0 : RETURN( iBase_NOT_SUPPORTED );
1831 : : }
1832 : :
1833 : 0 : void FBiGeom_getPntArrClsf( FBiGeom_Instance instance, int, double const*, int, iBase_EntityHandle**, int*, int*,
1834 : : int* err )
1835 : : {
1836 : 0 : RETURN( iBase_NOT_SUPPORTED );
1837 : : }
1838 : :
1839 : 0 : void FBiGeom_getFacets( FBiGeom_Instance instance, iBase_EntityHandle, double, double, int, int, int, int, int,
1840 : : int* err )
1841 : : {
1842 : 0 : RETURN( iBase_NOT_SUPPORTED );
1843 : : }
1844 : :
1845 : 0 : void FBiGeom_getEntTolerance( FBiGeom_Instance instance, iBase_EntityHandle, double*, int* err )
1846 : : {
1847 : 0 : RETURN( iBase_NOT_SUPPORTED );
1848 : : }
1849 : 0 : void FBiGeom_getArrTolerance( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double**, int*, int*,
1850 : : int* err )
1851 : : {
1852 : 0 : RETURN( iBase_NOT_SUPPORTED );
1853 : : }
1854 : 0 : void FBiGeom_getTolerance( FBiGeom_Instance instance, int*, double*, int* err )
1855 : : {
1856 : 0 : RETURN( iBase_NOT_SUPPORTED );
1857 [ + - ][ + - ]: 32 : }
|