MOAB: Mesh Oriented datABase  (version 5.5.0)
FBiGeom.h
Go to the documentation of this file.
1 #ifndef _ITAPS_FBiGeom
2 #define _ITAPS_FBiGeom
3 
4 /** \mainpage The ITAPS Geometry Interface FBiGeom
5  *
6  * The ITAPS Geometry Interface FBiGeom provides a common interface for
7  * accessing geometry and data associated with a mesh. Applications written
8  * to use this interface can use a variety of implementations, choosing
9  * the one that best meets its needs. They can also use tools written
10  * to this interface.
11  *
12  * \section ITAPS Data Model
13  *
14  * The ITAPS interfaces use a data model composed of four basic data types:\n
15  * \em Entity: basic topological entities in a model, e.g. vertices,
16  * edges, faces, regions. \n
17  * \em Entity \em Set: arbitrary grouping of other entities and sets.
18  * Entity sets also support parent/child relations with other sets which
19  * are distinct from entities contained in those sets. Parent/child links
20  * can be used to embed graph relationships between sets, e.g. to
21  * represent topological relationships between the sets. \n
22  * \em Interface: the object with which model is associated and on which
23  * functions in FBiGeom are called. \n
24  * \em Tag: application data associated with objects of any of the other
25  * data types. Each tag has a designated name, size, and data type.
26  *
27  * \section JTAPS Entity Type
28  * Each entity has a specific Entity Type. The Entity
29  * Type is one of VERTEX, EDGE, FACE, and REGION, and is synonymous with
30  * the topological dimension of the entity. Entity Type is an enumerated
31  * type in the iBase_EntityType enumeration.
32  *
33  * \section KTAPS Entity-, Array-, and Iterator-Based Access
34  *
35  * The FBiGeom interface provides functions for accessing entities
36  * individually, as arrays of entities, or using iterators. These access
37  * methods have different memory versus execution time tradeoffs,
38  * depending on the implementation.
39  *
40  * \section LTAPS Lists Passed Through Interface
41  *
42  * Many of the functions in FBiGeom have arguments corresponding to lists of
43  * objects. In-type arguments for lists consist of a pointer to an array and
44  * a list size. Lists returned from functions are passed in three arguments,
45  * a pointer to the array representing the list, and pointers to the
46  * allocated and occupied lengths of the array. These three arguments are
47  * inout-type arguments, because they can be allocated by the application and
48  * passed into the interface to hold the results of the function. Lists
49  * which are pre-allocated must be large enough to hold the results of the
50  * function; if this is not the case, an error is generated. Otherwise, the
51  * occupied size is changed to the size output from the function. If a list
52  * argument is unallocated (the list pointer points to a NULL value) or if
53  * the incoming value of the allocated size is zero, the list storage will be
54  * allocated by the implementation. IN ALL CASES, MEMORY ALLOCATED BY ITAPS
55  * INTERFACE IMPLEMENTATIONS IS DONE USING THE C MALLOC FUNCTION, AND CAN BE
56  * DE-ALLOCATED USING THE C FREE FUNCTION.
57  *
58  */
59 
60 #include "iBase.h"
61 #include "FBiGeom_protos.h"
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 /**\brief Type used to store FBiGeom interface handle
68  *
69  * Type used to store FBiGeom interface handle
70  */
71 typedef struct FBiGeom_Instance_Private* FBiGeom_Instance;
72 
73 /**\brief Get a description of the error returned from the last FBiGeom call
74  *
75  * Get a description of the error returned from the last FBiGeom function
76  * \param instance FBiGeom instance handle
77  * \param descr Pointer to a character string to be filled with a
78  * description of the error from the last FBiGeom function
79  * \param descr_len Length of the character string pointed to by descr
80  */
81 void FBiGeom_getDescription( FBiGeom_Instance instance, char* descr, int descr_len );
82 
83 /**\brief Get the error type returned from the last FBiGeom function
84  *
85  * Get the error type returned from the last FBiGeom function. Value
86  * returned is a member of the iBase_ErrorType enumeration.
87  * \param instance FBiGeom instance handle
88  * \param *error_type Error type returned from last FBiGeom function
89  */
91  /*out*/ int* error_type );
92 
93 /**\brief Construct a new FBiGeom instance
94  *
95  * Construct a new FBiGeom instance, using implementation-specific options
96  * \param options Pointer to implementation-specific options string
97  * \param instance Pointer to FBiGeom instance handle returned from function
98  * \param *err Pointer to error type returned from function
99  * \param options_len Length of the character string pointed to by options
100  */
101 void FBiGeom_newGeom( char const* options, FBiGeom_Instance* instance_out, int* err, int options_len );
102 
103 /**\brief Construct a new FBiGeom instance
104  *
105  * Construct a new FBiGeom instance, using an existing moab iMesh instance
106  * and a root set that encapsulates the topological model
107  * \param mesh iMesh_Instance
108  * \param set root set for the mesh based geometry
109  * \param options Pointer to implementation-specific options string
110  * \param instance Pointer to FBiGeom instance handle returned from function
111  * \param *err Pointer to error type returned from function
112  * \param options_len Length of the character string pointed to by options
113  */
114 
115 /* void FBiGeom_newGeomFromMesh( iMesh_Instance mesh, iBase_EntitySetHandle set,
116  const char *options, FBiGeom_Instance *geom,
117  int *err, int options_len);*/
118 /**\brief Destroy an FBiGeom instance
119  *
120  * Destroy an FBiGeom instance
121  * \param instance FBiGeom instance to be destroyed
122  * \param *err Pointer to error type returned from function
123  */
124 void FBiGeom_dtor( FBiGeom_Instance instance, int* err );
125 
126 /**\brief Load a geom from a file
127  *
128  * Load a geom from a file. If entity set is specified, loaded geom
129  * is added to that set; specify zero if that is not desired.
130  * \param instance FBiGeom instance handle
131  * \param entity_set_handle Set to which loaded geom will be added, zero
132  * if not desired
133  * \param name File name from which geom is to be loaded
134  * \param options Pointer to implementation-specific options string
135  * \param *err Pointer to error type returned from function
136  * \param name_len Length of the file name character string
137  * \param options_len Length of the options character string
138  */
139 void FBiGeom_load( FBiGeom_Instance instance,
140  char const* name,
141  char const* options,
142  int* err,
143  int name_len,
144  int options_len );
145 
146 /**\brief Save a geom to a file
147  *
148  * Save a geom to a file. If entity set is specified, save only the
149  * geom contained in that set.
150  * \param instance FBiGeom instance handle
151  * \param entity_set_handle Entity set being saved
152  * \param name File name to which geom is to be saved
153  * \param options Pointer to implementation-specific options string
154  * \param *err Pointer to error type returned from function
155  * \param name_len Length of the file name character string
156  * \param options_len Length of the options character string
157  */
158 void FBiGeom_save( FBiGeom_Instance instance,
159  char const* name,
160  char const* options,
161  int* err,
162  int name_len,
163  int options_len );
164 
165 /**\brief Get handle of the root set for this instance
166  *
167  * Get handle of the root set for this instance. All geom in
168  * this instance can be accessed from this set.
169  * \param instance FBiGeom instance handle
170  * \param root_set Pointer to set handle returned from function
171  * \param *err Pointer to error type returned from function
172  */
174 
175 /**\brief Get the bounding box of the entire model
176  *
177  * Get the bounding box of the entire model
178  * \param instance FBiGeom instance handle
179  * \param min_x Minimum coordinate of bounding box
180  * \param min_y Minimum coordinate of bounding box
181  * \param min_z Minimum coordinate of bounding box
182  * \param max_x Maximum coordinate of bounding box
183  * \param max_y Maximum coordinate of bounding box
184  * \param max_z Maximum coordinate of bounding box
185  * \param *err Pointer to error type returned from function
186  */
188  double* min_x,
189  double* min_y,
190  double* min_z,
191  double* max_x,
192  double* max_y,
193  double* max_z,
194  int* err );
195 
196 /**\brief Get entities of specific type in set or instance
197  *
198  * Get entities of specific type in set or instance. All entities are
199  * requested by specifying iBase_ALL_TYPES. Specified type must be a value
200  * in the iBase_EntityType enumeration.
201  * \param instance FBiGeom instance handle
202  * \param entity_set_handle Entity set being queried
203  * \param entity_type Type of entities being requested
204  * \param entity_topology Topology of entities being requested
205  * \param *entity_handles Pointer to array of entity handles returned
206  * from function
207  * \param *entity_handles_allocated Pointer to allocated size of
208  * entity_handles array
209  * \param *entity_handles_size Pointer to occupied size of entity_handles
210  * array
211  * \param *err Pointer to error type returned from function
212  */
214  iBase_EntitySetHandle set_handle,
215  int entity_type,
216  iBase_EntityHandle** entity_handles,
217  int* entity_handles_allococated,
218  int* entity_handles_size,
219  int* err );
220 
221 /**\brief Get the number of entities with the specified type in the
222  * instance or set
223  *
224  * Get the number of entities with the specified type in the instance
225  * or set. If entity set handle is zero, return information for instance,
226  * otherwise for set. Value of entity type must be from the
227  * iBase_EntityType enumeration. If iBase_ALL_TYPES is specified, total
228  * number of entities (excluding entity sets) is returned.
229  * \param instance FBiGeom instance handle
230  * \param entity_set_handle Entity set being queried
231  * \param entity_type Type of entity requested
232  * \param num_type Pointer to number of entities, returned from function
233  * \param *err Pointer to error type returned from function
234  */
236  iBase_EntitySetHandle set_handle,
237  int entity_type,
238  int* num_out,
239  int* err );
240 
241 /**\brief Get the entity type for the specified entity
242  *
243  * Get the entity type for the specified entity. Type returned is a value
244  * in the iBase_EntityType enumeration.
245  * \param instance FBiGeom instance handle
246  * \param entity_handle entity handle being queried
247  * \param *type Pointer to location at which to store the returned type
248  * \param *err Pointer to error type returned from function
249  */
250 void FBiGeom_getEntType( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* type, int* err );
251 
252 /**\brief Get the entity type for the specified entities
253  *
254  * Get the entity type for the specified entities. Types returned are
255  * values in the iBase_EntityType enumeration.
256  * \param instance FBiGeom instance handle
257  * \param entity_handles Array of entity handles being queried
258  * \param entity_handles_size Number of entities in entity_handles array
259  * \param *type Pointer to array of types returned from function
260  * \param *type_allocated Pointer to allocated size of type array
261  * \param *type_size Pointer to occupied size of type array
262  * \param *err Pointer to error type returned from function
263  */
264 void FBiGeom_getArrType( FBiGeom_Instance instance,
265  iBase_EntityHandle const* entity_handles,
266  int entity_handles_size,
267  int** type,
268  int* type_allocated,
269  int* type_size,
270  int* err );
271 
272 /**\brief Get entities of specified type adjacent to an entity
273  *
274  * Get entities of specified type adjacent to an entity. Specified type
275  * must be value in the iBase_EntityType enumeration.
276  * \param instance FBiGeom instance handle
277  * \param entity_handle Entity handle being queried
278  * \param entity_type_requested Type of adjacent entities requested
279  * \param *adj_entity_handles Pointer to array of adjacent entities
280  * returned from function
281  * \param *adj_entity_handles_allocated Pointer to allocated size of
282  * adj_entity_handles array
283  * \param *adj_entity_handles_size Pointer to occupied size of
284  * adj_entity_handles array
285  * \param *err Pointer to error type returned from function
286  */
287 void FBiGeom_getEntAdj( FBiGeom_Instance instance,
288  iBase_EntityHandle entity_handle,
289  int to_dimension,
290  iBase_EntityHandle** adj_entities,
291  int* adj_entities_allocated,
292  int* adj_entities_size,
293  int* err );
294 
295 /**\brief Get entities of specified type adjacent to entities
296  *
297  * Get entities of specified type adjacent to entities. Specified type
298  * must be value in the iBase_EntityType enumeration. \em offset(i) is
299  * index of first entity in adjacentEntityHandles array adjacent to
300  * entity_handles[i].
301  * \param instance FBiGeom instance handle
302  * \param entity_handles Array of entity handles being queried
303  * \param entity_handles_size Number of entities in entity_handles array
304  * \param entity_type_requested Type of adjacent entities requested
305  * \param *adjacentEntityHandles Pointer to array of adjacentEntityHandles
306  * returned from function
307  * \param *adjacentEntityHandles_allocated Pointer to allocated size of
308  * adjacentEntityHandles array
309  * \param *adj_entity_handles_size Pointer to occupied size of
310  * adjacentEntityHandles array
311  * \param *offset Pointer to array of offsets returned from function
312  * \param *offset_allocated Pointer to allocated size of offset array
313  * \param *offset_size Pointer to occupied size of offset array
314  * \param *err Pointer to error type returned from function
315  */
316 void FBiGeom_getArrAdj( FBiGeom_Instance instance,
317  iBase_EntityHandle const* entity_handles,
318  int entity_handles_size,
319  int requested_entity_type,
320  iBase_EntityHandle** adj_entity_handles,
321  int* adj_entity_handles_allocated,
322  int* adj_entity_handles_size,
323  int** offset,
324  int* offset_allocated,
325  int* offset_size,
326  int* err );
327 
328 /**\brief Get "2nd order" adjacencies to an entity
329  *
330  * Get "2nd order" adjacencies to an entity, that is, from an entity,
331  * through other entities of a specified "bridge" dimension, to other
332  * entities of another specified "to" dimension.
333  * \param instance FBiGeom instance handle
334  * \param entity_handle Entity from which adjacencies are requested
335  * \param bridge_dimension Bridge dimension for 2nd order adjacencies
336  * \param to_dimension Dimension of adjacent entities returned
337  * \param adjacent_entities Adjacent entities
338  * \param adjacent_entities_allocated Allocated size of returned array
339  * \param adjacent_entities_size Occupied size of returned array
340  * \param *err Pointer to error type returned from function
341  */
343  iBase_EntityHandle entity_handle,
344  int bridge_dimension,
345  int to_dimension,
346  iBase_EntityHandle** adjacent_entities,
347  int* adjacent_entities_allocated,
348  int* adjacent_entities_size,
349  int* err );
350 
351 /**\brief Get "2nd order" adjacencies to an array of entities
352  *
353  * Get "2nd order" adjacencies to an array of entities, that is, from each
354  * entity, through other entities of a specified "bridge" dimension, to
355  * other entities of another specified "to" dimension.
356  * \param instance FBiGeom instance handle
357  * \param entity_handles Entities from which adjacencies are requested
358  * \param entity_handles_size Number of entities whose adjacencies are
359  * requested
360  * \param bridge_dimension Bridge dimension for 2nd order adjacencies
361  * \param to_dimension Dimension of adjacent entities returned
362  * \param adj_entity_handles Adjacent entities
363  * \param adj_entity_handles_allocated Allocated size of returned array
364  * \param adj_entity_handles_size Occupied size of returned array
365  * \param offset Offset[i] is offset into adj_entity_handles of 2nd order
366  * adjacencies of ith entity in entity_handles
367  * \param offset_allocated Allocated size of offset array
368  * \param offset_size Occupied size of offset array
369  * \param *err Pointer to error type returned from function
370  */
372  iBase_EntityHandle const* entity_handles,
373  int entity_handles_size,
374  int order_adjacent_key,
375  int requested_entity_type,
376  iBase_EntityHandle** adj_entity_handles,
377  int* adj_entity_handles_allocated,
378  int* adj_entity_handles_size,
379  int** offset,
380  int* offset_allocated,
381  int* offset_size,
382  int* err );
383 
384 /**\brief Return whether two entities are adjacent
385  *
386  * Return whether two entities are adjacent.
387  * \param instance FBiGeom instance handle
388  * \param entity_handle1 First entity queried
389  * \param entity_handle2 Second entity queried
390  * \param are_adjacent If returned non-zero, entities are adjacent,
391  * otherwise they are not
392  * \param *err Pointer to error type returned from function
393  */
394 void FBiGeom_isEntAdj( FBiGeom_Instance instance,
395  iBase_EntityHandle entity_handle1,
396  iBase_EntityHandle entity_handle2,
397  int* are_adjacent,
398  int* err );
399 
400 /**\brief Return whether entity pairs are adjacent
401  *
402  * Return whether entity pairs are adjacent, i.e. if entity_handles_1[i] is
403  * adjacent to entity_handles_2[i]. This function requires
404  * entity_handles_1_size and entity_handles_2_size to be equal.
405  * \param instance FBiGeom instance handle
406  * \param entity_handles_1 First array of entities
407  * \param entity_handles_1_size Number of entities in first array
408  * \param entity_handles_2 Second array of entities
409  * \param entity_handles_2_size Number of entities in second array
410  * \param is_adjacent_info Array of flags returned from function
411  * \param is_adjacent_info_allocated Allocated size of flags array
412  * \param is_adjacent_info_size Occupied size of flags array
413  * \param *err Pointer to error type returned from function
414  */
415 void FBiGeom_isArrAdj( FBiGeom_Instance instance,
416  iBase_EntityHandle const* entity_handles_1,
417  int entity_handles_1_size,
418  iBase_EntityHandle const* entity_handles_2,
419  int entity_handles_2_size,
420  int** is_adjacent_info,
421  int* is_adjacent_info_allocated,
422  int* is_adjacent_info_size,
423  int* err );
424 
425 /**\brief Return the topology level of the geometry
426  *
427  * Return the topology level of the geometry as an integer, where 0 = basic
428  * entities only, 1 = manifold entities, 2 = non-manifold entities.
429  * \param instance FBiGeom instance handle
430  * \param topo_level_out The topology level
431  * \param *err Pointer to error type returned from function
432  */
433 void FBiGeom_getTopoLevel( FBiGeom_Instance instance, int* topo_level_out, int* err );
434 
435 /**\brief Get closest point to an entity
436  *
437  * Get closest point to a specified position on an entity
438  * \param instance FBiGeom instance handle
439  * \param entity_handle Entity being queried
440  * \param near_x Coordinates of starting point
441  * \param near_y Coordinates of starting point
442  * \param near_z Coordinates of starting point
443  * \param on_x Closest point on entity
444  * \param on_y Closest point on entity
445  * \param on_z Closest point on entity
446  * \param *err Pointer to error type returned from function
447  */
449  iBase_EntityHandle entity_handle,
450  double near_x,
451  double near_y,
452  double near_z,
453  double* on_x,
454  double* on_y,
455  double* on_z,
456  int* err );
457 
458 /**\brief Get closest point for an array of entities and points
459  * For surfaces, closest point could be on the void space inside it.
460  * Get closest point for an array of entities and points. If either the
461  * number of entities or number of coordinate triples is unity, then all
462  * points or entities are queried for that entity or point, respectively,
463  * otherwise each point corresponds to each entity. storage_order should be
464  * a value in the iBase_StorageOrder enum.
465  * \param instance FBiGeom instance handle
466  * \param entity_handles Entity(ies) being queried
467  * \param entity_handles_size Number of entities being queried
468  * \param storage_order Storage order of input points
469  * \param near_coordinates Coordinates of starting point(s)
470  * \param near_coordinates_size Number of values in near_coordinates array
471  * \param on_coordinates Coordinates of closest points
472  * \param on_coordinates_allocated Allocated size of closest point array
473  * \param on_coordinates_size Occupied size of closest point array
474  * \param *err Pointer to error type returned from function
475  */
476 
478  iBase_EntityHandle entity_handle,
479  double near_x,
480  double near_y,
481  double near_z,
482  double* on_x,
483  double* on_y,
484  double* on_z,
485  int* err );
486 
487 /**\brief Get closest point for an array of entities and points
488  * For surfaces, it made sure the closest point in on surface.
489  * Get closest point for an array of entities and points. If either the
490  * number of entities or number of coordinate triples is unity, then all
491  * points or entities are queried for that entity or point, respectively,
492  * otherwise each point corresponds to each entity. storage_order should be
493  * a value in the iBase_StorageOrder enum.
494  * \param instance FBiGeom instance handle
495  * \param entity_handles Entity(ies) being queried
496  * \param entity_handles_size Number of entities being queried
497  * \param storage_order Storage order of input points
498  * \param near_coordinates Coordinates of starting point(s)
499  * \param near_coordinates_size Number of values in near_coordinates array
500  * \param on_coordinates Coordinates of closest points
501  * \param on_coordinates_allocated Allocated size of closest point array
502  * \param on_coordinates_size Occupied size of closest point array
503  * \param *err Pointer to error type returned from function
504  */
506  iBase_EntityHandle const* entity_handles,
507  int entity_handles_size,
508  int storage_order,
509  double const* near_coordinates,
510  int near_coordinates_size,
511  double** on_coordinates,
512  int* on_coordinates_allocated,
513  int* on_coordinates_size,
514  int* err );
515 
516 /**\brief Get the normal vector on an entity at the given position
517  * Get the normal vector on an entity at the given position.
518  * \param instance FBiGeom instance handle
519  * \param entity_handle Entity being queried
520  * \param x Coordinates of starting point
521  * \param y Coordinates of starting point
522  * \param z Coordinates of starting point
523  * \param nrml_i Normal vector at starting point
524  * \param nrml_j Normal vector at starting point
525  * \param nrml_k Normal vector at starting point
526  * \param *err Pointer to error type returned from function
527  */
529  iBase_EntityHandle entity_handle,
530  double x,
531  double y,
532  double z,
533  double* nrml_i,
534  double* nrml_j,
535  double* nrml_k,
536  int* err );
537 
538 /**\brief Get the normal vector on an entity(ies) at given position(s)
539  *
540  * Get the normal vector on an entity(ies) at given position(s). If either
541  * the number of entities or number of coordinate triples is unity, then all
542  * points or entities are queried for that entity or point, respectively,
543  * otherwise each point corresponds to each entity. storage_order should be
544  * a value in the iBase_StorageOrder enum.
545  * \param instance FBiGeom instance handle
546  * \param entity_handles Entity(ies) being queried
547  * \param entity_handles_size Number of entities being queried
548  * \param storage_order Storage order of coordinates
549  * \param coordinates Starting coordinates
550  * \param coordinates_size Number of values in coordinates array
551  * \param normals Normal coordinates
552  * \param normals_allocated Allocated size of normals array
553  * \param normals_size Occupied size of normals array
554  * \param *err Pointer to error type returned from function
555  */
557  iBase_EntityHandle const* entity_handles,
558  int entity_handles_size,
559  int storage_order,
560  double const* coordinates,
561  int coordinates_size,
562  double** normals,
563  int* normals_allocated,
564  int* normals_size,
565  int* err );
566 
567 /**\brief Get the normal vector AND closest point on an entity at given
568  * position
569  *
570  * Get the normal vector AND closest point on an entity at a given position.
571  * \param entity_handle Entity being queried
572  * \param instance FBiGeom instance handle
573  * \param x Starting coordinates
574  * \param y Starting coordinates
575  * \param z Starting coordinates
576  * \param pt_x Closest point
577  * \param pt_y Closest point
578  * \param pt_z Closest point
579  * \param nrml_i Normal at closest point
580  * \param nrml_j Normal at closest point
581  * \param nrml_k Normal at closest point
582  * \param *err Pointer to error type returned from function
583  */
585  iBase_EntityHandle entity_handle,
586  double x,
587  double y,
588  double z,
589  double* pt_x,
590  double* pt_y,
591  double* pt_z,
592  double* nrml_i,
593  double* nrml_j,
594  double* nrml_k,
595  int* err );
596 
597 /**\brief Get the normal vector AND closest point on an entity(ies) at
598  * given position(s)
599  *
600  * Get the normal vector AND closest point on an entity(ies) at given
601  * position(s). If either the number of entities or number of coordinate
602  * triples is unity, then all points or entities are queried for that entity
603  * or point, respectively, otherwise each point corresponds to each entity.
604  * storage_order should be a value in the iBase_StorageOrder enum.
605  * \param instance FBiGeom instance handle
606  * \param entity_handles Entity(ies) being queried
607  * \param entity_handles_size Number of entity(ies) being queried
608  * \param storage_order Storage order in near_coordinates array
609  * \param near_coordinates Starting coordinates
610  * \param near_coordinates_size Number of values in near_coordinates array
611  * \param on_coordinates Closest point array
612  * \param on_coordinates_allocated Allocated size of closest point array
613  * \param on_coordinates_size Occupied size of closest point array
614  * \param normals Normal array
615  * \param normals_allocated Allocated size of normal array
616  * \param normals_size Occupied size of normal array
617  * \param *err Pointer to error type returned from function
618  */
620  iBase_EntityHandle const* entity_handles,
621  int entity_handles_size,
622  int storage_order,
623  double const* near_coordinates,
624  int near_coordinates_size,
625  double** on_coordinates,
626  int* on_coordinates_allocated,
627  int* on_coordinates_size,
628  double** normals,
629  int* normals_allocated,
630  int* normals_size,
631  int* err );
632 
633 /**\brief Get the tangent vector on an entity at given position
634  *
635  * Get the tangent vector on an entity at a given position.
636  * \param instance FBiGeom instance handle
637  * \param entity_handle Entity being queried
638  * \param x Starting coordinates
639  * \param y Starting coordinates
640  * \param z Starting coordinates
641  * \param tgnt_i Tangent at closest point
642  * \param tgnt_j Tangent at closest point
643  * \param tgnt_k Tangent at closest point
644  * \param *err Pointer to error type returned from function
645  */
647  iBase_EntityHandle entity_handle,
648  double x,
649  double y,
650  double z,
651  double* tgnt_i,
652  double* tgnt_j,
653  double* tgnt_k,
654  int* err );
655 
656 /**\brief Get the tangent vector on an entity(ies) at given position(s)
657  *
658  * Get the tangent vector on an entity(ies) at given position(s). If either
659  * the number of entities or number of coordinate triples is unity, then all
660  * points or entities are queried for that entity or point, respectively,
661  * otherwise each point corresponds to each entity. storage_order should be
662  * a value in the iBase_StorageOrder enum
663  * \param instance FBiGeom instance handle
664  * \param entity_handles Entity(ies) being queried
665  * \param entity_handles_size Number of entities being queried
666  * \param storage_order Storage order of coordinates
667  * \param coordinates Starting coordinates
668  * \param coordinates_size Number of values in coordinates array
669  * \param tangents Tangent coordinates
670  * \param tangents_allocated Allocated size of tangents array
671  * \param tangents_size Occupied size of tangents array
672  * \param *err Pointer to error type returned from function
673  */
675  iBase_EntityHandle const* entity_handles,
676  int entity_handles_size,
677  int storage_order,
678  double const* coordinates,
679  int coordinates_size,
680  double** tangents,
681  int* tangents_allocated,
682  int* tangents_size,
683  int* err );
684 
685 /**\brief Get the two principle curvature vectors for a face at a point
686  *
687  * Get the two principle curvature vectors for a face at a point.
688  * Magnitudes of vectors are curvature, directions are directions of
689  * principal curvatures.
690  * \param instance FBiGeom instance handle
691  * \param face_handle Face being queried
692  * \param x Position being queried
693  * \param y Position being queried
694  * \param z Position being queried
695  * \param cvtr1_i Maximum curvature vector
696  * \param cvtr1_j Maximum curvature vector
697  * \param cvtr1_k Maximum curvature vector
698  * \param cvtr2_i Minimum curvature vector
699  * \param cvtr2_j Minimum curvature vector
700  * \param cvtr2_k Minimum curvature vector
701  * \param *err Pointer to error type returned from function
702  */
704  iBase_EntityHandle face_handle,
705  double x,
706  double y,
707  double z,
708  double* cvtr1_i,
709  double* cvtr1_j,
710  double* cvtr1_k,
711  double* cvtr2_i,
712  double* cvtr2_j,
713  double* cvtr2_k,
714  int* err );
715 
716 /**\brief Get the principle curvature vector for an edge at a point
717  *
718  * Get the principle curvature vector for an edge at a point. Magnitude of
719  * vector is the curvature, direction is direction of principal curvature.
720  * \param instance FBiGeom instance handle
721  * \param edge_handle Edge being queried
722  * \param x Position being queried
723  * \param y Position being queried
724  * \param z Position being queried
725  * \param cvtr_i Maximum curvature vector
726  * \param cvtr_j Maximum curvature vector
727  * \param cvtr_k Maximum curvature vector
728  * \param *err Pointer to error type returned from function
729  */
731  iBase_EntityHandle edge_handle,
732  double x,
733  double y,
734  double z,
735  double* cvtr_i,
736  double* cvtr_j,
737  double* cvtr_k,
738  int* err );
739 
740 /**\brief Get the curvature(s) on an entity(ies) at given position(s)
741  *
742  * Get the curvature(s) on an entity(ies) at given position(s). If either
743  * the number of entities or number of coordinate triples is unity, then all
744  * points or entities are queried for that entity or point, respectively,
745  * otherwise each point corresponds to each entity. storage_order should be
746  * a value in the iBase_StorageOrder enum.
747  * \param instance FBiGeom instance handle
748  * \param entity_handles Entity(ies) being queried
749  * \param entity_handles_size Number of entities being queried
750  * \param storage_order Storage order of coordinates
751  * \param coords Starting coordinates
752  * \param coords_size Number of values in coordinates array
753  * \param cvtr_1 First principal curvatures
754  * \param cvtr_1_allocated Allocated size of first curvature array
755  * \param cvtr_1_size Occupied size of first curvature array
756  * \param cvtr_2 Second principal curvatures
757  * \param cvtr_2_allocated Allocated size of second curvature array
758  * \param cvtr_2_size Occupied size of second curvature array
759  * \param *err Pointer to error type returned from function
760  */
762  iBase_EntityHandle const* entity_handles,
763  int entity_handles_size,
764  int storage_order,
765  double const* coords,
766  int coords_size,
767  double** cvtr_1,
768  int* cvtr_1_allocated,
769  int* cvtr_1_size,
770  double** cvtr_2,
771  int* cvtr_2_allocated,
772  int* cvtr_2_size,
773  int* err );
774 
775 /**\brief Get closest point, tangent, and curvature of edge
776  *
777  * Get closest point, tangent, and curvature of edge.
778  * \param instance FBiGeom instance handle
779  * \param edge_handle Edge being queried
780  * \param x Point at which entity is being queried
781  * \param y Point at which entity is being queried
782  * \param z Point at which entity is being queried
783  * \param on_x Closest point at point being queried
784  * \param on_y Closest point at point being queried
785  * \param on_z Closest point at point being queried
786  * \param tgnt_i Tangent at point being queried
787  * \param tgnt_j Tangent at point being queried
788  * \param tgnt_k Tangent at point being queried
789  * \param cvtr_i Curvature at point being queried
790  * \param cvtr_j Curvature at point being queried
791  * \param cvtr_k Curvature at point being queried
792  * \param *err Pointer to error type returned from function
793  */
795  iBase_EntityHandle edge_handle,
796  double x,
797  double y,
798  double z,
799  double* on_x,
800  double* on_y,
801  double* on_z,
802  double* tgnt_i,
803  double* tgnt_j,
804  double* tgnt_k,
805  double* cvtr_i,
806  double* cvtr_j,
807  double* cvtr_k,
808  int* err );
809 
810 /**\brief Get closest point, tangent, and curvature of face
811  *
812  * Get closest point, tangent, and curvature of face. If any of input
813  * coordinate pointers are NULL, that value is not returned.
814  * \param instance FBiGeom instance handle
815  * \param face_handle Face being queried
816  * \param x Point at which entity is being queried
817  * \param y Point at which entity is being queried
818  * \param z Point at which entity is being queried
819  * \param on_x Closest point at point being queried
820  * \param on_y Closest point at point being queried
821  * \param on_z Closest point at point being queried
822  * \param nrml_i Normal at point being queried
823  * \param nrml_j Normal at point being queried
824  * \param nrml_k Normal at point being queried
825  * \param cvtr1_i First principal curvature at point being queried
826  * \param cvtr1_j First principal curvature at point being queried
827  * \param cvtr1_k First principal curvature at point being queried
828  * \param cvtr2_i Second principal curvature at point being queried
829  * \param cvtr2_j Second principal curvature at point being queried
830  * \param cvtr2_k Second principal curvature at point being queried
831  * \param *err Pointer to error type returned from function
832  */
834  iBase_EntityHandle face_handle,
835  double x,
836  double y,
837  double z,
838  double* on_x,
839  double* on_y,
840  double* on_z,
841  double* nrml_i,
842  double* nrml_j,
843  double* nrml_k,
844  double* cvtr1_i,
845  double* cvtr1_j,
846  double* cvtr1_k,
847  double* cvtr2_i,
848  double* cvtr2_j,
849  double* cvtr2_k,
850  int* err );
851 
852 /**\brief Get the closest point(s), tangent(s), and curvature(s) on an
853  * entity(ies) at given position(s)
854  *
855  * Get the closest point(s), tangent(s), and curvature(s) on an entity(ies)
856  * at given position(s). If either the number of entities or number of
857  * coordinate triples is unity, then all points or entities are queried for
858  * that entity or point, respectively, otherwise each point corresponds to
859  * each entity. storage_order should be a value in the iBase_StorageOrder
860  * enum.
861  * \param instance FBiGeom instance handle
862  * \param edge_handles Edge(s) being queried
863  * \param edge_handles_size Number of edges being queried
864  * \param storage_order Storage order of coordinates
865  * \param coords Starting coordinates
866  * \param coords_size Number of values in coordinates array
867  * \param on_coords Closest point array
868  * \param on_coords_allocated Allocated size of closest point array
869  * \param on_coords_size Occupied size of closest point array
870  * \param tangent Tangent array
871  * \param tangent_allocated Allocated size of tangent array
872  * \param tangent_size Occupied size of tangent array
873  * \param cvtr First principal curvatures
874  * \param cvtr_allocated Allocated size of first curvature array
875  * \param cvtr_size Occupied size of first curvature array
876  * \param *err Pointer to error type returned from function
877  */
879  iBase_EntityHandle const* edge_handles,
880  int edge_handles_size,
881  int storage_order,
882  double const* coords,
883  int coords_size,
884  double** on_coords,
885  int* on_coords_allocated,
886  int* on_coords_size,
887  double** tangent,
888  int* tangent_allocated,
889  int* tangent_size,
890  double** cvtr,
891  int* cvtr_allocated,
892  int* cvtr_size,
893  int* err );
894 
895 /**\brief Get the closest point(s), tangent(s), and curvature(s) on an
896  * entity(ies) at given position(s)
897  *
898  * Get the closest point(s), tangent(s), and curvature(s) on an entity(ies)
899  * at given position(s). If either the number of entities or number of
900  * coordinate triples is unity, then all points or entities are queried for
901  * that entity or point, respectively, otherwise each point corresponds to
902  * each entity. storage_order should be a value in the iBase_StorageOrder
903  * enum.
904  * \param instance FBiGeom instance handle
905  * \param edge_handles Edge(s) being queried
906  * \param edge_handles_size Number of edges being queried
907  * \param storage_order Storage order of coordinates
908  * \param coords Starting coordinates
909  * \param coords_size Number of values in coordinates array
910  * \param on_coords Closest point array
911  * \param on_coords_allocated Allocated size of closest point array
912  * \param on_coords_size Occupied size of closest point array
913  * \param normal Normal array
914  * \param normal_allocated Allocated size of normal array
915  * \param normal_size Occupied size of normal array
916  * \param cvtr_1 First principal curvatures
917  * \param cvtr_1_allocated Allocated size of first curvature array
918  * \param cvtr_1_size Occupied size of first curvature array
919  * \param cvtr_2 Second principal curvatures
920  * \param cvtr_2_allocated Allocated size of second curvature array
921  * \param cvtr_2_size Occupied size of second curvature array
922  * \param *err Pointer to error type returned from function
923  */
925  iBase_EntityHandle const* face_handles,
926  int face_handles_size,
927  int storage_order,
928  double const* coords,
929  int coords_size,
930  double** on_coords,
931  int* on_coords_allocated,
932  int* on_coords_size,
933  double** normal,
934  int* normal_allocated,
935  int* normal_size,
936  double** cvtr1,
937  int* cvtr1_allocated,
938  int* cvtr1_size,
939  double** cvtr2,
940  int* cvtr2_allocated,
941  int* cvtr2_size,
942  int* err );
943 
944 /**\brief Get the bounding box of the specified entity
945  *
946  * Get the bounding box of the specified entity
947  * \param instance FBiGeom instance handle
948  * \param entity_handle Entity being queried
949  * \param min_x Minimum coordinate of bounding box
950  * \param min_y Minimum coordinate of bounding box
951  * \param min_z Minimum coordinate of bounding box
952  * \param max_x Maximum coordinate of bounding box
953  * \param max_y Maximum coordinate of bounding box
954  * \param max_z Maximum coordinate of bounding box
955  * \param *err Pointer to error type returned from function
956  */
958  iBase_EntityHandle entity_handle,
959  double* min_x,
960  double* min_y,
961  double* min_z,
962  double* max_x,
963  double* max_y,
964  double* max_z,
965  int* err );
966 
967 /**\brief Get the bounding box of the specified entities
968  *
969  * Get the bounding box of the specified entities. Storage order passed in
970  * should be a member of iBase_StorageOrder enum.
971  * \param instance FBiGeom instance handle
972  * \param entity_handles Entity handles being queried
973  * \param enttiy_handles_size Number of entities being queried
974  * \param storage_order Storage order of coordinates passed back
975  * \param min_corner Minimum coordinates of bounding boxes
976  * \param min_corner_allocated Allocated size of minimum coordinates array
977  * \param min_corner_size Occupied size of minimum coordinates array
978  * \param max_corner Maximum coordinates of bounding boxes
979  * \param max_corner_allocated Allocated size of maximum coordinates array
980  * \param max_corner_size Occupied size of maximum coordinates array
981  * \param *err Pointer to error type returned from function
982  */
984  iBase_EntityHandle const* entity_handles,
985  int entity_handles_size,
986  int storage_order,
987  double** min_corner,
988  int* min_corner_allocated,
989  int* min_corner_size,
990  double** max_corner,
991  int* max_corner_allocated,
992  int* max_corner_size,
993  int* err );
994 
995 /**\brief Get coordinates of specified vertex
996  *
997  * Get coordinates of specified vertex.
998  * \param instance FBiGeom instance handle
999  * \param vertex_handle Geom vertex being queried
1000  * \param *x Pointer to x coordinate returned from function
1001  * \param *y Pointer to y coordinate returned from function
1002  * \param *z Pointer to z coordinate returned from function
1003  * \param *err Pointer to error type returned from function
1004  */
1005 void FBiGeom_getVtxCoord( FBiGeom_Instance instance,
1006  iBase_EntityHandle vertex_handle,
1007  double* x,
1008  double* y,
1009  double* z,
1010  int* err );
1011 
1012 /**\brief Get coordinates of specified vertices
1013  *
1014  * Get coordinates of specified vertices. If storage order is passed in
1015  * with a value other than iBase_UNDETERMINED, coordinates are returned
1016  * in the specified storage order, otherwise storage order is that native
1017  * to the implementation. Storage order of returned coordinates is also
1018  * returned.
1019  * \param instance FBiGeom instance handle
1020  * \param vertex_handles Array of geom vertex handles whose coordinates are
1021  * being requested
1022  * \param vertex_handles_size Number of vertices in vertex_handles array
1023  * \param storage_order Storage order requested for coordinate data
1024  * \param *coords Pointer to array of coordinates returned from function
1025  * \param *coords_allocated Pointer to allocated size of coords array
1026  * \param *coords_size Pointer to occupied size of coords array
1027  * \param *err Pointer to error type returned from function
1028  */
1030  iBase_EntityHandle const* entity_handles,
1031  int entity_handles_size,
1032  int storage_order,
1033  double** coordinates,
1034  int* coordinates_allocated,
1035  int* coordinates_size,
1036  int* err );
1037 
1038 /**\brief Intersect a ray with the model
1039  *
1040  * Intersect a ray with the model. Storage orders passed in should be a
1041  * member of the iBase_StorageOrder enumeration.
1042  * \param instance FBiGeom instance handle
1043  * \param x Point from which ray is fired
1044  * \param y Point from which ray is fired
1045  * \param z Point from which ray is fired
1046  * \param dir_x Direction in which ray is fired
1047  * \param dir_y Direction in which ray is fired
1048  * \param dir_z Direction in which ray is fired
1049  * \param intersect_entity_handles Entities intersected by ray
1050  * \param intersect_entity_handles_allocated Allocated size of
1051  * intersections array
1052  * \param intersect_entity_hangles_size Occupied size of intersections array
1053  * \param storage_order Storage order of coordinates passed back
1054  * \param intersect_coords Coordinates of intersections
1055  * \param intersect_coords_allocated Allocated size of coordinates array
1056  * \param intersect_coords_size Occupied size of coordinates array
1057  * \param param_coords Distances along ray of intersections
1058  * \param param_coords_allocated Allocated size of param_coords array
1059  * \param param_coords_size Occupied size of param_coords array
1060  * \param *err Pointer to error type returned from function
1061  */
1063  double x,
1064  double y,
1065  double z,
1066  double dir_x,
1067  double dir_y,
1068  double dir_z,
1069  iBase_EntityHandle** intersect_entity_handles,
1070  int* intersect_entity_handles_allocated,
1071  int* intersect_entity_hangles_size,
1072  int storage_order,
1073  double** intersect_coords,
1074  int* intersect_coords_allocated,
1075  int* intersect_coords_size,
1076  double** param_coords,
1077  int* param_coords_allocated,
1078  int* param_coords_size,
1079  int* err );
1080 
1081 /**\brief Intersect an array of rays with the model
1082  *
1083  * Intersect an array of rays with the model. Storage order passed in is
1084  * a member of the iBase_StorageOrder enumeration.
1085  * \param instance FBiGeom instance handle
1086  * \param storage_order Storage order of input coordinates
1087  * \param coords Points from which rays are fired
1088  * \param coords_size Number of points from which rays are fired
1089  * \param directions Directions in which rays are fired
1090  * \param directions_size Number of coordinates in directions array
1091  * \param intersect_entity_handles Entities intersected by ray
1092  * \param intersect_entity_handles_allocated Allocated size of intersections
1093  * array
1094  * \param intersect_entity_hangles_size Occupied size of intersections array
1095  * \param offset Offset[i] is offset into intersect_entity_handles of ith
1096  * ray
1097  * \param offset_allocated Allocated size of offset array
1098  * \param offset_size Occupied size of offset array
1099  * \param storage_order Storage order of coordinates passed back
1100  * \param intersect_coords Coordinates of intersections
1101  * \param intersect_coords_allocated Allocated size of coordinates array
1102  * \param intersect_coords_size Occupied size of coordinates array
1103  * \param param_coords Distances along ray of intersections
1104  * \param param_coords_allocated Allocated size of param_coords array
1105  * \param param_coords_size Occupied size of param_coords array
1106  * \param *err Pointer to error type returned from function
1107  */
1109  int storage_order,
1110  const double* coords,
1111  int coords_size,
1112  const double* directions,
1113  int directions_size,
1114  iBase_EntityHandle** intersect_entity_handles,
1115  int* intersect_entity_handles_allocated,
1116  int* intersect_entity_hangles_size,
1117  int** offset,
1118  int* offset_allocated,
1119  int* offset_size,
1120  double** intersect_coords,
1121  int* intersect_coords_allocated,
1122  int* intersect_coords_size,
1123  double** param_coords,
1124  int* param_coords_allocated,
1125  int* param_coords_size,
1126  int* err );
1127 
1128 /**\brief Get the entity on which a point is located
1129  *
1130  * Get the entity on which a point is located
1131  * \param instance FBiGeom instance handle
1132  * \param x Point being queried
1133  * \param y Point being queried
1134  * \param z Point being queried
1135  * \param entity_handle Entity on which point is located
1136  * \param *err Pointer to error type returned from function
1137  */
1138 void FBiGeom_getPntClsf( FBiGeom_Instance instance,
1139  double x,
1140  double y,
1141  double z,
1142  iBase_EntityHandle* entity_handle,
1143  int* err );
1144 
1145 /**\brief Get the entities on which points are located
1146  *
1147  * Get the entities on which points are located. Storage orders should be
1148  * members of the iBase_StorageOrder enumeration.
1149  * \param instance FBiGeom instance handle
1150  * \param storage_order Storage order of coordinates in coords
1151  * \param coords Points being queried
1152  * \param coords_size Number of entries in coords array
1153  * \param entity_handles Entities on which points are located
1154  * \param entity_handles_allocated Allocated size of entity_handles array
1155  * \param entity_handles_size Occupied size of entity_handles array
1156  * \param *err Pointer to error type returned from function
1157  */
1159  int storage_order,
1160  double const* coords,
1161  int coords_size,
1162  iBase_EntityHandle** entity_handles,
1163  int* entity_handles_allocated,
1164  int* entity_handles_size,
1165  int* err );
1166 
1167 /**\brief Get the sense of a face with respect to a region
1168  *
1169  * Get the sense of a face with respect to a region. Sense returned is -1,
1170  * 0, or 1, representing "reversed", "both", or "forward". "both" sense
1171  * indicates that face bounds the region once with each sense.
1172  * \param instance FBiGeom instance handle
1173  * \param face Face being queried
1174  * \param region Region being queried
1175  * \param sense_out Sense of face with respect to region
1176  * \param *err Pointer to error type returned from function
1177  */
1180  iBase_EntityHandle region,
1181  int* sense_out,
1182  int* err );
1183 
1184 /**\brief Get the senses of an array of faces with respect to an array of
1185  * regions
1186  *
1187  * Get the senses of an array of faces with respect to an array of regions.
1188  * Sense returned is -1, 0, or 1, representing "reversed", "both", or
1189  * "forward". "both" sense indicates that face bounds the region once with
1190  * each sense.
1191  * \param instance FBiGeom instance handle
1192  * \param face_handles Faces being queried
1193  * \param face_handles_size Size of face handles array
1194  * \param region_handles Regions being queried
1195  * \param region_handles_size Size of region handles array
1196  * \param sense Senses of faces with respect to regions
1197  * \param sense_allocated Allocated size of senses array
1198  * \param sense_size Occupied size of senses array
1199  * \param *err Pointer to error type returned from function
1200  */
1202  iBase_EntityHandle const* face_handles,
1203  int face_handles_size,
1204  iBase_EntityHandle const* region_handles,
1205  int region_handles_size,
1206  int** sense,
1207  int* sense_allocated,
1208  int* sense_size,
1209  int* err );
1210 
1211 /**\brief Get the sense of an edge with respect to a face
1212  *
1213  * Get the sense of an edge with respect to a face. Sense returned is -1,
1214  * 0, or 1, representing "reversed", "both", or "forward". "both" sense
1215  * indicates that edge bounds the face once with each sense.
1216  * \param instance FBiGeom instance handle
1217  * \param edge Edge being queried
1218  * \param face Face being queried
1219  * \param sense_out Sense of edge with respect to face
1220  * \param *err Pointer to error type returned from function
1221  */
1225  int* sense_out,
1226  int* err );
1227 
1228 /**\brief Get the senses of an array of edges with respect to an array of
1229  * faces
1230  *
1231  * Get the senses of an array of edges with respect to an array of faces.
1232  * Sense returned is -1, 0, or 1, representing "reversed", "both", or
1233  * "forward". "both" sense indicates that edge bounds the face once with
1234  * each sense.
1235  * \param instance FBiGeom instance handle
1236  * \param edge_handles Edges being queried
1237  * \param edge_handles_size Size of edge handles array
1238  * \param face_handles Faces being queried
1239  * \param face_handles_size Size of face handles array
1240  * \param sense Senses of faces with respect to regions
1241  * \param sense_allocated Allocated size of senses array
1242  * \param sense_size Occupied size of senses array
1243  * \param *err Pointer to error type returned from function
1244  */
1246  iBase_EntityHandle const* edge_handles,
1247  int edge_handles_size,
1248  iBase_EntityHandle const* face_handles,
1249  int face_handles_size,
1250  int** sense,
1251  int* sense_allocated,
1252  int* sense_size,
1253  int* err );
1254 
1255 /**\brief Get the sense of a vertex pair with respect to an edge
1256  *
1257  * Get the sense of a vertex pair with respect to an edge. Sense returned
1258  * is -1, 0, or 1, representing "reversed", "both", or "forward". "both"
1259  * sense indicates that vertices are identical and that vertex bounds both
1260  * sides of the edge.
1261  * \param instance FBiGeom instance handle
1262  * \param edge Edge being queried
1263  * \param vertex1 First vertex being queried
1264  * \param vertex2 Second vertex being queried
1265  * \param sense_out Sense of vertex pair with respect to edge
1266  * \param *err Pointer to error type returned from function
1267  */
1270  iBase_EntityHandle vertex1,
1271  iBase_EntityHandle vertex2,
1272  int* sense_out,
1273  int* err );
1274 
1275 /**\brief Get the senses of vertex pair with respect to a edges
1276  *
1277  * Get the senses of vertex pairs with respect to edges. Sense returned is
1278  * -1, 0, or 1, representing "reversed", "both", or "forward". "both" sense
1279  * indicates that both vertices in pair are identical and that vertex bounds
1280  * both sides of the edge.
1281  * \param instance FBiGeom instance handle
1282  * \param edge_handles Edges being queried
1283  * \param edge_handles_size Number of edges being queried
1284  * \param vertex_handles_1 First vertex being queried
1285  * \param vertex_handles_1_size Number of vertices in vertices array
1286  * \param vertex_handles_2 Second vertex being queried
1287  * \param vertex_handles_2_size Number of vertices in vertices array
1288  * \param sense Sense of vertex pair with respect to edge
1289  * \param sense_allocated Allocated size of sense array
1290  * \param sense_size Occupied size of sense array
1291  * \param *err Pointer to error type returned from function
1292  */
1294  iBase_EntityHandle const* edge_handles,
1295  int edge_handles_size,
1296  iBase_EntityHandle const* vertex_handles_1,
1297  int veretx_handles_1_size,
1298  iBase_EntityHandle const* vertex_handles_2,
1299  int vertex_handles_2_size,
1300  int** sense,
1301  int* sense_allocated,
1302  int* sense_size,
1303  int* err );
1304 
1305 /**\brief Return the measure (length, area, or volume) of entities
1306  *
1307  * Return the measure (length, area, or volume) of entities
1308  * \param instance FBiGeom instance handle
1309  * \param entity_handles Array of entities being queried
1310  * \param entity_handles_size Number of entities in entity array
1311  * \param measures Measures of entities being queried
1312  * \param measures_allocated Allocated size of measures array
1313  * \param measures_size Occupied size of measures array
1314  * \param *err Pointer to error type returned from function
1315  */
1316 void FBiGeom_measure( FBiGeom_Instance instance,
1317  iBase_EntityHandle const* entity_handles,
1318  int entity_handles_size,
1319  double** measures,
1320  int* measures_allocated,
1321  int* measures_size,
1322  int* err );
1323 
1324 /**\brief Get the geometric type of a face
1325  *
1326  * Get the geometric type of a face. Specific types depend on
1327  * implementation.
1328  * \param instance FBiGeom instance handle
1329  * \param face_handle Face being queried
1330  * \param face_type Face type
1331  * \param face_type_length Length of face type string
1332  */
1333 void FBiGeom_getFaceType( FBiGeom_Instance instance,
1334  iBase_EntityHandle face_handle,
1335  char* face_type,
1336  int* err,
1337  int* face_type_length );
1338 
1339 /**\brief Return whether interface has information about parameterization
1340  *
1341  * Return whether an interface has information about parameterization (!=0)
1342  * or not (0)
1343  * \param instance FBiGeom instance handle
1344  * \param is_parametric If non-zero, interface has information about
1345  * parameterization
1346  * \param *err Pointer to error type returned from function
1347  */
1348 void FBiGeom_getParametric( FBiGeom_Instance instance, int* is_parametric, int* err );
1349 
1350 /**\brief Return whether an entity has a parameterization
1351  *
1352  * Return whether an entity has a parameterization (=1) or not (=0)
1353  * \param instance FBiGeom instance handle
1354  * \param entity_handle Entity being queried
1355  * \param is_parametric Entity has a parameterization (=1) or not (=0)
1356  * \param *err Pointer to error type returned from function
1357  */
1358 void FBiGeom_isEntParametric( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* parametric, int* err );
1359 
1360 /**\brief Return whether entities have parameterizations
1361  *
1362  * Return whether entities have parameterizations (=1) or not (=0)
1363  * \param instance FBiGeom instance handle
1364  * \param entity_handles Entities being queried
1365  * \param entity_handles_size Number of entities being queried
1366  * \param is_parametric entity_handles[i] has a parameterization (=1) or
1367  * not (=0)
1368  * \param is_parametric_allocated Allocated size of is_parametric array
1369  * \param is_parametric_size Occupied size of is_parametric array
1370  * \param *err Pointer to error type returned from function
1371  */
1373  iBase_EntityHandle const* entity_handles,
1374  int entity_handles_size,
1375  int** is_parametric,
1376  int* is_parametric_allocated,
1377  int* is_parametric_size,
1378  int* err );
1379 
1380 /**\brief Return coordinate position at specified parametric position on
1381  * entity
1382  *
1383  * Return coordinate position at specified parametric position on entity.
1384  * \param instance FBiGeom instance handle
1385  * \param entity_handle Entity being queried
1386  * \param u Parametric coordinate being queried
1387  * \param v Parametric coordinate being queried
1388  * \param x Spatial coordinate at parametric position being queried
1389  * \param y Spatial coordinate at parametric position being queried
1390  * \param z Spatial coordinate at parametric position being queried
1391  * \param *err Pointer to error type returned from function
1392  */
1394  iBase_EntityHandle entity_handle,
1395  double u,
1396  double v,
1397  double* x,
1398  double* y,
1399  double* z,
1400  int* err );
1401 
1402 /**\brief Return coordinate positions at specified parametric position(s)
1403  * on entity(ies)
1404  *
1405  * Return coordinate positions at specified parametric position(s) on
1406  * entity(ies). If either the number of entities or number of parametric
1407  * coordinate pairs is unity, then all points or entities are queried for
1408  * that entity or point, respectively, otherwise each point corresponds to
1409  * each entity. storage_order should be a value in the iBase_StorageOrder
1410  * enum.
1411  * \param instance FBiGeom instance handle
1412  * \param entity_handles Entities being queried
1413  * \param entity_handles_size Number of entities being queried
1414  * \param storage_order Storage order of uv coordinates input and xyz
1415  * coordinate output
1416  * \param uv Coordinates being queried
1417  * \param uv_size Number of coordinates in array
1418  * \param coordinates Coordinates of parametric positions
1419  * \param coordinates_allocated Allocated size of coordinates array
1420  * \param coordinates_size Occupied size of coordinates array
1421  * \param *err Pointer to error type returned from function
1422  */
1424  iBase_EntityHandle const* entity_handles,
1425  int entity_handles_size,
1426  int storage_order,
1427  double const* uv,
1428  int uv_size,
1429  double** coordinates,
1430  int* coordinates_allocated,
1431  int* coordinates_size,
1432  int* err );
1433 
1434 /**\brief Return coordinate position at specified parametric position on
1435  * entity
1436  *
1437  * Return coordinate position at specified parametric position on entity.
1438  * \param instance FBiGeom instance handle
1439  * \param entity_handle Entity being queried
1440  * \param u Parametric coordinate being queried
1441  * \param x Spatial coordinate at parametric position being queried
1442  * \param y Spatial coordinate at parametric position being queried
1443  * \param z Spatial coordinate at parametric position being queried
1444  * \param *err Pointer to error type returned from function
1445  */
1446 void FBiGeom_getEntUtoXYZ( FBiGeom_Instance instance,
1447  iBase_EntityHandle entity_handle,
1448  double u,
1449  double* x,
1450  double* y,
1451  double* z,
1452  int* err );
1453 
1454 /**\brief Return coordinate positions at specified parametric position(s)
1455  * on entity(ies)
1456  *
1457  * Return coordinate positions at specified parametric position(s) on
1458  * entity(ies). If either the number of entities or number of parametric
1459  * coordinate pairs is unity, then all points or entities are queried for
1460  * that entity or point, respectively, otherwise each point corresponds to
1461  * each entity. storage_order should be a value in the iBase_StorageOrder
1462  * enum.
1463  * \param instance FBiGeom instance handle
1464  * \param entity_handles Entities being queried
1465  * \param entity_handles_size Number of entities being queried
1466  * \param storage_order Storage order of resulting coordinates
1467  * \param uv Coordinates being queried
1468  * \param uv_size Number of coordinates in array
1469  * \param coordinates Coordinates of parametric positions
1470  * \param coordinates_allocated Allocated size of coordinates array
1471  * \param coordinates_size Occupied size of coordinates array
1472  * \param *err Pointer to error type returned from function
1473  */
1474 void FBiGeom_getArrUtoXYZ( FBiGeom_Instance instance,
1475  iBase_EntityHandle const* entity_handles,
1476  int entity_handles_size,
1477  double const* u,
1478  int u_size,
1479  int storage_order,
1480  double** on_coords,
1481  int* on_coords_allocated,
1482  int* on_coords_size,
1483  int* err );
1484 
1485 /**\brief Return parametric position at specified spatial position on
1486  * entity
1487  *
1488  * Return parametric position at specified spatial position on entity
1489  * \param instance FBiGeom instance handle
1490  * \param entity_handle Entity being queried
1491  * \param x Spatial coordinate being queried
1492  * \param y Spatial coordinate being queried
1493  * \param z Spatial coordinate being queried
1494  * \param u Parametric coordinate at spatial position being queried
1495  * \param v Parametric coordinate at spatial position being queried
1496  * \param *err Pointer to error type returned from function
1497  */
1499  iBase_EntityHandle entity_handle,
1500  double x,
1501  double y,
1502  double z,
1503  double* u,
1504  double* v,
1505  int* err );
1506 
1507 /**\brief Return parametric position at specified spatial position on
1508  * entity
1509  *
1510  * Return parametric position at specified spatial position on entity
1511  * \param instance FBiGeom instance handle
1512  * \param entity_handle Entity being queried
1513  * \param x Spatial coordinate being queried
1514  * \param y Spatial coordinate being queried
1515  * \param z Spatial coordinate being queried
1516  * \param u Parametric coordinate at spatial position being queried
1517  * \param *err Pointer to error type returned from function
1518  */
1519 void FBiGeom_getEntXYZtoU( FBiGeom_Instance instance,
1520  iBase_EntityHandle entity_handle,
1521  double x,
1522  double y,
1523  double z,
1524  double* u,
1525  int* err );
1526 
1527 /**\brief Return parametric positions at specified spatial position(s) on
1528  * entity(ies)
1529  * Return parametric positions at specified spatial position(s) on
1530  * entity(ies). If either the number of entities or number of spatial
1531  * coordinate triples is unity, then all points or entities are queried for
1532  * that entity or point, respectively, otherwise each point corresponds to
1533  * each entity. storage_order should be a value in the iBase_StorageOrder
1534  * enum.
1535  * \param instance FBiGeom instance handle
1536  * \param entity_handles Entities being queried
1537  * \param entity_handles_size Number of entities being queried
1538  * \param storage_order Storage order of spatial coordinates input
1539  * \param coordinates Coordinates being queried
1540  * \param coordinates_size Number of coordinates in array
1541  * \param uv Coordinates of parametric positions
1542  * \param uv_allocated Allocated size of coordinates array
1543  * \param uv_size Occupied size of coordinates array
1544  * \param *err Pointer to error type returned from function
1545  */
1547  iBase_EntityHandle const* entity_handles,
1548  int entity_handles_size,
1549  int storage_order,
1550  double const* coordinates,
1551  int coordinates_size,
1552  double** uv,
1553  int* uv_allocated,
1554  int* uv_size,
1555  int* err );
1556 
1557 /**\brief Return spatial positions at specified parametric position(s) on
1558  * entity(ies)
1559  *
1560  * Return spatial positions at specified parametric position(s) on
1561  * entity(ies). If either the number of entities or number of spatial
1562  * coordinate triples is unity, then all points or entities are queried for
1563  * that entity or point, respectively, otherwise each point corresponds to
1564  * each entity. storage_order should be a value in the iBase_StorageOrder
1565  * enum.
1566  * \param instance FBiGeom instance handle
1567  * \param entity_handles Entities being queried
1568  * \param entity_handles_size Number of entities being queried
1569  * \param storage_order Storage order of spatial coordinates input
1570  * \param coordinates Coordinates being queried
1571  * \param coordinates_size Number of coordinates in array
1572  * \param u Coordinates of parametric positions
1573  * \param u_allocated Allocated size of coordinates array
1574  * \param u_size Occupied size of coordinates array
1575  * \param *err Pointer to error type returned from function
1576  */
1577 void FBiGeom_getArrXYZtoU( FBiGeom_Instance instance,
1578  iBase_EntityHandle const* entity_handles,
1579  int entity_handles_size,
1580  int storage_order,
1581  double const* coordinates,
1582  int coordinates_size,
1583  double** u,
1584  int* u_allocated,
1585  int* u_size,
1586  int* err );
1587 
1588 /**\brief Return parametric position at specified spatial position on
1589  * entity, based on parametric position hint
1590  *
1591  * Return parametric position at specified spatial position on entity,
1592  * based on parametric position hint. For this function, u and v are input
1593  * with parameters from which to start search. Typically this will reduce
1594  * the search time for new parametric coordinates.
1595  * \param instance FBiGeom instance handle
1596  * \param entity_handle Entity being queried
1597  * \param x Spatial coordinate being queried
1598  * \param y Spatial coordinate being queried
1599  * \param z Spatial coordinate being queried
1600  * \param u Parametric coordinate at spatial position being queried
1601  * \param v Parametric coordinate at spatial position being queried
1602  * \param *err Pointer to error type returned from function
1603  */
1605  iBase_EntityHandle entity_handle,
1606  double x,
1607  double y,
1608  double z,
1609  double* u,
1610  double* v,
1611  int* err );
1612 
1613 /**\brief Return parametric positions at specified spatial position(s) on
1614  * entity(ies), based on parametric position hints
1615  * Return parametric positions at specified spatial position(s) on
1616  * entity(ies), based on parametric position hints. If either the number of
1617  * entities or number of spatial coordinate triples is unity, then all
1618  * points or entities are queried for that entity or point, respectively,
1619  * otherwise each point corresponds to each entity. storage_order should be
1620  * a value in the iBase_StorageOrder enum.
1621  * \param instance FBiGeom instance handle
1622  * \param entity_handles Entities being queried
1623  * \param entity_handles_size Number of entities being queried
1624  * \param storage_order Storage order of spatial coordinates input
1625  * \param coordinates Coordinates being queried
1626  * \param coordinates_size Number of coordinates in array
1627  * \param uv Coordinates of parametric positions
1628  * \param uv_allocated Allocated size of coordinates array
1629  * \param uv_size Occupied size of coordinates array
1630  * \param *err Pointer to error type returned from function
1631  */
1633  iBase_EntityHandle const* entity_handles,
1634  int entity_handles_size,
1635  int storage_order,
1636  double const* coords,
1637  int coords_size,
1638  double** uv,
1639  int* uv_allocated,
1640  int* uv_size,
1641  int* err );
1642 
1643 /**\brief Get parametric range of entity
1644  *
1645  * Get parametric range of entity
1646  * \param instance FBiGeom instance handle
1647  * \param entity_handle Entity being queried
1648  * \param u_min Minimum parametric coordinate for entity
1649  * \param v_min Minimum parametric coordinate for entity
1650  * \param u_max Maximum parametric coordinate for entity
1651  * \param v_max Maximum parametric coordinate for entity
1652  * \param *err Pointer to error type returned from function
1653  */
1655  iBase_EntityHandle entity_handle,
1656  double* u_min,
1657  double* v_min,
1658  double* u_max,
1659  double* v_max,
1660  int* err );
1661 
1662 /**\brief Get parametric range of entity
1663  *
1664  * Get parametric range of entity
1665  * \param instance FBiGeom instance handle
1666  * \param entity_handle Entity being queried
1667  * \param u_min Minimum parametric coordinate for entity
1668  * \param u_max Maximum parametric coordinate for entity
1669  * \param *err Pointer to error type returned from function
1670  */
1671 void FBiGeom_getEntURange( FBiGeom_Instance instance,
1672  iBase_EntityHandle entity_handle,
1673  double* u_min,
1674  double* u_max,
1675  int* err );
1676 
1677 /**\brief Get parametric range of entities
1678  *
1679  * Get parametric range of entities
1680  * \param instance FBiGeom instance handle
1681  * \param entity_handles Entities being queried
1682  * \param entity_handles_size Number of entities being queried
1683  * \param storage_order Storage order of parametric coordinates being
1684  * returned
1685  * \param uv_min Minimum parametric coordinate for entities
1686  * \param uv_min_allocated Allocated size of minimum parametric coordinate
1687  * array
1688  * \param uv_min_size Occupied size of minimum parametric coordinate array
1689  * \param uv_max Maximum parametric coordinate for entities
1690  * \param uv_max_allocated Allocated size of maximum parametric coordinate
1691  * array
1692  * \param uv_max_size Occupied size of maximum parametric coordinate array
1693  * \param *err Pointer to error type returned from function
1694  */
1696  iBase_EntityHandle const* entity_handles,
1697  int entity_handles_size,
1698  int storage_order,
1699  double** uv_min,
1700  int* uv_min_allocated,
1701  int* uv_min_size,
1702  double** uv_max,
1703  int* uv_max_allocated,
1704  int* uv_max_size,
1705  int* err );
1706 
1707 /**\brief Get parametric range of entities
1708  *
1709  * Get parametric range of entities
1710  * \param instance FBiGeom instance handle
1711  * \param entity_handles Entities being queried
1712  * \param entity_handles_size Number of entities being queried
1713  * \param storage_order Storage order of parametric coordinates being
1714  * returned
1715  * \param u_min Minimum parametric coordinate for entities
1716  * \param u_min_allocated Allocated size of minimum parametric coordinate
1717  * array
1718  * \param u_min_size Occupied size of minimum parametric coordinate array
1719  * \param u_max Maximum parametric coordinate for entities
1720  * \param u_max_allocated Allocated size of maximum parametric coordinate
1721  * array
1722  * \param u_max_size Occupied size of maximum parametric coordinate array
1723  * \param *err Pointer to error type returned from function
1724  */
1725 void FBiGeom_getArrURange( FBiGeom_Instance instance,
1726  iBase_EntityHandle const* entity_handles,
1727  int entity_handles_size,
1728  double** u_min,
1729  int* u_min_allocated,
1730  int* u_min_size,
1731  double** u_max,
1732  int* u_max_allocated,
1733  int* u_max_size,
1734  int* err );
1735 
1736 /**\brief Return the face parametric coordinates for a parametric position
1737  * on a bounding edge
1738  *
1739  * Return the face parametric coordinates for a parametric position on a
1740  * bounding edge
1741  * \param instance FBiGeom instance handle
1742  * \param edge_handle Edge being queried
1743  * \param face_handle Face being queried
1744  * \param in_u Parametric position on edge
1745  * \param u Corresponding parametric position on face
1746  * \param v Corresponding parametric position on face
1747  * \param *err Pointer to error type returned from function
1748  */
1749 void FBiGeom_getEntUtoUV( FBiGeom_Instance instance,
1750  iBase_EntityHandle edge_handle,
1751  iBase_EntityHandle face_handle,
1752  double in_u,
1753  double* u,
1754  double* v,
1755  int* err );
1756 
1757 /**\brief Return parametric coordinates on face of vertex position
1758  *
1759  * Return parametric coordinates on face of vertex position
1760  * \param instance FBiGeom instance handle
1761  * \param vertex_handle Vertex being queried
1762  * \param face_handle Face being queried
1763  * \param u Corresponding parametric position on face
1764  * \param v Corresponding parametric position on face
1765  * \param *err Pointer to error type returned from function
1766  */
1767 void FBiGeom_getVtxToUV( FBiGeom_Instance instance,
1768  iBase_EntityHandle vertex_handle,
1769  iBase_EntityHandle face_handle,
1770  double* u,
1771  double* v,
1772  int* err );
1773 
1774 /**\brief Return parametric coordinates on edge of vertex position
1775  *
1776  * Return parametric coordinates on edge of vertex position
1777  * \param instance FBiGeom instance handle
1778  * \param vertex_handle Vertex being queried
1779  * \param edge_handle Edge being queried
1780  * \param u Corresponding parametric position on face
1781  * \param *err Pointer to error type returned from function
1782  */
1783 void FBiGeom_getVtxToU( FBiGeom_Instance instance,
1784  iBase_EntityHandle vertex_handle,
1785  iBase_EntityHandle edge_handle,
1786  double* u,
1787  int* err );
1788 
1789 /**\brief Return the face parametric coordinates for a parametric position
1790  * on bounding edges
1791  *
1792  * Return the face parametric coordinates for a parametric position on
1793  * bounding edges
1794  * \param instance FBiGeom instance handle
1795  * \param edge_handles Edges being queried
1796  * \param edge_handles_size Number of edges being queried
1797  * \param face_handles Faces being queried
1798  * \param face_handles_size Number of faces being queried
1799  * \param u_in Parametric positions on edges
1800  * \param u_in_size Number of parametric positions on edges
1801  * \param storage_order Storage order of coordinates returned
1802  * \param uv Corresponding parametric positions on faces
1803  * \param uv_allocated Allocated size of parameter array
1804  * \param uv_size Occupied size of parameter array
1805  * \param *err Pointer to error type returned from function
1806  */
1807 void FBiGeom_getArrUtoUV( FBiGeom_Instance instance,
1808  iBase_EntityHandle const* edge_handles,
1809  int edge_handles_size,
1810  iBase_EntityHandle const* face_handles,
1811  int face_handles_size,
1812  double const* u_in,
1813  int u_in_size,
1814  int storage_order,
1815  double** uv,
1816  int* uv_allocated,
1817  int* uv_size,
1818  int* err );
1819 
1820 /**\brief Return parametric coordinates on faces of vertex positions
1821  *
1822  * Return parametric coordinates on faces of vertex positions
1823  * \param instance FBiGeom instance handle
1824  * \param vertex_handles Vertices being queried
1825  * \param vertex_handles_size Number of vertices being queried
1826  * \param face_handles Faces being queried
1827  * \param face_handles_size Number of faces being queried
1828  * \param storage_order Storage order of coordinates returned
1829  * \param uv Corresponding parametric positions on faces
1830  * \param uv_allocated Allocated size of positions array
1831  * \param uv_size Occupied size of positions array
1832  * \param *err Pointer to error type returned from function
1833  */
1835  iBase_EntityHandle const* vertex_handles,
1836  int vertex_handles_size,
1837  iBase_EntityHandle const* face_handles,
1838  int face_handles_size,
1839  int storage_order,
1840  double** uv,
1841  int* uv_allocated,
1842  int* uv_size,
1843  int* err );
1844 
1845 /**\brief Return parametric coordinates on edges of vertex positions
1846  *
1847  * Return parametric coordinates on edges of vertex positions
1848  * \param instance FBiGeom instance handle
1849  * \param vertex_handles Vertices being queried
1850  * \param vertex_handles_size Number of vertices being queried
1851  * \param edge_handles Edges being queried
1852  * \param edge_handles_size Number of edges being queried
1853  * \param u Corresponding parametric positions on faces
1854  * \param u_allocated Allocated size of positions array
1855  * \param u_size Occupied size of positions array
1856  * \param *err Pointer to error type returned from function
1857  */
1858 void FBiGeom_getVtxArrToU( FBiGeom_Instance instance,
1859  iBase_EntityHandle const* vertex_handles,
1860  int vertex_handles_size,
1861  iBase_EntityHandle const* edge_handles,
1862  int edge_handles_size,
1863  double** u,
1864  int* u_allocated,
1865  int* u_size,
1866  int* err );
1867 
1868 /**\brief Return the normal at a specified parametric position
1869  *
1870  * Return the normal at a specified parametric position
1871  * \param instance FBiGeom instance handle
1872  * \param entity_handle Entity being queried
1873  * \param u Parametric position being queried
1874  * \param v Parametric position being queried
1875  * \param nrml_i Normal at specified position
1876  * \param nrml_j Normal at specified position
1877  * \param nrml_k Normal at specified position
1878  * \param *err Pointer to error type returned from functino
1879  */
1880 void FBiGeom_getEntNrmlUV( FBiGeom_Instance instance,
1881  iBase_EntityHandle entity_handle,
1882  double u,
1883  double v,
1884  double* nrml_i,
1885  double* nrml_j,
1886  double* nrml_k,
1887  int* err );
1888 
1889 /**\brief Return the normals at specified parametric positions
1890  *
1891  * Return the normals at specified parametric positions. If either the
1892  * number of entities or number of spatial coordinate pairs is unity, then
1893  * all points or entities are queried for that entity or point,
1894  * respectively, otherwise each point corresponds to each entity.
1895  * storage_order should be a value in the iBase_StorageOrder enum.
1896  * \param instance FBiGeom instance handle
1897  * \param face_handle Faces being queried
1898  * \param face_handles_size Number of faces being queried
1899  * \param storage_order Storage order of coordinates input and output
1900  * \param parameters Parametric coordinates being queried
1901  * \param parameters_size Number of coordinates in array
1902  * \param normals Coordinates of normals at specified positions
1903  * \param normals_allocated Allocated size of normals array
1904  * \param normals_size Occupied size of normals array
1905  * \param *err Pointer to error type returned from function
1906  */
1907 void FBiGeom_getArrNrmlUV( FBiGeom_Instance instance,
1908  iBase_EntityHandle const* face_handles,
1909  int face_handles_size,
1910  int storage_order,
1911  double const* parameters,
1912  int parameters_size,
1913  double** normals,
1914  int* normals_allocated,
1915  int* normals_size,
1916  int* err );
1917 
1918 /**\brief Return the tangent at a specified parametric position
1919  *
1920  * Return the tangent at a specified parametric position
1921  * \param instance FBiGeom instance handle
1922  * \param entity_handle Entity being queried
1923  * \param u Parametric position being queried
1924  * \param tgnt_i Tangent at specified position
1925  * \param tgnt_j Tangent at specified position
1926  * \param tgnt_k Tangent at specified position
1927  * \param *err Pointer to error type returned from function
1928  */
1929 void FBiGeom_getEntTgntU( FBiGeom_Instance instance,
1930  iBase_EntityHandle entity_handle,
1931  double u,
1932  double* tgnt_i,
1933  double* tgnt_j,
1934  double* tgnt_k,
1935  int* err );
1936 
1937 /**\brief Return the tangents at specified parametric positions
1938  *
1939  * Return the tangents at specified parametric positions. If either the
1940  * number of entities or number of spatial coordinates is unity, then all
1941  * points or entities are queried for that entity or point, respectively,
1942  * otherwise each point corresponds to each entity. storage_order should be
1943  * a value in the iBase_StorageOrder enum.
1944  * \param instance FBiGeom instance handle
1945  * \param edge_handle Edges being queried
1946  * \param edge_handles_size Number of faces being queried
1947  * \param storage_order Storage order of coordinates output
1948  * \param parameters Parametric coordinates being queried
1949  * \param parameters_size Number of coordinates in array
1950  * \param tangents Coordinates of tangents at specified positions
1951  * \param tangents_allocated Allocated size of tangents array
1952  * \param tangents_size Occupied size of tangents array
1953  * \param *err Pointer to error type returned from function
1954  */
1955 void FBiGeom_getArrTgntU( FBiGeom_Instance instance,
1956  iBase_EntityHandle const* edge_handles,
1957  int edge_handles_size,
1958  int storage_order,
1959  double const* parameters,
1960  int parameters_size,
1961  double** tangents,
1962  int* tangents_allocated,
1963  int* tangents_size,
1964  int* err );
1965 
1966 /**\brief Get the first derivative of a face at specified parametric
1967  * position
1968  *
1969  * Get the first derivative of a face at specified parametric position.
1970  * \param instance FBiGeom instance handle
1971  * \param entity_handle Entity being queried
1972  * \param u Parametric position being queried
1973  * \param v Parametric position being queried
1974  * \param dvrt_u Pointer to coordinates of derivative with respect to u at
1975  * specified position returned from function
1976  * \param dvrt_u_allocated Allocated size of dvrt_u array
1977  * \param dvrt_u_size Occupied size of dvrt_u array
1978  * \param dvrt_v Pointer to coordinates of derivative with respect to v at
1979  * specified position returned from function
1980  * \param dvrt_v_allocated Allocated size of dvrt_v array
1981  * \param dvrt_v_size Occupied size of dvrt_v array
1982  * \param *err Pointer to error type returned from function
1983  */
1985  iBase_EntityHandle entity_handle,
1986  double u,
1987  double v,
1988  double** drvt_u,
1989  int* drvt_u_allocated,
1990  int* drvt_u_size,
1991  double** drvt_v,
1992  int* dvrt_v_allocated,
1993  int* dvrt_v_size,
1994  int* err );
1995 
1996 /**\brief Get the first derivatives of faces at specified parametric
1997  * positions
1998  *
1999  * Get the first derivatives of faces at specified parametric positions.
2000  * storage_order should be a value in the iBase_StorageOrder enum.
2001  * \param instance FBiGeom instance handle
2002  * \param entity_handles Array of entity handles being queried
2003  * \param entity_handles_size Number of entities in entity_handles array
2004  * \param storage_order Storage order of coordinates input and output
2005  * \param uv Parametric coordinates being queried
2006  * \param uv_size Number of coordinates in array
2007  * \param dvrt_u Pointer to array of coordinates of derivative with respect
2008  * to u at specified position returned from function
2009  * \param dvrt_u_allocated Allocated size of dvrt_u array
2010  * \param dvrt_u_size Occupied size of dvrt_u array
2011  * \param u_offset Pointer to array of offsets for dvrt_u returned from
2012  * function
2013  * \param u_offset_allocated Pointer to allocated size of u_offset array
2014  * \param u_offset_size Pointer to occupied size of u_offset array
2015  * \param dvrt_v Pointer to array of coordinates of derivative with respect
2016  * to v at specified position returned from function
2017  * \param dvrt_v_allocated Allocated size of dvrt_v array
2018  * \param dvrt_v_size Occupied size of dvrt_v array
2019  * \param v_offset Pointer to array of offsets for dvrt_v returned from
2020  * function
2021  * \param v_offset_allocated Pointer to allocated size of v_offset array
2022  * \param v_offset_size Pointer to occupied size of v_offset array
2023  * \param *err Pointer to error type returned from function
2024  */
2026  iBase_EntityHandle const* entity_handles,
2027  int entity_handles_size,
2028  int storage_order,
2029  double const* uv,
2030  int uv_size,
2031  double** dvrt_u,
2032  int* dvrt_u_allocated,
2033  int* dvrt_u_size,
2034  int** u_offset,
2035  int* u_offset_allocated,
2036  int* u_offset_size,
2037  double** dvrt_v,
2038  int* dvrt_v_allocated,
2039  int* dvrt_v_size,
2040  int** v_offset,
2041  int* v_offset_allocated,
2042  int* v_offset_size,
2043  int* err );
2044 
2045 /**\brief Get the second derivative of a face at specified parametric
2046  * position
2047  *
2048  * Get the second derivative of a face at specified parametric position.
2049  * \param instance FBiGeom instance handle
2050  * \param entity_handle Entity being queried
2051  * \param u Parametric position being queried
2052  * \param v Parametric position being queried
2053  * \param dvrt_uu Pointer to coordinates of derivative with respect to u at
2054  * specified position returned from function
2055  * \param dvrt_uu_allocated Allocated size of dvrt_uu array
2056  * \param dvrt_uu_size Occupied size of dvrt_uu array
2057  * \param dvrt_vv Pointer to coordinates of derivative with respect to v at
2058  * specified position returned from function
2059  * \param dvrt_vv_allocated Allocated size of dvrt_vv array
2060  * \param dvrt_vv_size Occupied size of dvrt_vv array
2061  * \param dvrt_uv Pointer to coordinates of derivative with respect to u and
2062  * v at specified position returned from function
2063  * \param dvrt_uv_allocated Allocated size of dvrt_uv array
2064  * \param dvrt_uv_size Occupied size of dvrt_uv array
2065  * \param *err Pointer to error type returned from function
2066  */
2068  iBase_EntityHandle entity_handle,
2069  double u,
2070  double v,
2071  double** drvt_uu,
2072  int* drvt_uu_allocated,
2073  int* drvt_uu_size,
2074  double** drvt_vv,
2075  int* dvrt_vv_allocated,
2076  int* dvrt_vv_size,
2077  double** drvt_uv,
2078  int* dvrt_uv_allocated,
2079  int* dvrt_uv_size,
2080  int* err );
2081 
2082 /**\brief Get the second derivatives of faces at specified parametric
2083  * positions
2084  *
2085  * Get the second derivatives of faces at specified parametric positions.
2086  * storage_order should be a value in the iBase_StorageOrder enum.
2087  * \param instance FBiGeom instance handle
2088  * \param entity_handles Array of entity handles being queried
2089  * \param entity_handles_size Number of entities in entity_handles array
2090  * \param storage_order Storage order of coordinates input and output
2091  * \param uv Parametric coordinates being queried
2092  * \param uv_size Number of coordinates in array
2093  * \param dvrt_uu Pointer to array of coordinates of derivative with respect
2094  * to u at specified position returned from function
2095  * \param dvrt_uu_allocated Allocated size of dvrt_uu array
2096  * \param dvrt_uu_size Occupied size of dvrt_uu array
2097  * \param uu_offset Pointer to array of offsets for dvrt_uu returned from
2098  * function
2099  * \param uu_offset_allocated Pointer to allocated size of uu_offset array
2100  * \param uu_offset_size Pointer to occupied size of uu_offset array
2101  * \param dvrt_vv Pointer to array of coordinates of derivative with respect
2102  * to v at specified position returned from function
2103  * \param dvrt_vv_allocated Allocated size of dvrt_vv array
2104  * \param dvrt_vv_size Occupied size of dvrt_vv array
2105  * \param vv_offset Pointer to array of offsets for dvrt_vv returned from
2106  * function
2107  * \param vv_offset_allocated Pointer to allocated size of vv_offset array
2108  * \param vv_offset_size Pointer to occupied size of vv_offset array
2109  * \param dvrt_uv Pointer to array of coordinates of derivative with respect
2110  * to u and v at specified position returned from function
2111  * \param dvrt_uv_allocated Allocated size of dvrt_uv array
2112  * \param dvrt_uv_size Occupied size of dvrt_uv array
2113  * \param uv_offset Pointer to array of offsets for dvrt_uv returned from
2114  * function
2115  * \param uv_offset_allocated Pointer to allocated size of uv_offset array
2116  * \param uv_offset_size Pointer to occupied size of uv_offset array
2117  * \param *err Pointer to error type returned from function
2118  */
2120  iBase_EntityHandle const* entity_handles,
2121  int entity_handles_size,
2122  int storage_order,
2123  double const* uv,
2124  int uv_size,
2125  double** dvtr_uu,
2126  int* dvrt_uu_allocated,
2127  int* dvrt_uu_size,
2128  int** uu_offset,
2129  int* uu_offset_allocated,
2130  int* uu_offset_size,
2131  double** dvtr_vv,
2132  int* dvrt_vv_allocated,
2133  int* dvrt_vv_size,
2134  int** vv_offset,
2135  int* vv_offset_allocated,
2136  int* vv_offset_size,
2137  double** dvrt_uv,
2138  int* dvrt_uv_allocated,
2139  int* dvrt_uv_size,
2140  int** uv_offset,
2141  int* uv_offset_allocated,
2142  int* uv_offset_size,
2143  int* err );
2144 
2145 /**\brief Get the two principle curvature vectors for a face at a
2146  * parametric position
2147  *
2148  * Get the two principle curvature vectors for a face at a parametric
2149  * position. Magnitudes of vectors are curvature, directions are
2150  * directions of principal curvatures.
2151  * \param instance FBiGeom instance handle
2152  * \param face_handle Face being queried
2153  * \param u Parametric position being queried
2154  * \param v Parametric position being queried
2155  * \param cvtr1_i Maximum curvature vector
2156  * \param cvtr1_j Maximum curvature vector
2157  * \param cvtr1_k Maximum curvature vector
2158  * \param cvtr2_i Minimum curvature vector
2159  * \param cvtr2_j Minimum curvature vector
2160  * \param cvtr2_k Minimum curvature vector
2161  * \param *err Pointer to error type returned from function
2162  */
2163 void FBiGeom_getFcCvtrUV( FBiGeom_Instance instance,
2164  iBase_EntityHandle face_handle,
2165  double u,
2166  double v,
2167  double* cvtr1_i,
2168  double* cvtr1_j,
2169  double* cvtr1_k,
2170  double* cvtr2_i,
2171  double* cvtr2_j,
2172  double* cvtr2_k,
2173  int* err );
2174 
2175 /**\brief Get the curvature(s) on face(s) at given parametric position(s)
2176  *
2177  * Get the curvature(s) on face(s) at given parametric position(s). If
2178  * either the number of faces or number of coordinate pairs is unity, then
2179  * all points or entities are queried for that entity or point,
2180  * respectively, otherwise each point corresponds to each entity.
2181  * storage_order should be a value in the iBase_StorageOrder enum.
2182  * \param instance FBiGeom instance handle
2183  * \param face_handles Face(s) being queried
2184  * \param face_handles_size Number of entities being queried
2185  * \param storage_order Storage order of uv coordinates
2186  * \param uv Starting parametric coordinates
2187  * \param uv_size Number of values in uv array
2188  * \param cvtr_1 First principal curvatures
2189  * \param cvtr_1_allocated Allocated size of first curvature array
2190  * \param cvtr_1_size Occupied size of first curvature array
2191  * \param cvtr_2 Second principal curvatures
2192  * \param cvtr_2_allocated Allocated size of second curvature array
2193  * \param cvtr_2_size Occupied size of second curvature array
2194  * \param *err Pointer to error type returned from function
2195  */
2197  iBase_EntityHandle const* face_handles,
2198  int face_handles_size,
2199  int storage_order,
2200  double const* uv,
2201  int uv_size,
2202  double** cvtr_1,
2203  int* cvtr_1_allocated,
2204  int* cvtr_1_size,
2205  double** cvtr_2,
2206  int* cvtr_2_allocated,
2207  int* cvtr_2_size,
2208  int* err );
2209 
2210 /**\brief Return whether an entity is periodic
2211  *
2212  * Return whether an entity is periodic (=1) or not (=0) in the u and v
2213  * directions.
2214  * \param instance FBiGeom instance handle
2215  * \param entity_handle Entity being queried
2216  * \param in_u Entity is periodic in u direction (=1) or not (=0)
2217  * \param in_v Entity is periodic in v direction (=1) or not (=0)
2218  * \param *err Pointer to error type returned from function
2219  */
2221  iBase_EntityHandle entity_handle,
2222  int* in_u,
2223  int* in_v,
2224  int* err );
2225 
2226 /**\brief Return whether entities are periodic
2227  *
2228  * Return whether entities are periodic (=1) or not (=0) in the u and v
2229  * directions.
2230  * \param instance FBiGeom instance handle
2231  * \param entity_handles Entities being queried
2232  * \param entity_handles_size Number of entities being queried
2233  * \param in_uv Array of pairs of integers representing whether
2234  * entity_handles[i] is periodic (=1) or not (=0) in u and v
2235  * directions
2236  * \param in_uv_allocated Allocated size of in_uv array
2237  * \param in_uv_size Occupied size of in_uv array
2238  * \param *err Pointer to error type returned from function
2239  */
2241  iBase_EntityHandle const* entity_handles,
2242  int entity_handles_size,
2243  int** in_uv,
2244  int* in_uv_allocated,
2245  int* in_uv_size,
2246  int* err );
2247 
2248 /**\brief Return whether a face is degenerate
2249  *
2250  * Return whether a face is degenerate (=1) or not (=0).
2251  * \param instance FBiGeom instance handle
2252  * \param face_handle Face being queried
2253  * \param is_degenerate Face is degenerate (=1) or not (=0)
2254  * \param *err Pointer to error type returned from function
2255  */
2256 void FBiGeom_isFcDegenerate( FBiGeom_Instance instance, iBase_EntityHandle face_handle, int* is_degenerate, int* err );
2257 
2258 /**\brief Return whether faces are degenerate
2259  *
2260  * Return whether faces are degenerate (=1) or not (=0).
2261  * \param instance FBiGeom instance handle
2262  * \param face_handles Faces being queried
2263  * \param face_handles_size Number of faces being queried
2264  * \param degenerate face_handles[i] is degenerate (=1) or not (=0)
2265  * \param degenerate_allocated Allocated size of degenerate array
2266  * \param degenerate_size Occupied size of degenerate array
2267  * \param *err Pointer to error type returned from function
2268  */
2270  iBase_EntityHandle const* face_handles,
2271  int face_handles_size,
2272  int** degenerate,
2273  int* degenerate_allocated,
2274  int* degenerate_size,
2275  int* err );
2276 
2277 /**\brief Get the tolerance of the instance
2278  *
2279  * Get the tolerance at the modeler level. type is an integer representing
2280  * the type of the tolerance, where 0 = no tolerance information,
2281  * 1 = modeler-level tolerance, 2 = entity-level tolerances. If type is 1,
2282  * tolerance returns the modeler-level tolerance. If type is 2, use
2283  * FBiGeom_getEntTolerance to query the tolerance on a per-entity basis.
2284  * \param instance FBiGeom instance handle
2285  * \param type Type of tolerance used by the modeler
2286  * \param tolerance Modeler-level tolerance, if any
2287  * \param *err Pointer to error type returned from function
2288  */
2289 void FBiGeom_getTolerance( FBiGeom_Instance instance, int* type, double* tolerance, int* err );
2290 
2291 /**\brief Get the tolerance of the specified entity
2292  *
2293  * Get the tolerance of the specified entity.
2294  * \param instance FBiGeom instance handle
2295  * \param entity_handle Entity handle being queried
2296  * \param tolerance Pointer to tolerance returned from function
2297  * \param *err Pointer to error type returned from function
2298  */
2300  iBase_EntityHandle entity_handle,
2301  double* tolerance,
2302  int* err );
2303 
2304 /**\brief Get the tolerances of the specified entities
2305  *
2306  * Get the tolerances of the specified entities.
2307  * \param instance FBiGeom instance handle
2308  * \param entity_handles Array of entity handles being queried
2309  * \param entity_handles_size Number of entities in entity_handles array
2310  * \param tolerance Pointer to array of tolerances returned from function
2311  * \param tolerance_allocated Pointer to allocated size of tolerance array
2312  * \param tololerance_size Pointer to occupied size of tolerance array
2313  * \param *err Pointer to error type returned from function
2314  */
2316  iBase_EntityHandle const* entity_handles,
2317  int entity_handles_size,
2318  double** tolerances,
2319  int* tolerances_allocated,
2320  int* tolerances_size,
2321  int* err );
2322 
2323 /**\brief Initialize an iterator over specified entity type
2324  *
2325  * Initialize an iterator over specified entity type for a specified set or
2326  * instance. Iterator returned can be used as input to functions returning
2327  * the entity for the iterator. If all entities of a specified type are to
2328  * be iterated, specify iBase_ALL_TYPES. Specified type must be a value in
2329  * the iBase_EntityType enumeration.
2330  * \param instance FBiGeom instance handle
2331  * \param entity_set_handle Entity set being iterated
2332  * \param requested_entity_type Type of entity to iterate
2333  * \param entity_iterator Pointer to iterator returned from function
2334  * \param *err Pointer to error type returned from function
2335  */
2336 void FBiGeom_initEntIter( FBiGeom_Instance instance,
2337  iBase_EntitySetHandle entity_set_handle,
2338  int requested_entity_type,
2339  iBase_EntityIterator* entity_iterator,
2340  int* err );
2341 
2342 /**\brief Initialize an array iterator over specified entity type and size
2343  *
2344  * Initialize an array iterator over specified entity type and size for a
2345  * specified set or instance. Iterator returned can be used as input to
2346  * functions returning entities for the iterator. If all entities of a
2347  * specified type are to be iterated, specify iBase_ALL_TYPES. Specified
2348  * type must be a value in the iBase_EntityType enumerations.
2349  * \param instance FBiGeom instance handle
2350  * \param entity_set_handle Entity set being iterated
2351  * \param requested_entity_type Type of entity to iterate
2352  * \param requested_array_size Size of chunks of handles returned for each
2353  * value of the iterator
2354  * \param entArr_iterator Pointer to iterator returned from function
2355  * \param *err Pointer to error type returned from function
2356  */
2358  iBase_EntitySetHandle entity_set_handle,
2359  int requested_entity_type,
2360  int requested_array_size,
2361  iBase_EntityArrIterator* entArr_iterator,
2362  int* err );
2363 
2364 /**\brief Get entity corresponding to an iterator and increment iterator
2365  *
2366  * Get the entity corresponding to an array iterator, and increment the
2367  * iterator. Also return whether the next value of the iterator has
2368  * an entity (if non-zero, next iterator value is the end of the
2369  * iteration).
2370  * \param instance FBiGeom instance handle
2371  * \param entity_iterator Iterator being queried
2372  * \param entity_handle Pointer to an entity handle corresponding to the
2373  * current value of iterator
2374  * \param has_data Pointer to a flag indicating if the value returned
2375  * in entity_handle is valid. A non-zero value indicates the value
2376  * is valid. A zero value indicates the value is NOT valid.
2377  * \param *err Pointer to error type returned from function
2378  */
2380  iBase_EntityIterator entity_iterator,
2381  iBase_EntityHandle* entity_handle,
2382  int* has_data,
2383  int* err );
2384 
2385 /**\brief Get entities contained in array iterator and increment iterator
2386  *
2387  * Get the entities contained in an array iterator, and increment the
2388  * iterator. Also return whether the next value of the iterator has
2389  * any entities (if non-zero, next iterator value is the end of the
2390  * iteration).
2391  * \param instance FBiGeom instance handle
2392  * \param entArr_iterator Iterator being queried
2393  * \param *entity_handles Pointer to array of entity handles contained in
2394  * current value of iterator
2395  * \param *entity_handles_allocated Pointer to allocated size of
2396  * entity_handles array
2397  * \param *entity_handles_size Pointer to occupied size of entity_handles
2398  * array
2399  * \param has_data Pointer to a flag indicating if the value(s) returned
2400  * in entity_handles are valid. A non-zero value indicates the
2401  * value(s) are valid. A zero value indicates the value(s) are NOT
2402  * valid.
2403  * \param *err Pointer to error type returned from function
2404  */
2406  iBase_EntityArrIterator entArr_iterator,
2407  iBase_EntityHandle** entity_handles,
2408  int* entity_handles_allocated,
2409  int* entity_handles_size,
2410  int* has_data,
2411  int* err );
2412 
2413 /**\brief Reset the iterator
2414  *
2415  * Reset the iterator
2416  * \param instance FBiGeom instance handle
2417  * \param entity_iterator Iterator to reset
2418  * \param *err Pointer to error type returned from function
2419  */
2420 void FBiGeom_resetEntIter( FBiGeom_Instance instance, iBase_EntityIterator entity_iterator, int* err );
2421 
2422 /**\brief Reset the array iterator
2423  *
2424  * Reset the array iterator
2425  * \param instance FBiGeom instance handle
2426  * \param entArr_iterator Iterator to reset
2427  * \param *err Pointer to error type returned from function
2428  */
2429 void FBiGeom_resetEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator entArr_iterator, int* err );
2430 
2431 /**\brief Destroy the specified iterator
2432  *
2433  * Destroy the specified iterator
2434  * \param instance FBiGeom instance handle
2435  * \param entity_iterator Iterator which gets destroyed
2436  * \param *err Pointer to error type returned from function
2437  */
2438 void FBiGeom_endEntIter( FBiGeom_Instance instance, iBase_EntityIterator entity_iterator, int* err );
2439 
2440 /**\brief Destroy the specified array iterator
2441  *
2442  * Destroy the specified array iterator
2443  * \param instance FBiGeom instance handle
2444  * \param entArr_iterator Iterator which gets destroyed
2445  * \param *err Pointer to error type returned from function
2446  */
2447 void FBiGeom_endEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator entArr_iterator, int* err );
2448 
2449 /**\brief Make a copy of the specified entity
2450  *
2451  * Make a copy of the specified entity
2452  * \param instance FBiGeom instance handle
2453  * \param source entity to be copied
2454  * \param copy the newly-created entity
2455  * \param *err Pointer to error type returned from function
2456  */
2457 void FBiGeom_copyEnt( FBiGeom_Instance instance, iBase_EntityHandle source, iBase_EntityHandle* copy, int* err );
2458 
2459 /**\brief Sweep (extrude) an entity about an axis
2460  *
2461  * Sweep (extrude) an entity by the given angle about the given axis.
2462  *
2463  * \param instance FBiGeom instance handle
2464  * \param geom_entity the entity to rotate
2465  * \param angle the rotational angle, in degrees
2466  * \param axis_x x coordinate of the axis
2467  * \param axis_y y coordinate of the axis
2468  * \param axis_z z coordinate of the axis
2469  * \param geom_entity2 Pointer to new entity handle returned from function
2470  * \param *err Pointer to error type returned from function
2471  */
2473  iBase_EntityHandle geom_entity,
2474  double angle,
2475  double axis_x,
2476  double axis_y,
2477  double axis_z,
2478  iBase_EntityHandle* geom_entity2,
2479  int* err );
2480 
2481 /**\brief Delete all entities and sets
2482  *
2483  * Delete all entities and sets
2484  * \param instance FBiGeom instance handle
2485  * \param *err Pointer to error type returned from function
2486  */
2487 void FBiGeom_deleteAll( FBiGeom_Instance instance, int* err );
2488 
2489 /**\brief Delete specified entity
2490  *
2491  * Delete specified entity
2492  * \param instance FBiGeom instance handle
2493  * \param entity_handle Entity to be deleted
2494  * \param *err Pointer to error type returned from function
2495  */
2496 void FBiGeom_deleteEnt( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* err );
2497 
2498 /**\brief Create a sphere
2499  *
2500  * Create a sphere of the specified radius centered on the origin.
2501  * \param instance FBiGeom instance handle
2502  * \param radius radius of the sphere
2503  * \param geom_entity Pointer to new entity handle returned from function
2504  * \param *err Pointer to error type returned from function
2505  */
2506 void FBiGeom_createSphere( FBiGeom_Instance instance, double radius, iBase_EntityHandle* geom_entity, int* err );
2507 
2508 /**\brief Create a prism
2509  *
2510  * Create a prism parallel to the z-axis and centered at the origin (so
2511  * that its z-coordinate extents are +height/2 and -height/2).
2512  * \param instance FBiGeom instance handle
2513  * \param height height of new prism
2514  * \param n_sides number of sides of new prism
2515  * \param major_rad major radius of new prism
2516  * \param minor_rad minor radius of new prism
2517  * \param geom_entity Pointer to new entity handle returned from function
2518  * \param *err Pointer to error type returned from function
2519  */
2520 void FBiGeom_createPrism( FBiGeom_Instance instance,
2521  double height,
2522  int n_sides,
2523  double major_rad,
2524  double minor_rad,
2525  iBase_EntityHandle* geom_entity,
2526  int* err );
2527 
2528 /**\brief Create an axis-oriented box
2529  *
2530  * Create an axis-oriented box of the given dimensions, centered at the
2531  * origin.
2532  * \param instance FBiGeom instance handle
2533  * \param x x dimension of new box
2534  * \param y y dimension of new box
2535  * \param z z dimension of new box
2536  * \param geom_entity Pointer to new entity handle returned from function
2537  * \param *err Pointer to error type returned from function
2538  */
2539 void FBiGeom_createBrick( FBiGeom_Instance instance,
2540  double x,
2541  double y,
2542  double z,
2543  iBase_EntityHandle* geom_entity,
2544  int* err );
2545 
2546 /**\brief Create a cylinder
2547  *
2548  * Create a cylinder parallel to the z-axis and centered at the origin (so
2549  * that its z-coordinate extents are +height/2 and -height/2).
2550  * \param instance FBiGeom instance handle
2551  * \param height The height of the cylinder.
2552  * \param major_rad The x-axis radius
2553  * \param minor_rad The y-axis radius. If minor_rad is 0, the cylinder will
2554  * be circular (as if minor_rad == major_rad).
2555  * \param geom_entity Pointer to new entity handle returned from function
2556  * \param *err Pointer to error type returned from function
2557  */
2559  double height,
2560  double major_rad,
2561  double minor_rad,
2562  iBase_EntityHandle* geom_entity,
2563  int* err );
2564 
2565 /**\brief Create a cone or tapered cylinder
2566  *
2567  * Create a cone parallel to the z-axis and centered at the origin (so that
2568  * its z-coordinate extents are +height/2 and -height/2). The 'base' of the
2569  * cylinder is at z = -height/2, and the top is at +height/2.
2570  * \param instance FBiGeom instance handle
2571  * \param height The height of the cone.
2572  * \param major_rad_base The x-axis radius at the base of the cylinder
2573  * \param minor_rad_base The y-axis radius at the base. If minor_rad_base
2574  * is 0, the cylinder will be circular (as if minor_rad_base ==
2575  * major_rad_base)
2576  * \param rad_top The x-axis radius at the top of the cone. The y-axis
2577  * radius at the top of the cone will be inferred to keep the aspect
2578  * ratio of the top of the cone the same as the bottom. If rad_top is
2579  * 0, the cone terminates at a point.
2580  * \param geom_entity Pointer to new entity handle returned from function
2581  * \param *err Pointer to error type returned from function
2582  */
2583 void FBiGeom_createCone( FBiGeom_Instance instance,
2584  double height,
2585  double major_rad_base,
2586  double minor_rad_base,
2587  double rad_top,
2588  iBase_EntityHandle* geom_entity,
2589  int* err );
2590 
2591 /**\brief Create a torus
2592  *
2593  * Create a torus centered on the origin and encircling the z-axis.
2594  * \param instance FBiGeom instance handle
2595  * \param major_rad The distance from the origin to the center of the
2596  * torus's circular cross-section.
2597  * \param minor_rad The radius of the cross-section.
2598  * \param geom_entity Pointer to new entity handle returned from function
2599  * \param *err Pointer to error type returned from function
2600  */
2601 void FBiGeom_createTorus( FBiGeom_Instance instance,
2602  double major_rad,
2603  double minor_rad,
2604  iBase_EntityHandle* geom_entity,
2605  int* err );
2606 
2607 /**\brief Move an entity by the given vector
2608  *
2609  * Move an entity by translating it along the given vector.
2610  * \param instance FBiGeom instance handle
2611  * \param geom_entity the entity to move
2612  * \param x x coordinate of the vector
2613  * \param y y coordinate of the vector
2614  * \param z z coordinate of the vector
2615  * \param *err Pointer to error type returned from function
2616  */
2617 void FBiGeom_moveEnt( FBiGeom_Instance instance,
2618  iBase_EntityHandle geom_entity,
2619  double x,
2620  double y,
2621  double z,
2622  int* err );
2623 
2624 /**\brief Rotate an entity about an axis
2625  *
2626  * Rotate an entity by the given angle about the given axis.
2627  * \param instance FBiGeom instance handle
2628  * \param geom_entity the entity to rotate
2629  * \param angle the rotational angle, in degrees
2630  * \param axis_x x coordinate of the axis
2631  * \param axis_y y coordinate of the axis
2632  * \param axis_z z coordinate of the axis
2633  * \param *err Pointer to error type returned from function
2634  */
2635 void FBiGeom_rotateEnt( FBiGeom_Instance instance,
2636  iBase_EntityHandle geom_entity,
2637  double angle,
2638  double axis_x,
2639  double axis_y,
2640  double axis_z,
2641  int* err );
2642 
2643 /**\brief Reflect an entity across a plane
2644  *
2645  * Reflect an entity across the given plane
2646  * \param instance FBiGeom instance handle
2647  * \param geom_entity the entity to reflect,
2648  * \param point_x x coordinate of the point that the reflecting plane goes though
2649  * \param point_y y coordinate of the point that the reflecting plane goes though
2650  * \param point_z z coordinate of the point that the reflecting plane goes though
2651  * \param plane_normal_x x coordinate of the plane's normal
2652  * \param plane_normal_y y coordinate of the plane's normal
2653  * \param plane_normal_z z coordinate of the plane's normal
2654  * \param *err Pointer to error type returned from function
2655  */
2656 void FBiGeom_reflectEnt( FBiGeom_Instance instance,
2657  iBase_EntityHandle geom_entity,
2658  double x,
2659  double y,
2660  double z,
2661  double plane_normal_x,
2662  double plane_normal_y,
2663  double plane_normal_z,
2664  int* err );
2665 
2666 /**\brief Scale an entity in the x, y, and z directions
2667  *
2668  * Scale an entity in the x, y, and z directions.
2669  * \param instance FBiGeom instance handle
2670  * \param geom_entity the entity to scale,
2671  * \param point_x x coordinate of the scaling center
2672  * \param point_y y coordinate of the scaling center
2673  * \param point_z z coordinate of the scaling center
2674  * \param scale_x factor to scale by in the x direction
2675  * \param scale_y factor to scale by in the y direction
2676  * \param scale_z factor to scale by in the z direction
2677  * \param *err Pointer to error type returned from function
2678  */
2679 void FBiGeom_scaleEnt( FBiGeom_Instance instance,
2680  iBase_EntityHandle geom_entity,
2681  double x,
2682  double y,
2683  double z,
2684  double scale_x,
2685  double scale_y,
2686  double scale_z,
2687  int* err );
2688 
2689 /**\brief Geometrically unite entities
2690  *
2691  * Geometrically unite the specified entities.
2692  * \param instance FBiGeom instance handle
2693  * \param geom_entities Array of entity handles being united
2694  * \param geom_entities_size Number of entities in geom_entities array
2695  * \param geom_entity Pointer to new entity handle returned from function
2696  * \param *err Pointer to error type returned from function
2697  */
2698 void FBiGeom_uniteEnts( FBiGeom_Instance instace,
2699  iBase_EntityHandle const* geom_entities,
2700  int geom_entities_size,
2701  iBase_EntityHandle* geom_entity,
2702  int* err );
2703 
2704 /**\brief Geometrically subtract one entity from another
2705  *
2706  * Geometrically subtract the entity tool from the entity blank.
2707  * \param instance FBiGeom instance handle
2708  * \param blank The entity to subtract from
2709  * \param tool The entity to subtract
2710  * \param geom_entity Pointer to new entity handle returned from function
2711  * \param *err Pointer to error type returned from function
2712  */
2713 void FBiGeom_subtractEnts( FBiGeom_Instance instance,
2714  iBase_EntityHandle blank,
2715  iBase_EntityHandle tool,
2716  iBase_EntityHandle* geom_entity,
2717  int* err );
2718 
2719 /**\brief Geometrically intersect a pair of entities
2720  *
2721  * Geometrically intersect a pair of entities.
2722  * \param instance FBiGeom instance handle
2723  * \param entity1 The entity to intersect
2724  * \param entity2 The entity to intersect
2725  * \param geom_entity Pointer to new entity handle returned from function
2726  * \param *err Pointer to error type returned from function
2727  */
2729  iBase_EntityHandle entity2,
2730  iBase_EntityHandle entity1,
2731  iBase_EntityHandle* geom_entity,
2732  int* err );
2733 
2734 /**\brief Section (cut) a region with a plane
2735  *
2736  * Section (cut) a region with a plane, retaining one of the pieces and
2737  * discarding the other.
2738  * \param instance FBiGeom instance handle
2739  * \param geom_entity The entity to section
2740  * \param plane_normal_x x coordinate of the plane's normal
2741  * \param plane_normal_y y coordinate of the plane's normal
2742  * \param plane_normal_z z coordinate of the plane's normal
2743  * \param offset Distance of the plane from the origin
2744  * \param reverse Keep the piece on the normal's side (=0) or not (=1)
2745  * \param geom_entity2 Pointer to new entity handle returned from function
2746  * \param *err Pointer to error type returned from function
2747  */
2748 void FBiGeom_sectionEnt( FBiGeom_Instance instance,
2749  iBase_EntityHandle geom_entity,
2750  double plane_normal_x,
2751  double plane_normal_y,
2752  double plane_normal_z,
2753  double offset,
2754  int reverse,
2755  iBase_EntityHandle* geom_entity2,
2756  int* err );
2757 
2758 /**\brief Imprint entities
2759  *
2760  * Imprint entities by merging coincident surfaces.
2761  * \param instance FBiGeom instance handle
2762  * \param geom_entities Array of entity handles being imprinted
2763  * \param geom_entities_size Number of entities in geom_entities array
2764  * \param *err Pointer to error type returned from function
2765  */
2766 void FBiGeom_imprintEnts( FBiGeom_Instance instance,
2767  iBase_EntityHandle const* geom_entities,
2768  int geom_entities_size,
2769  int* err );
2770 
2771 /**\brief Merge ents
2772  *
2773  * Merge entities of corresponding topology/geometry within the specified
2774  * tolerance.
2775  * \param instance FBiGeom instance handle
2776  * \param geom_entities Array of entity handles being imprinted
2777  * \param geom_entities_size Number of entities in geom_entities array
2778  * \param tolerance Tolerance within which entities are considered the same
2779  * \param *err Pointer to error type returned from function
2780  */
2781 void FBiGeom_mergeEnts( FBiGeom_Instance instance,
2782  iBase_EntityHandle const* geom_entities,
2783  int geom_entities_size,
2784  double tolerance,
2785  int* err );
2786 
2787 /**\brief Create an entity set
2788  *
2789  * Create an entity set, either ordered (isList=1) or unordered
2790  * (isList=0). Unordered entity sets can contain a given entity or
2791  * set only once.
2792  * \param instance FBiGeom instance handle
2793  * \param isList If non-zero, an ordered list is created, otherwise an
2794  * unordered set is created.
2795  * \param entity_set_created Entity set created by function
2796  * \param *err Pointer to error type returned from function
2797  */
2798 void FBiGeom_createEntSet( FBiGeom_Instance instance, int isList, iBase_EntitySetHandle* entity_set_created, int* err );
2799 
2800 /**\brief Destroy an entity set
2801  *
2802  * Destroy an entity set
2803  * \param instance FBiGeom instance handle
2804  * \param entity_set Entity set to be destroyed
2805  * \param *err Pointer to error type returned from function
2806  */
2807 void FBiGeom_destroyEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int* err );
2808 
2809 /**\brief Return whether a specified set is ordered or unordered
2810  *
2811  * Return whether a specified set is ordered (*is_list=1) or
2812  * unordered (*is_list=0)
2813  * \param instance FBiGeom instance handle
2814  * \param entity_set Entity set being queried
2815  * \param is_list Pointer to flag returned from function
2816  * \param *err Pointer to error type returned from function
2817  */
2818 void FBiGeom_isList( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int* is_list, int* err );
2819 
2820 /**\brief Get the number of entity sets contained in a set or interface
2821  *
2822  * Get the number of entity sets contained in a set or interface. If
2823  * a set is input which is not the root set, num_hops indicates the
2824  * maximum number of contained sets from entity_set_handle to one of the
2825  * contained sets, not inclusive of the contained set.
2826  * \param instance FBiGeom instance handle
2827  * \param entity_set_handle Entity set being queried
2828  * \param num_hops Maximum hops from entity_set_handle to contained set,
2829  * not inclusive of the contained set
2830  * \param num_sets Pointer to the number of sets returned from function
2831  * \param *err Pointer to error type returned from function
2832  */
2834  iBase_EntitySetHandle entity_set_handle,
2835  int num_hops,
2836  int* num_sets,
2837  int* err );
2838 
2839 /**\brief Get the entity sets contained in a set or interface
2840  *
2841  * Get the entity sets contained in a set or interface. If
2842  * a set is input which is not the root set, num_hops indicates the
2843  * maximum number of contained sets from entity_set_handle to one of the
2844  * contained sets, not inclusive of the contained set.
2845  * \param instance FBiGeom instance handle
2846  * \param entity_set_handle Entity set being queried
2847  * \param num_hops Maximum hops from entity_set_handle to contained set,
2848  * not inclusive of the contained set
2849  * \param *contained_set_handles Pointer to array of set handles returned
2850  * from function
2851  * \param contained_set_handles_allocated Pointer to allocated length of
2852  * contained_set_handles array
2853  * \param contained_set_handles_size Pointer to occupied length of
2854  * contained_set_handles array
2855  * \param *err Pointer to error type returned from function
2856  */
2857 void FBiGeom_getEntSets( FBiGeom_Instance instance,
2858  iBase_EntitySetHandle entity_set_handle,
2859  int num_hops,
2860  iBase_EntitySetHandle** contained_set_handles,
2861  int* contained_set_handles_allocated,
2862  int* contained_set_handles_size,
2863  int* err );
2864 
2865 /**\brief Add an entity to a set
2866  *
2867  * Add an entity to a set
2868  * \param instance FBiGeom instance handle
2869  * \param entity_handle The entity being added
2870  * \param entity_set Pointer to the set being added to
2871  * \param *err Pointer to error type returned from function
2872  */
2873 void FBiGeom_addEntToSet( FBiGeom_Instance instance,
2874  iBase_EntityHandle entity_handle,
2875  iBase_EntitySetHandle entity_set,
2876  int* err );
2877 
2878 /**\brief Remove an entity from a set
2879  *
2880  * Remove an entity from a set
2881  *
2882  * \param instance FBiGeom instance handle
2883  * \param entity_handle The entity being removed
2884  * \param entity_set Pointer to the set being removed from
2885  * \param *err Pointer to error type returned from function
2886  */
2888  iBase_EntityHandle entity_handle,
2889  iBase_EntitySetHandle entity_set,
2890  int* err );
2891 
2892 /**\brief Add an array of entities to a set
2893  *
2894  * Add an array of entities to a set
2895  * \param instance FBiGeom instance handle
2896  * \param entity_handles Array of entities being added
2897  * \param entity_handles_size Number of entities in entity_handles array
2898  * \param entity_set Pointer to the set being added to
2899  * \param *err Pointer to error type returned from function
2900  */
2902  const iBase_EntityHandle* entity_handles,
2903  int entity_handles_size,
2904  iBase_EntitySetHandle entity_set,
2905  int* err );
2906 
2907 /**\brief Remove an array of entities from a set
2908  *
2909  * Remove an array of entities from a set
2910  * \param instance FBiGeom instance handle
2911  * \param entity_handles Array of entities being remove
2912  * \param entity_handles_size Number of entities in entity_handles array
2913  * \param entity_set Pointer to the set being removed from
2914  * \param *err Pointer to error type returned from function
2915  */
2917  const iBase_EntityHandle* entity_handles,
2918  int entity_handles_size,
2919  iBase_EntitySetHandle entity_set,
2920  int* err );
2921 
2922 /**\brief Add an entity set to a set
2923  *
2924  * Add an entity set to a set
2925  * \param instance FBiGeom instance handle
2926  * \param entity_set_to_add The entity set being added
2927  * \param entity_set_handle Pointer to the set being added to
2928  * \param *err Pointer to error type returned from function
2929  */
2930 void FBiGeom_addEntSet( FBiGeom_Instance instance,
2931  iBase_EntitySetHandle entity_set_to_add,
2932  iBase_EntitySetHandle entity_set_handle,
2933  int* err );
2934 
2935 /**\brief Remove an entity set from a set
2936  *
2937  * Remove an entity set from a set
2938  * \param instance FBiGeom instance handle
2939  * \param entity_set_to_remove The entity set being removed
2940  * \param entity_set_handle Pointer to the set being removed from
2941  * \param *err Pointer to error type returned from function
2942  */
2943 void FBiGeom_rmvEntSet( FBiGeom_Instance instance,
2944  iBase_EntitySetHandle entity_set_to_remove,
2945  iBase_EntitySetHandle entity_set_handle,
2946  int* err );
2947 
2948 /**\brief Return whether an entity is contained in another set
2949  *
2950  * Return whether an entity is contained (*is_contained=1) or not
2951  * contained (*is_contained=0) in another set
2952  * \param instance FBiGeom instance handle
2953  * \param containing_entity_set Entity set being queried
2954  * \param contained_entity Entity potentially contained in
2955  * containing_entity_set
2956  * \param is_contained Pointer to flag returned from function
2957  * \param *err Pointer to error type returned from function
2958  */
2960  iBase_EntitySetHandle containing_entity_set,
2961  iBase_EntityHandle contained_entity,
2962  int* is_contained,
2963  int* err );
2964 
2965 /**\brief Return whether entities are contained in a set
2966  *
2967  * Return whether each entity is contained in the set.
2968  * \param instance iMesh instance handle
2969  * \param containing_entity_set Entity set being queried
2970  * \param entity_handles List of entities for which to check containment.
2971  * \param is_contained One value for each input entity, 1 if contained
2972  * in set, zero otherwise.
2973  * \param *err Pointer to error type returned from function
2974  */
2976  /*in*/ iBase_EntitySetHandle containing_set,
2977  /*in*/ const iBase_EntityHandle* entity_handles,
2978  /*in*/ int num_entity_handles,
2979  /*inout*/ int** is_contained,
2980  /*inout*/ int* is_contained_allocated,
2981  /*out*/ int* is_contained_size,
2982  /*out*/ int* err );
2983 
2984 /**\brief Return whether an entity set is contained in another set
2985  *
2986  * Return whether a set is contained (*is_contained=1) or not contained
2987  * (*is_contained=0) in another set
2988  * \param instance FBiGeom instance handle
2989  * \param containing_entity_set Entity set being queried
2990  * \param contained_entity_set Entity set potentially contained in
2991  * containing_entity_set
2992  * \param is_contained Pointer to flag returned from function
2993  * \param *err Pointer to error type returned from function
2994  */
2996  iBase_EntitySetHandle containing_entity_set,
2997  iBase_EntitySetHandle contained_entity_set,
2998  int* is_contained,
2999  int* err );
3000 
3001 /**\brief Add parent/child links between two sets
3002  *
3003  * Add parent/child links between two sets. Makes parent point to child
3004  * and child point to parent.
3005  * \param instance FBiGeom instance handle
3006  * \param parent_entity_set Pointer to parent set
3007  * \param child_entity_set Pointer to child set
3008  * \param *err Pointer to error type returned from function
3009  */
3010 void FBiGeom_addPrntChld( FBiGeom_Instance instance,
3011  iBase_EntitySetHandle parent_entity_set,
3012  iBase_EntitySetHandle child_entity_set,
3013  int* err );
3014 
3015 /**\brief Remove parent/child links between two sets
3016  *
3017  * Remove parent/child links between two sets.
3018  * \param instance FBiGeom instance handle
3019  * \param parent_entity_set Pointer to parent set
3020  * \param child_entity_set Pointer to child set
3021  * \param *err Pointer to error type returned from function
3022  */
3023 void FBiGeom_rmvPrntChld( FBiGeom_Instance instance,
3024  iBase_EntitySetHandle parent_entity_set,
3025  iBase_EntitySetHandle child_entity_set,
3026  int* err );
3027 
3028 /**\brief Return whether two sets are related by parent/child links
3029  *
3030  * Return whether two sets are related (*is_child=1) or not (*is_child=0)
3031  * by parent/child links
3032  * \param instance FBiGeom instance handle
3033  * \param parent_entity_set Pointer to parent set
3034  * \param child_entity_set Pointer to child set
3035  * \param is_child Pointer to flag returned from function
3036  * \param *err Pointer to error type returned from function
3037  */
3038 void FBiGeom_isChildOf( FBiGeom_Instance instance,
3039  iBase_EntitySetHandle parent_entity_set,
3040  iBase_EntitySetHandle child_entity_set,
3041  int* is_child,
3042  int* err );
3043 
3044 /**\brief Get the number of child sets linked from a specified set
3045  *
3046  * Get the number of child sets linked from a specified set. If num_hops
3047  * is not -1, this represents the maximum hops from entity_set to any
3048  * child in the count.
3049  * \param instance FBiGeom instance handle
3050  * \param entity_set Entity set being queried
3051  * \param num_hops Maximum hops from entity_set_handle to child set,
3052  * not inclusive of the child set
3053  * \param num_child Pointer to number of children returned from function
3054  * \param *err Pointer to error type returned from function
3055  */
3056 void FBiGeom_getNumChld( FBiGeom_Instance instance,
3057  iBase_EntitySetHandle entity_set,
3058  int num_hops,
3059  int* num_child,
3060  int* err );
3061 
3062 /**\brief Get the number of parent sets linked from a specified set
3063  *
3064  * Get the number of parent sets linked from a specified set. If num_hops
3065  * is not -1, this represents the maximum hops from entity_set to any
3066  * parent in the count.
3067  * \param instance FBiGeom instance handle
3068  * \param entity_set Entity set being queried
3069  * \param num_hops Maximum hops from entity_set_handle to parent set,
3070  * not inclusive of the parent set
3071  * \param num_parent Pointer to number of parents returned from function
3072  * \param *err Pointer to error type returned from function
3073  */
3074 void FBiGeom_getNumPrnt( FBiGeom_Instance instance,
3075  iBase_EntitySetHandle entity_set,
3076  int num_hops,
3077  int* num_parent,
3078  int* err );
3079 
3080 /**\brief Get the child sets linked from a specified set
3081  *
3082  * Get the child sets linked from a specified set. If num_hops
3083  * is not -1, this represents the maximum hops from entity_set to any
3084  * child.
3085  * \param instance FBiGeom instance handle
3086  * \param from_entity_set Entity set being queried
3087  * \param num_hops Maximum hops from entity_set_handle to child set,
3088  * not inclusive of the child set
3089  * \param *entity_set_handles Pointer to array of child sets
3090  * returned from function
3091  * \param *entity_set_handles_allocated Pointer to allocated size of
3092  * entity_set_handles array
3093  * \param *entity_set_handles_size Pointer to occupied size of
3094  * entity_set_handles array
3095  * \param *err Pointer to error type returned from function
3096  */
3097 void FBiGeom_getChldn( FBiGeom_Instance instance,
3098  iBase_EntitySetHandle from_entity_set,
3099  int num_hops,
3100  iBase_EntitySetHandle** entity_set_handles,
3101  int* entity_set_handles_allocated,
3102  int* entity_set_handles_size,
3103  int* err );
3104 
3105 /**\brief Get the parent sets linked from a specified set
3106  *
3107  * Get the parent sets linked from a specified set. If num_hops
3108  * is not -1, this represents the maximum hops from entity_set to any
3109  * parent.
3110  * \param instance FBiGeom instance handle
3111  * \param from_entity_set Entity set being queried
3112  * \param num_hops Maximum hops from entity_set_handle to parent set,
3113  * not inclusive of the parent set
3114  * \param *entity_set_handles Pointer to array of parent sets
3115  * returned from function
3116  * \param *entity_set_handles_allocated Pointer to allocated size of
3117  * entity_set_handles array
3118  * \param *entity_set_handles_size Pointer to occupied size of
3119  * entity_set_handles array
3120  * \param *err Pointer to error type returned from function
3121  */
3122 void FBiGeom_getPrnts( FBiGeom_Instance instance,
3123  iBase_EntitySetHandle from_entity_set,
3124  int num_hops,
3125  iBase_EntitySetHandle** entity_set_handles,
3126  int* entity_set_handles_allocated,
3127  int* entity_set_handles_size,
3128  int* err );
3129 
3130 /**\brief Create a tag with specified name, size, and type
3131  *
3132  * Create a tag with specified name, size, and type. Tag size is in
3133  * units of size of tag_type data types. Value input for tag type must be
3134  * value in iBase_TagType enumeration.
3135  * \param instance FBiGeom instance handle
3136  * \param tag_name Character string indicating tag name
3137  * \param tag_size Size of each tag value, in units of number of tag_type
3138  * entities
3139  * \param tag_type Data type for data stored in this tag
3140  * \param tag_handle Pointer to tag handle returned from function
3141  * \param *err Pointer to error type returned from function
3142  * \param tag_name_len Length of tag name string
3143  */
3144 void FBiGeom_createTag( FBiGeom_Instance instance,
3145  const char* tag_name,
3146  int tag_size,
3147  int tag_type,
3148  iBase_TagHandle* tag_handle,
3149  int* err,
3150  int tag_name_len );
3151 
3152 /**\brief Destroy a tag
3153  *
3154  * Destroy a tag. If forced is non-zero and entities still have values
3155  * set for this tag, tag is deleted anyway and those values disappear,
3156  * otherwise tag is not deleted.
3157  * \param instance FBiGeom instance handle
3158  * \param tag_handle Handle of tag to be deleted
3159  * \param forced If non-zero, delete the tag even if entities have values
3160  * set for that tag
3161  * \param *err Pointer to error type returned from function
3162  */
3163 void FBiGeom_destroyTag( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int forced, int* err );
3164 
3165 /**\brief Get the name for a given tag handle
3166  *
3167  * Get the name for a given tag handle
3168  * \param instance FBiGeom instance handle
3169  * \param tag_handle Tag handle being queried
3170  * \param name Pointer to character string to store name returned from
3171  * function
3172  * \param *err Pointer to error type returned from function
3173  * \param name_len Length of character string input to function
3174  */
3175 void FBiGeom_getTagName( FBiGeom_Instance instance, iBase_TagHandle tag_handle, char* name, int* err, int name_len );
3176 
3177 /**\brief Get size of a tag in units of numbers of tag data type
3178  *
3179  * Get size of a tag in units of numbers of tag data type
3180  * \param instance FBiGeom instance handle
3181  * \param tag_handle Handle of tag being queried
3182  * \param tag_size Pointer to tag size returned from function
3183  * \param *err Pointer to error type returned from function
3184  */
3185 void FBiGeom_getTagSizeValues( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err );
3186 
3187 /**\brief Get size of a tag in units of bytes
3188  *
3189  * Get size of a tag in units of bytes
3190  * \param instance FBiGeom instance handle
3191  * \param tag_handle Handle of tag being queried
3192  * \param tag_size Pointer to tag size returned from function
3193  * \param *err Pointer to error type returned from function
3194  */
3195 void FBiGeom_getTagSizeBytes( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err );
3196 
3197 /**\brief Get a the handle of an existing tag with the specified name
3198  *
3199  * Get a the handle of an existing tag with the specified name
3200  * \param instance FBiGeom instance handle
3201  * \param tag_name Name of tag being queried
3202  * \param tag_handle Pointer to tag handle returned from function
3203  * \param *err Pointer to error type returned from function
3204  * \param tag_name_len Length of tag name string
3205  */
3206 void FBiGeom_getTagHandle( FBiGeom_Instance instance,
3207  const char* tag_name,
3208  iBase_TagHandle* tag_handle,
3209  int* err,
3210  int tag_name_len );
3211 
3212 /**\brief Get the data type of the specified tag handle
3213  *
3214  * Get the data type of the specified tag handle. Tag type is a value in
3215  * the iBase_TagType enumeration.
3216  * \param instance FBiGeom instance handle
3217  * \param tag_handle Handle for the tag being queried
3218  * \param tag_type Pointer to tag type returned from function
3219  * \param *err Pointer to error type returned from function
3220  */
3221 void FBiGeom_getTagType( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_type, int* err );
3222 
3223 /**\brief Set a tag value of arbitrary type on an entity set
3224  *
3225  * Set a tag value of arbitrary type on an entity set. The tag data
3226  * is passed as void*. tag_value_size specifies the size of the memory
3227  * pointed to by tag_value in terms of bytes. Applications are free to
3228  * use this function to set data of any type, not just iBase_BYTES.
3229  * However, in all cases, the size specified by tag_value_size is
3230  * always in terms of bytes.
3231  *
3232  * \param instance FBiGeom instance handle
3233  * \param entity_set_handle Entity set on which tag is being set
3234  * \param tag_handle Tag being set on an entity set
3235  * \param tag_value Pointer to tag data being set on entity set
3236  * \param tag_value_size Size in bytes of tag data
3237  * \param *err Pointer to error type returned from function
3238  */
3240  iBase_EntitySetHandle entity_set_handle,
3241  const iBase_TagHandle tag_handle,
3242  const void* tag_value,
3243  const int tag_value_size,
3244  int* err );
3245 
3246 /**\brief Set a tag value of integer type on an entity set
3247  *
3248  * Set a tag value of integer type on an entity set.
3249  * \param instance FBiGeom instance handle
3250  * \param entity_set Entity set on which tag is being set
3251  * \param tag_handle Tag being set on an entity set
3252  * \param tag_value Tag value being set on entity set
3253  * \param *err Pointer to error type returned from function
3254  */
3256  iBase_EntitySetHandle entity_set,
3257  iBase_TagHandle tag_handle,
3258  int tag_value,
3259  int* err );
3260 
3261 /**\brief Set a tag value of double type on an entity set
3262  *
3263  * Set a tag value of double type on an entity set.
3264  * \param instance FBiGeom instance handle
3265  * \param entity_set Entity set on which tag is being set
3266  * \param tag_handle Tag being set on an entity set
3267  * \param tag_value Tag value being set on entity set
3268  * \param *err Pointer to error type returned from function
3269  */
3271  iBase_EntitySetHandle entity_set,
3272  iBase_TagHandle tag_handle,
3273  double tag_value,
3274  int* err );
3275 
3276 /**\brief Set a tag value of entity handle type on an entity set
3277  *
3278  * Set a tag value of entity handle type on an entity set.
3279  * \param instance FBiGeom instance handle
3280  * \param entity_set Entity set on which tag is being set
3281  * \param tag_handle Tag being set on an entity set
3282  * \param tag_value Tag value being set on entity set
3283  * \param *err Pointer to error type returned from function
3284  */
3286  iBase_EntitySetHandle entity_set,
3287  iBase_TagHandle tag_handle,
3288  iBase_EntityHandle tag_value,
3289  int* err );
3290 
3291 /**\brief Set a tag value of entity set handle type on an entity set
3292  *
3293  * Set a tag value of entity set handle type on an entity set.
3294  * \param instance FBiGeom instance handle
3295  * \param entity_set Entity set on which tag is being set
3296  * \param tag_handle Tag being set on an entity set
3297  * \param tag_value Tag value being set on entity set
3298  * \param *err Pointer to error type returned from function
3299  */
3301  iBase_EntitySetHandle entity_set,
3302  iBase_TagHandle tag_handle,
3303  iBase_EntitySetHandle tag_value,
3304  int* err );
3305 
3306 /**\brief Get the value of a tag of arbitrary type on an entity set
3307  *
3308  * Get the value of a tag of arbitrary type on an entity set. Tag data
3309  * is returned back as void*. tag_value_size specifies the size of the
3310  * memory pointed to by tag_value in terms of bytes. Applications may
3311  * use this function to get data of any type, not just iBase_BYTES.
3312  * However because this function supports data of arbitrary type,
3313  * in all cases the size specified by tag_value_size is always in terms
3314  * of bytes.
3315  *
3316  * \param instance FBiGeom instance handle
3317  * \param entity_set_handle Entity set on which tag is being set
3318  * \param tag_handle Tag being set on an entity set
3319  * \param *tag_value Pointer to tag data array being queried
3320  * \param *tag_value_allocated Pointer to tag data array allocated size
3321  * \param *tag_value_size Pointer to occupied size in bytes of tag data
3322  * array
3323  * \param *err Pointer to error type returned from function
3324  */
3326  iBase_EntitySetHandle entity_set_handle,
3327  iBase_TagHandle tag_handle,
3328  void** tag_value,
3329  int* tag_value_allocated,
3330  int* tag_value_size,
3331  int* err );
3332 
3333 /**\brief Get the value of a tag of integer type on an entity set
3334  *
3335  * Get the value of a tag of integer type on an entity set.
3336  * \param instance FBiGeom instance handle
3337  * \param entity_set Entity set on which tag is being set
3338  * \param tag_handle Tag being set on an entity set
3339  * \param *out_data Pointer to tag value returned from function
3340  * \param *err Pointer to error type returned from function
3341  */
3343  iBase_EntitySetHandle entity_set,
3344  iBase_TagHandle tag_handle,
3345  int* out_data,
3346  int* err );
3347 
3348 /**\brief Get the value of a tag of double type on an entity set
3349  *
3350  * Get the value of a tag of double type on an entity set.
3351  * \param instance FBiGeom instance handle
3352  * \param entity_set Entity set on which tag is being set
3353  * \param tag_handle Tag being set on an entity set
3354  * \param *out_data Pointer to tag value returned from function
3355  * \param *err Pointer to error type returned from function
3356  */
3358  iBase_EntitySetHandle entity_set,
3359  iBase_TagHandle tag_handle,
3360  double* out_data,
3361  int* err );
3362 
3363 /**\brief Get the value of a tag of entity handle type on an entity set
3364  *
3365  * Get the value of a tag of entity handle type on an entity set.
3366  * \param instance FBiGeom instance handle
3367  * \param entity_set Entity set on which tag is being set
3368  * \param tag_handle Tag being set on an entity set
3369  * \param *out_data Pointer to tag value returned from function
3370  * \param *err Pointer to error type returned from function
3371  */
3373  iBase_EntitySetHandle entity_set,
3374  iBase_TagHandle tag_handle,
3375  iBase_EntityHandle* out_data,
3376  int* err );
3377 
3378 /**\brief Get the value of a tag of entity set handle type on an entity set
3379  *
3380  * Get the value of a tag of entity set handle type on an entity set.
3381  * \param instance FBiGeom instance handle
3382  * \param entity_set Entity set on which tag is being set
3383  * \param tag_handle Tag being set on an entity set
3384  * \param *out_data Pointer to tag value returned from function
3385  * \param *err Pointer to error type returned from function
3386  */
3388  iBase_EntitySetHandle entity_set,
3389  iBase_TagHandle tag_handle,
3390  iBase_EntitySetHandle* out_data,
3391  int* err );
3392 
3393 /**\brief Get all the tags associated with a specified entity set
3394  *
3395  * Get all the tags associated with a specified entity set
3396  * \param instance FBiGeom instance handle
3397  * \param entity_set_handle Entity being queried
3398  * \param *tag_handles Pointer to array of tag_handles returned from
3399  * function
3400  * \param *tag_handles_allocated Pointer to allocated size of tag_handles
3401  * array
3402  * \param *tag_handles_size Pointer to occupied size of tag_handles array
3403  * \param *err Pointer to error type returned from function
3404  */
3406  iBase_EntitySetHandle entity_set_handle,
3407  iBase_TagHandle** tag_handles,
3408  int* tag_handles_allocated,
3409  int* tag_handles_size,
3410  int* err );
3411 
3412 /**\brief Remove a tag value from an entity set
3413  *
3414  * Remove a tag value from an entity set
3415  * \param instance FBiGeom instance handle
3416  * \param entity_set_handle Entity set from which tag is being removed
3417  * \param tag_handle Tag handle of tag being removed
3418  * \param *err Pointer to error type returned from function
3419  */
3420 void FBiGeom_rmvEntSetTag( FBiGeom_Instance instance,
3421  iBase_EntitySetHandle entity_set_handle,
3422  iBase_TagHandle tag_handle,
3423  int* err );
3424 
3425 /**\brief Get tag values of arbitrary type for an array of entities
3426  *
3427  * Get tag values of arbitrary type for an array of entities. Tag data
3428  * is returned as void*. tag_values_size specifies the size of the
3429  * memory pointed to by tag_values in terms of bytes. Applications may
3430  * use this function to get data of any type, not just iBase_BYTES.
3431  * However, because this function supports data of arbitrary type, in
3432  * all cases the size specified by tag_values_size always in terms of
3433  * bytes.
3434  *
3435  * \param instance FBiGeom instance handle
3436  * \param entity_handles Entity array on which tag is being set
3437  * \param entity_handles_size Number of entities in array
3438  * \param tag_handle Tag being set on an entity
3439  * \param *tag_values Pointer to tag data array being returned from
3440  * function. Note that the implicit INTERLEAVED storage
3441  * order rule applies (see section ITAPS Storage Orders)
3442  * \param tag_values_allocated Pointer to allocated size of tag data array
3443  * \param tag_values_size Pointer to occupied size in bytes of tag data
3444  * array
3445  * \param *err Pointer to error type returned from function
3446  */
3447 void FBiGeom_getArrData( FBiGeom_Instance instance,
3448  const iBase_EntityHandle* entity_handles,
3449  int entity_handles_size,
3450  iBase_TagHandle tag_handle,
3451  void** tag_values,
3452  int* tag_values_allocated,
3453  int* tag_values_size,
3454  int* err );
3455 
3456 /**\brief Get tag values of integer type for an array of entities
3457  *
3458  * Get tag values of integer type for an array of entities.
3459  * \param instance FBiGeom instance handle
3460  * \param entity_handles Entity array on which tag is being set
3461  * \param entity_handles_size Number of entities in array
3462  * \param tag_handle Tag being set on an entity
3463  * \param *tag_values Pointer to tag data array being returned from
3464  * function
3465  * \param tag_values_allocated Pointer to allocated size of tag data array
3466  * \param tag_values_size Pointer to occupied size of tag data array
3467  * \param *err Pointer to error type returned from function
3468  */
3470  const iBase_EntityHandle* entity_handles,
3471  int entity_handles_size,
3472  iBase_TagHandle tag_handle,
3473  int** tag_values,
3474  int* tag_values_allocated,
3475  int* tag_values_size,
3476  int* err );
3477 
3478 /**\brief Get tag values of double type for an array of entities
3479  *
3480  * Get tag values of double type for an array of entities.
3481  * \param instance FBiGeom instance handle
3482  * \param entity_handles Entity array on which tag is being set
3483  * \param entity_handles_size Number of entities in array
3484  * \param tag_handle Tag being set on an entity
3485  * \param *tag_values Pointer to tag data array being returned from
3486  * function
3487  * \param tag_values_allocated Pointer to allocated size of tag data array
3488  * \param tag_values_size Pointer to occupied size of tag data array
3489  * \param *err Pointer to error type returned from function
3490  */
3492  const iBase_EntityHandle* entity_handles,
3493  int entity_handles_size,
3494  iBase_TagHandle tag_handle,
3495  double** tag_values,
3496  int* tag_values_allocated,
3497  int* tag_values_size,
3498  int* err );
3499 
3500 /**\brief Get tag values of entity handle type for an array of entities
3501  *
3502  * Get tag values of entity handle type for an array of entities.
3503  * \param instance FBiGeom instance handle
3504  * \param entity_handles Entity array on which tag is being set
3505  * \param entity_handles_size Number of entities in array
3506  * \param tag_handle Tag being set on an entity
3507  * \param *tag_value Pointer to tag data array being returned from
3508  * function
3509  * \param tag_value_allocated Pointer to allocated size of tag data array
3510  * \param tag_value_size Pointer to occupied size of tag data array
3511  * \param *err Pointer to error type returned from function
3512  */
3513 void FBiGeom_getEHArrData( FBiGeom_Instance instance,
3514  const iBase_EntityHandle* entity_handles,
3515  int entity_handles_size,
3516  iBase_TagHandle tag_handle,
3517  iBase_EntityHandle** tag_value,
3518  int* tag_value_allocated,
3519  int* tag_value_size,
3520  int* err );
3521 
3522 /**\brief Get tag values of entity set handle type for an array of entities
3523  *
3524  * Get tag values of entity set handle type for an array of entities.
3525  * \param instance FBiGeom instance handle
3526  * \param entity_handles Entity array on which tag is being set
3527  * \param entity_handles_size Number of entities in array
3528  * \param tag_handle Tag being set on an entity
3529  * \param *tag_value Pointer to tag data array being returned from
3530  * function
3531  * \param tag_value_allocated Pointer to allocated size of tag data array
3532  * \param tag_value_size Pointer to occupied size of tag data array
3533  * \param *err Pointer to error type returned from function
3534  */
3536  const iBase_EntityHandle* entity_handles,
3537  int entity_handles_size,
3538  iBase_TagHandle tag_handle,
3539  iBase_EntitySetHandle** tag_value,
3540  int* tag_value_allocated,
3541  int* tag_value_size,
3542  int* err );
3543 
3544 /**\brief Set tag values of arbitrary type on an array of entities
3545  *
3546  * Set tag values of arbitrary type on an array of entities. Tag data
3547  * is passed as void*. tag_values_size specifies the size of the
3548  * memory pointed to by tag_values in terms of bytes. Applications may
3549  * use this function to set data of any type, not just iBase_BYTES.
3550  * However, because this function supports data of arbitrary type, in all
3551  * cases the size specified by tag_values_size is always in terms of
3552  * bytes.
3553  *
3554  * \param instance FBiGeom instance handle
3555  * \param entity_handles Entity array on which tag is being set
3556  * \param entity_handles_size Number of entities in array
3557  * \param tag_handle Tag being set on an entity
3558  * \param tag_values Pointer to tag data being set on entity. Note that
3559  * the implicit INTERLEAVED storage order rule applies (see section
3560  * ITAPS Storage Orders)
3561  * \param tag_values_size Size in bytes of tag data
3562  * \param *err Pointer to error type returned from function
3563  */
3564 void FBiGeom_setArrData( FBiGeom_Instance instance,
3565  const iBase_EntityHandle* entity_handles,
3566  int entity_handles_size,
3567  iBase_TagHandle tag_handle,
3568  const void* tag_values,
3569  int tag_values_size,
3570  int* err );
3571 
3572 /**\brief Set tag values of integer type on an array of entities
3573  *
3574  * Set tag values of integer type on an array of entities.
3575  * \param instance FBiGeom instance handle
3576  * \param entity_handles Entity array on which tag is being set
3577  * \param entity_handles_size Number of entities in array
3578  * \param tag_handle Tag being set on an entity
3579  * \param tag_values Pointer to tag data being set on entities
3580  * \param tag_values_size Size in total number of integers of tag data
3581  * \param *err Pointer to error type returned from function
3582  */
3584  const iBase_EntityHandle* entity_handles,
3585  int entity_handles_size,
3586  iBase_TagHandle tag_handle,
3587  const int* tag_values,
3588  int tag_values_size,
3589  int* err );
3590 
3591 /**\brief Set tag values of double type on an array of entities
3592  *
3593  * Set tag values of double type on an array of entities.
3594  * \param instance FBiGeom instance handle
3595  * \param entity_handles Entity array on which tag is being set
3596  * \param entity_handles_size Number of entities in array
3597  * \param tag_handle Tag being set on an entity
3598  * \param tag_values Pointer to tag data being set on entities
3599  * \param tag_values_size Size in total number of doubles of tag data
3600  * \param *err Pointer to error type returned from function
3601  */
3603  const iBase_EntityHandle* entity_handles,
3604  int entity_handles_size,
3605  iBase_TagHandle tag_handle,
3606  const double* tag_values,
3607  const int tag_values_size,
3608  int* err );
3609 
3610 /**\brief Set tag values of entity handle type on an array of entities
3611  *
3612  * Set tag values of entity handle type on an array of entities.
3613  * \param instance FBiGeom instance handle
3614  * \param entity_handles Entity array on which tag is being set
3615  * \param entity_handles_size Number of entities in array
3616  * \param tag_handle Tag being set on an entity
3617  * \param tag_values Pointer to tag data being set on entities
3618  * \param tag_values_size Size in total number of entity handles of tag
3619  * data
3620  * \param *err Pointer to error type returned from function
3621  */
3622 void FBiGeom_setEHArrData( FBiGeom_Instance instance,
3623  const iBase_EntityHandle* entity_handles,
3624  int entity_handles_size,
3625  iBase_TagHandle tag_handle,
3626  const iBase_EntityHandle* tag_values,
3627  int tag_values_size,
3628  int* err );
3629 
3630 /**\brief Set tag values of entity set handle type on an array of entities
3631  *
3632  * Set tag values of entity set handle type on an array of entities.
3633  * \param instance FBiGeom instance handle
3634  * \param entity_handles Entity array on which tag is being set
3635  * \param entity_handles_size Number of entities in array
3636  * \param tag_handle Tag being set on an entity
3637  * \param tag_values Pointer to tag data being set on entities
3638  * \param tag_values_size Size in total number of entity handles of tag
3639  * data
3640  * \param *err Pointer to error type returned from function
3641  */
3643  const iBase_EntityHandle* entity_handles,
3644  int entity_handles_size,
3645  iBase_TagHandle tag_handle,
3646  const iBase_EntitySetHandle* tag_values,
3647  int tag_values_size,
3648  int* err );
3649 
3650 /**\brief Remove a tag value from an array of entities
3651  *
3652  * Remove a tag value from an array of entities
3653  * \param instance FBiGeom instance handle
3654  * \param entity_handles Entity from which tag is being removed
3655  * \param entity_handles_size Number of entities in entity array
3656  * \param tag_handle Tag handle of tag being removed
3657  * \param *err Pointer to error type returned from function
3658  */
3659 void FBiGeom_rmvArrTag( FBiGeom_Instance instance,
3660  const iBase_EntityHandle* entity_handles,
3661  int entity_handles_size,
3662  iBase_TagHandle tag_handle,
3663  int* err );
3664 
3665 /**\brief Get the value of a tag of arbitrary type on an entity
3666  *
3667  * Get the value of a tag of arbitrary type on an entity. Tag data
3668  * is passed back as void*. tag_value_size specifies the size of the
3669  * memory pointed to by tag_value in terms of bytes. Applications may
3670  * use this function to get data of any type, not just iBase_BYTES.
3671  * However, because this function supports arbitrary type, in all
3672  * cases the size specified by tag_value_size is always in terms of
3673  * bytes.
3674  *
3675  * \param instance FBiGeom instance handle
3676  * \param entity_handle Entity on which tag is being set
3677  * \param tag_handle Tag being set on an entity
3678  * \param *tag_value Pointer to tag data array being queried
3679  * \param *tag_value_allocated Pointer to tag data array allocated size
3680  * \param *tag_value_size Pointer to occupied size in bytes of tag data
3681  * array
3682  * \param *err Pointer to error type returned from function
3683  */
3684 void FBiGeom_getData( FBiGeom_Instance instance,
3685  iBase_EntityHandle entity_handle,
3686  iBase_TagHandle tag_handle,
3687  void** tag_value,
3688  int* tag_value_allocated,
3689  int* tag_value_size,
3690  int* err );
3691 
3692 /**\brief Get the value of a tag of integer type on an entity
3693  *
3694  * Get the value of a tag of integer type on an entity.
3695  * \param instance FBiGeom instance handle
3696  * \param entity_handle Entity on which tag is being set
3697  * \param tag_handle Tag being set on an entity
3698  * \param *out_data Pointer to tag value returned from function
3699  * \param *err Pointer to error type returned from function
3700  */
3701 void FBiGeom_getIntData( FBiGeom_Instance instance,
3702  iBase_EntityHandle entity_handle,
3703  iBase_TagHandle tag_handle,
3704  int* out_data,
3705  int* err );
3706 
3707 /**\brief Get the value of a tag of double type on an entity
3708  *
3709  * Get the value of a tag of double type on an entity.
3710  * \param instance FBiGeom instance handle
3711  * \param entity_handle Entity on which tag is being set
3712  * \param tag_handle Tag being set on an entity
3713  * \param *out_data Pointer to tag value returned from function
3714  * \param *err Pointer to error type returned from function
3715  */
3716 void FBiGeom_getDblData( FBiGeom_Instance instance,
3717  /*in*/ const iBase_EntityHandle entity_handle,
3718  /*in*/ const iBase_TagHandle tag_handle,
3719  double* out_data,
3720  int* err );
3721 
3722 /**\brief Get the value of a tag of entity handle type on an entity
3723  *
3724  * Get the value of a tag of entity handle type on an entity.
3725  * \param instance FBiGeom instance handle
3726  * \param entity_handle Entity on which tag is being set
3727  * \param tag_handle Tag being set on an entity
3728  * \param *out_data Pointer to tag value returned from function
3729  * \param *err Pointer to error type returned from function
3730  */
3731 void FBiGeom_getEHData( FBiGeom_Instance instance,
3732  iBase_EntityHandle entity_handle,
3733  iBase_TagHandle tag_handle,
3734  iBase_EntityHandle* out_data,
3735  int* err );
3736 
3737 /**\brief Get the value of a tag of entity set handle type on an entity
3738  *
3739  * Get the value of a tag of entity set handle type on an entity.
3740  * \param instance FBiGeom instance handle
3741  * \param entity_handle Entity on which tag is being set
3742  * \param tag_handle Tag being set on an entity
3743  * \param *out_data Pointer to tag value returned from function
3744  * \param *err Pointer to error type returned from function
3745  */
3746 void FBiGeom_getESHData( FBiGeom_Instance instance,
3747  iBase_EntityHandle entity_handle,
3748  iBase_TagHandle tag_handle,
3749  iBase_EntitySetHandle* out_data,
3750  int* err );
3751 
3752 /**\brief Set a tag value of arbitrary type on an entity
3753  *
3754  * Set a tag value of arbitrary type on an entity. Tag data
3755  * is passed as void*. tag_value_size specifies the size of the
3756  * memory pointed to by tag_value in terms of bytes. Applications may
3757  * use this function to set data of any type, not just iBase_BYTES.
3758  * However, because this function supports data of arbitrary type, in
3759  * all cases the size specified by tag_value_size is always in terms
3760  * of bytes.
3761  *
3762  * \param instance FBiGeom instance handle
3763  * \param entity_handle Entity on which tag is being set
3764  * \param tag_handle Tag being set on an entity
3765  * \param tag_value Pointer to tag data being set on entity
3766  * \param tag_value_size Size in bytes of tag data
3767  * \param *err Pointer to error type returned from function
3768  */
3769 void FBiGeom_setData( FBiGeom_Instance instance,
3770  iBase_EntityHandle entity_handle,
3771  iBase_TagHandle tag_handle,
3772  const void* tag_value,
3773  int tag_value_size,
3774  int* err );
3775 
3776 /**\brief Set a tag value of integer type on an entity
3777  *
3778  * Set a tag value of integer type on an entity.
3779  * \param instance FBiGeom instance handle
3780  * \param entity_handle Entity on which tag is being set
3781  * \param tag_handle Tag being set on an entity
3782  * \param tag_value Tag value being set on entity
3783  * \param *err Pointer to error type returned from function
3784  */
3785 void FBiGeom_setIntData( FBiGeom_Instance instance,
3786  iBase_EntityHandle entity_handle,
3787  iBase_TagHandle tag_handle,
3788  int tag_value,
3789  int* err );
3790 
3791 /**\brief Set a tag value of double type on an entity
3792  *
3793  * Set a tag value of double type on an entity.
3794  * \param instance FBiGeom instance handle
3795  * \param entity_handle Entity on which tag is being set
3796  * \param tag_handle Tag being set on an entity
3797  * \param tag_value Tag value being set on entity
3798  * \param *err Pointer to error type returned from function
3799  */
3800 void FBiGeom_setDblData( FBiGeom_Instance instance,
3801  iBase_EntityHandle entity_handle,
3802  iBase_TagHandle tag_handle,
3803  double tag_value,
3804  int* err );
3805 
3806 /**\brief Set a tag value of entity handle type on an entity
3807  *
3808  * Set a tag value of entity handle type on an entity.
3809  * \param instance FBiGeom instance handle
3810  * \param entity_handle Entity on which tag is being set
3811  * \param tag_handle Tag being set on an entity
3812  * \param tag_value Tag value being set on entity
3813  * \param *err Pointer to error type returned from function
3814  */
3815 void FBiGeom_setEHData( FBiGeom_Instance instance,
3816  iBase_EntityHandle entity_handle,
3817  iBase_TagHandle tag_handle,
3818  iBase_EntityHandle tag_value,
3819  int* err );
3820 
3821 /**\brief Set a tag value of entity set handle type on an entity
3822  *
3823  * Set a tag value of entity set handle type on an entity.
3824  * \param instance FBiGeom instance handle
3825  * \param entity_handle Entity on which tag is being set
3826  * \param tag_handle Tag being set on an entity
3827  * \param tag_value Tag value being set on entity
3828  * \param *err Pointer to error type returned from function
3829  */
3830 void FBiGeom_setESHData( FBiGeom_Instance instance,
3831  iBase_EntityHandle entity_handle,
3832  iBase_TagHandle tag_handle,
3833  iBase_EntitySetHandle tag_value,
3834  int* err );
3835 
3836 /**\brief Get all the tags associated with a specified entity handle
3837  *
3838  * Get all the tags associated with a specified entity handle
3839  * \param instance FBiGeom instance handle
3840  * \param entity_handle Entity being queried
3841  * \param *tag_handles Pointer to array of tag_handles returned from
3842  * function
3843  * \param *tag_handles_allocated Pointer to allocated size of tag_handles
3844  * array
3845  * \param *tag_handles_size Pointer to occupied size of tag_handles array
3846  * \param *err Pointer to error type returned from function
3847  */
3848 void FBiGeom_getAllTags( FBiGeom_Instance instance,
3849  iBase_EntityHandle entity_handle,
3850  iBase_TagHandle** tag_handles,
3851  int* tag_handles_allocated,
3852  int* tag_handles_size,
3853  int* err );
3854 
3855 /**\brief Remove a tag value from an entity
3856  *
3857  * Remove a tag value from an entity
3858  * \param instance FBiGeom instance handle
3859  * \param entity_handle Entity from which tag is being removed
3860  * \param tag_handle Tag handle of tag being removed
3861  * \param *err Pointer to error type returned from function
3862  */
3863 void FBiGeom_rmvTag( FBiGeom_Instance instance,
3864  iBase_EntityHandle entity_handle,
3865  iBase_TagHandle tag_handle,
3866  int* err );
3867 
3868 /**\brief Subtract contents of one entity set from another
3869  *
3870  * Subtract contents of one entity set from another
3871  * \param instance FBiGeom instance handle
3872  * \param entity_set_1 Entity set from which other set is being subtracted
3873  * \param entity_set_2 Entity set being subtracted from other set
3874  * \param result_entity_set Pointer to entity set returned from function
3875  * \param *err Pointer to error type returned from function
3876  */
3877 void FBiGeom_subtract( FBiGeom_Instance instance,
3878  iBase_EntitySetHandle entity_set_1,
3879  iBase_EntitySetHandle entity_set_2,
3880  iBase_EntitySetHandle* result_entity_set,
3881  int* err );
3882 
3883 /**\brief Intersect contents of one entity set with another
3884  *
3885  * Intersect contents of one entity set with another
3886  * \param instance FBiGeom instance handle
3887  * \param entity_set_1 Entity set being intersected with another
3888  * \param entity_set_2 Entity set being intersected with another
3889  * \param result_entity_set Pointer to entity set returned from function
3890  * \param *err Pointer to error type returned from function
3891  */
3892 void FBiGeom_intersect( FBiGeom_Instance instance,
3893  iBase_EntitySetHandle entity_set_1,
3894  iBase_EntitySetHandle entity_set_2,
3895  iBase_EntitySetHandle* result_entity_set,
3896  int* err );
3897 
3898 /**\brief Unite contents of one entity set with another
3899  *
3900  * Unite contents of one entity set with another
3901  * \param instance FBiGeom instance handle
3902  * \param entity_set_1 Entity set being united with another
3903  * \param entity_set_2 Entity set being united with another
3904  * \param result_entity_set Pointer to entity set returned from function
3905  * \param *err Pointer to error type returned from function
3906  */
3907 void FBiGeom_unite( FBiGeom_Instance instance,
3908  iBase_EntitySetHandle entity_set_1,
3909  iBase_EntitySetHandle entity_set_2,
3910  iBase_EntitySetHandle* result_entity_set,
3911  int* err );
3912 
3913 /**\brief Return facet information from solid modeling engine
3914  *
3915  * Return facet information from solid modeling engine
3916  * \param instance FBiGeom instance handle
3917  * \param entity_handle Entity being queried
3918  * \param dist_tolerance Tolerance guidance for faceting engine
3919  * \param points List of vertices in faceting of curve or surface
3920  * \param points_allocated Allocated size of vertex list array
3921  * \param points_size Occupied size of vertex list array
3922  * \param facets List of facets in faceting of surface
3923  * \param facets_allocated Allocated size of facet list array
3924  * \param facets_size Occupied size of facet list array
3925  * \param *err Pointer to error type returned from function
3926  */
3928  iBase_EntityHandle entity,
3929  double dist_tolerance,
3930  double** points,
3931  int* points_allocated,
3932  int* points_size,
3933  int** facets,
3934  int* facets_allocated,
3935  int* facets_size,
3936  int* err );
3937 
3938 #ifdef __cplusplus
3939 } /* extern "C" */
3940 #endif
3941 
3942 #endif