MOAB: Mesh Oriented datABase
(version 5.4.1)
|
00001 #ifndef _ITAPS_iMesh 00002 #define _ITAPS_iMesh 00003 00004 #include "iBase.h" 00005 #include "iMesh_protos.h" 00006 00007 /***************************************************************************/ /** 00008 * \ingroup 00009 *VersionNumbers 00010 * \brief Compile time 00011 *version number 00012 *digits 00013 * 00014 * iMesh maintains a 00015 *major, minor and 00016 *patch digit in its 00017 *version number. 00018 * Technically 00019 *speaking, there is 00020 *not much practical 00021 *value in patch digit 00022 * for an interface 00023 *specification. A 00024 *patch release is 00025 *typically only used 00026 * for bug fix 00027 *releases. Although 00028 *it is rare, 00029 *sometimes a bug fix 00030 * necessitates an API 00031 *change. So, we 00032 *define a patch digit 00033 *for iMesh. 00034 ******************************************************************************/ 00035 #define IMESH_VERSION_MAJOR ITAPS_VERSION_MAJOR 00036 #define IMESH_VERSION_MINOR ITAPS_VERSION_MINOR 00037 #define IMESH_VERSION_PATCH ITAPS_VERSION_PATCH 00038 00039 /***************************************************************************/ /** 00040 * \ingroup 00041 *VersionNumbers 00042 * \brief Maintain 00043 *backward 00044 *compatibility with 00045 *old version symbol 00046 *names 00047 ******************************************************************************/ 00048 #define IMESH_MAJOR_VERSION IMESH_VERSION_MAJOR 00049 #define IMESH_MINOR_VERSION IMESH_VERSION_MINOR 00050 #define IMESH_PATCH_VERSION IMESH_VERSION_PATCH 00051 00052 /***************************************************************************/ /** 00053 * \ingroup 00054 *VersionNumbers 00055 * \brief Version 00056 *Comparison 00057 * 00058 * Evaluates to true 00059 *at CPP time if the 00060 *version of iMesh 00061 *currently being 00062 * compiled is greater 00063 *than or equal to the 00064 *version specified. 00065 ******************************************************************************/ 00066 #define IMESH_VERSION_GE( Maj, Min, Pat ) ITAPS_VERSION_GE( Maj, Min, Pat ) 00067 00068 /***************************************************************************/ /** 00069 * \ingroup 00070 *VersionNumbers 00071 * \brief Compose 00072 *string represention 00073 *of the iMesh version 00074 *number 00075 ******************************************************************************/ 00076 #define IMESH_VERSION_STRING ITAPS_VERSION_STRING_( iMesh ) 00077 00078 /***************************************************************************/ /** 00079 * \ingroup 00080 *VersionNumbers 00081 * \brief Compose a 00082 *symbol name derived 00083 *from the current 00084 *iMesh version 00085 *number. 00086 ******************************************************************************/ 00087 #define IMESH_VERSION_TAG ITAPS_VERSION_TAG_( iMesh ) 00088 00089 /***************************************************************************/ /** 00090 * \ingroup 00091 *VersionNumbers 00092 * \brief Define 00093 *iMesh_newMesh symbol 00094 *such that it depends 00095 *on version number. 00096 * 00097 * Note: We ran into 00098 *problems with this 00099 *as it influences or 00100 *is influenced by 00101 * fortran name 00102 *mangling and so 00103 *breaks fortran 00104 *compilation. So, 00105 *this is currently 00106 *disabled. 00107 ******************************************************************************/ 00108 #define IMESH_NEW_MESH_NAME__( A, B, C ) A##_##B##_##C 00109 #define IMESH_NEW_MESH_NAME_( A, B, C ) IMESH_NEW_MESH_NAME__( A, B, C ) 00110 #define IMESH_NEW_MESH_NAME( A ) IMESH_NEW_MESH_NAME_( A, IMESH_VERSION_MAJOR, IMESH_VERSION_MINOR ) 00111 /* 00112 #undef iMesh_newMesh 00113 #define iMesh_newMesh IMESH_NEW_MESH_NAME(iMesh_newMesh) 00114 */ 00115 00116 #ifdef __cplusplus 00117 extern "C" { 00118 #endif 00119 00120 /***************************************************************************/ /** 00121 * \ingroup Datatypes 00122 * \brief iMesh 00123 *instance 00124 ******************************************************************************/ 00125 typedef struct iMesh_Instance_Private* iMesh_Instance; 00126 00127 /***************************************************************************/ /** 00128 * \ingroup Datatypes 00129 * \brief Entity 00130 *Topology 00131 ******************************************************************************/ 00132 enum iMesh_EntityTopology 00133 { 00134 iMesh_EntityTopology_MIN = 0, 00135 /**< MIN symbol used to facilitate iteration over topologies */ 00136 iMesh_POINT = iMesh_EntityTopology_MIN, 00137 /**< a 0D entity (e.g. a vertex) */ 00138 iMesh_LINE_SEGMENT, 00139 /**< a 1D entity (e.g. an edge) */ 00140 iMesh_POLYGON, 00141 /**< a general 2D entity */ 00142 iMesh_TRIANGLE, 00143 /**< a specific 2D entity bounded by 3 edge entities */ 00144 iMesh_QUADRILATERAL, 00145 /**< a specific 2D entity bounded by 4 edge entities */ 00146 iMesh_POLYHEDRON, 00147 /**< a general 3D entity */ 00148 iMesh_TETRAHEDRON, 00149 /**< a specific 3D entity bounded by 4 triangle entities */ 00150 iMesh_HEXAHEDRON, 00151 /**< a specific 3D entity bounded by 6 quadrilateral entities */ 00152 iMesh_PRISM, 00153 /**< a specific 3D entity bounded by a combination of 3 quadrilateral 00154 entities and 2 triangle entities */ 00155 iMesh_PYRAMID, 00156 /**< a specific 3D entity bounded by a combination of 1 quadrilateral 00157 entity and 4 triangle entities */ 00158 iMesh_SEPTAHEDRON, 00159 /**< a hexahedral entity with one collapsed edge */ 00160 iMesh_ALL_TOPOLOGIES, 00161 /**< used only in queries to request information about all topologies */ 00162 iMesh_EntityTopology_MAX = iMesh_ALL_TOPOLOGIES 00163 /**< MAX symbol used to facilitate iteration over topologies */ 00164 }; 00165 00166 /***************************************************************************/ /** 00167 * \ingroup 00168 *ErrorHandling \brief 00169 *Get the error type 00170 *returned from the 00171 *last iMesh function 00172 ******************************************************************************/ 00173 void iMesh_getErrorType( iMesh_Instance instance, 00174 /**< [in] iMesh instance handle */ 00175 int* error_type 00176 /**< [out] Error type returned from last iMesh function 00177 (see iBase_ErrorType) */ 00178 00179 ); 00180 00181 /***************************************************************************/ /** 00182 * \ingroup 00183 *ErrorHandling \brief 00184 *Get a description of 00185 *the error returned 00186 *from the last iMesh 00187 *function 00188 ******************************************************************************/ 00189 void iMesh_getDescription( iMesh_Instance instance, 00190 /**< [in] iMesh instance handle */ 00191 char* descr, 00192 /**< [in,out] Pointer to a character string to be filled with a 00193 description of the error from the last iMesh function */ 00194 int descr_len 00195 /**< [in] Length of the character string pointed to by descr 00196 (\ref strlen) */ 00197 ); 00198 00199 /***************************************************************************/ /** 00200 * \ingroup 00201 *Initialization 00202 * \brief Construct a 00203 *new iMesh instance 00204 * 00205 ******************************************************************************/ 00206 00207 void iMesh_newMesh( const char* options, 00208 /**< [in] Pointer to implementation-specific options string 00209 (\ref options) */ 00210 iMesh_Instance* instance, 00211 /**< [in] iMesh instance handle */ 00212 int* err, 00213 /**< [out] Returned Error status (see iBase_ErrorType) */ 00214 int options_len 00215 /**< [in] Length of the character string pointed to by options 00216 (\ref strlen) */ 00217 ); 00218 00219 /***************************************************************************/ /** 00220 * \ingroup 00221 *Initialization 00222 * \brief Destroy an 00223 *iMesh instance 00224 * 00225 ******************************************************************************/ 00226 00227 void iMesh_dtor( iMesh_Instance instance, 00228 /**< [in] iMesh instance handle */ 00229 int* err 00230 /**< [out] Returned Error status (see iBase_ErrorType) */ 00231 ); 00232 00233 /***************************************************************************/ /** 00234 * \ingroup 00235 *Initialization 00236 * \brief Load a mesh 00237 *from a file 00238 * 00239 * Load a mesh from a 00240 *file. If entity set 00241 *is specified, loaded 00242 *mesh is added to 00243 *that set; specify 00244 *root set if that is 00245 *not desired. 00246 ******************************************************************************/ 00247 00248 void iMesh_load( iMesh_Instance instance, 00249 /**< [in] iMesh instance handle */ 00250 const iBase_EntitySetHandle entity_set_handle, 00251 /**< [in] Set to which loaded mesh will be added, otherwise root */ 00252 const char* name, 00253 /**< [in] File name from which mesh is to be loaded */ 00254 const char* options, 00255 /**< [in] Pointer to implementation-specific options string 00256 (\ref options) */ 00257 int* err, 00258 /**< [out] Returned Error status (see iBase_ErrorType) */ 00259 int name_len, 00260 /**< [in] Length of the file name character string 00261 (\ref strlen) */ 00262 int options_len 00263 /**< [in] Length of the options character string 00264 (\ref strlen) */ 00265 ); 00266 00267 /***************************************************************************/ /** 00268 * \ingroup 00269 *Initialization 00270 * \brief Save a mesh 00271 *to a file 00272 * 00273 * Save a mesh to a 00274 *file. If entity set 00275 *is specified, save 00276 *only the mesh 00277 *contained in that 00278 *set. 00279 ******************************************************************************/ 00280 00281 void iMesh_save( iMesh_Instance instance, 00282 /**< [in] iMesh instance handle */ 00283 const iBase_EntitySetHandle entity_set_handle, 00284 /**< [in] Entity set being saved */ 00285 const char* name, 00286 /**< [in] File name to which mesh is to be saved */ 00287 const char* options, 00288 /**< [in] Pointer to implementation-specific options string 00289 (\ref options) */ 00290 int* err, 00291 /**< [out] Returned Error status (see iBase_ErrorType) */ 00292 const int name_len, 00293 /**< [in] Length of the file name character string 00294 (\ref strlen) */ 00295 int options_len 00296 /**< [in] Length of the options character string 00297 (\ref strlen) */ 00298 ); 00299 00300 /***************************************************************************/ /** 00301 * \ingroup 00302 *Initialization 00303 * \brief Get handle 00304 *of the root set for 00305 *this instance 00306 * 00307 * Get handle of the 00308 *root set for this 00309 *instance. All mesh 00310 *entities in this 00311 *instance can be 00312 *accessed from this 00313 *set. 00314 ******************************************************************************/ 00315 00316 void iMesh_getRootSet( iMesh_Instance instance, 00317 /**< [in] iMesh instance handle */ 00318 iBase_EntitySetHandle* root_set, 00319 /**< [out] Pointer to set handle returned from function */ 00320 int* err 00321 /**< [out] Returned Error status (see iBase_ErrorType) */ 00322 ); 00323 00324 /***************************************************************************/ /** 00325 * \ingroup 00326 *Initialization 00327 * \brief Get the 00328 *geometric dimension 00329 *of mesh represented 00330 *in this instance 00331 * 00332 ******************************************************************************/ 00333 00334 void iMesh_getGeometricDimension( iMesh_Instance instance, 00335 /**< [in] iMesh instance handle */ 00336 int* geom_dim, 00337 /**< [out] Pointer to dimension returned from this function */ 00338 int* err 00339 /**< [out] Returned Error status (see iBase_ErrorType) */ 00340 ); 00341 00342 /***************************************************************************/ /** 00343 * \ingroup 00344 *Initialization 00345 * \brief Set 00346 *geometric dimension 00347 *of vertex 00348 *coordinates 00349 * 00350 * Set the geometric 00351 *dimension of the 00352 *mesh. Note: An 00353 *application should 00354 *not expect this 00355 *function to succeed 00356 *unless the mesh 00357 *instance is empty. 00358 *An empty mesh 00359 *instance is any mesh 00360 *instance in which 00361 *there are no vertex 00362 *entities. 00363 ******************************************************************************/ 00364 00365 void iMesh_setGeometricDimension( iMesh_Instance instance, 00366 /**< [in] iMesh instance handle */ 00367 int geom_dim, 00368 /**< [in] Requested geometric dimension. */ 00369 int* err 00370 /**< [out] Returned Error status (see iBase_ErrorType) */ 00371 ); 00372 00373 /***************************************************************************/ /** 00374 * \ingroup 00375 *Initialization 00376 * \brief Get the 00377 *default storage 00378 *order used by this 00379 *implementation 00380 * 00381 * Get the default 00382 *storage order used 00383 *by this 00384 *implementation. 00385 *Value returned is a 00386 *member of the 00387 *iBase_StorageOrder 00388 *enumeration. 00389 ******************************************************************************/ 00390 00391 void iMesh_getDfltStorage( iMesh_Instance instance, 00392 /**< [in] iMesh instance handle */ 00393 int* order, 00394 /**< [out] Pointer to storage order returned from function 00395 (\sa iBase_StorageOrder) */ 00396 int* err 00397 /**< [out] Returned Error status (see iBase_ErrorType) */ 00398 ); 00399 00400 /***************************************************************************/ /** 00401 * \ingroup 00402 *Adjacencies \brief 00403 *Get the adjacency 00404 *table for this 00405 *implementation 00406 * 00407 * Get the adjacency 00408 *table for this 00409 *implementation. This 00410 *table is a 4x4 array 00411 *whose entries 00412 *characterize how the 00413 *implementation 00414 * behaves when 00415 *adjacent and 00416 *intermediate 00417 *entities are 00418 *queried. Entry [i,j] 00419 *(i=row, j=col, 00420 *0-based indexing) 00421 *will have one of the 00422 *values in the 00423 *iBase_AdjacencyCost 00424 *enumeration. 00425 *Off-diagonal entres, 00426 *i!=j, represents the 00427 *relative cost of 00428 *retrieving entities 00429 *of dimension i 00430 *adjacent to entities 00431 *of dimension j. 00432 * Diagonal entries, 00433 *i==j, indicate 00434 *whether or not 00435 *handles to ALL 00436 * entities of that 00437 *dimension are 00438 *obtainable from 00439 *calls that return 00440 * entity handles. 00441 *This is always true 00442 *by definition for 00443 *i==j==0 as well as 00444 *for i==j==2 in a 2D 00445 *mesh and i==j==3 in 00446 *a 3D mesh. However, 00447 *diagonal entries 00448 *[1,1] for a 2D mesh 00449 *and both [1,1] and 00450 *[2,2] for a 3D mesh 00451 *indicate whether or 00452 *not handles to ALL 00453 * intermediate 00454 *dimensioned entities 00455 *(ALL edges in a 2D 00456 *mesh or ALL edges 00457 *and ALL faces in a 00458 *3D mesh) are 00459 *obtainable from 00460 *calls that return 00461 *entity handles. A 00462 *value of 00463 *iBase_AVAILABLE for 00464 *a diagonal entry 00465 *indicates that 00466 *handles are 00467 *obtainable for ALL 00468 * entities of that 00469 *dimension while a 00470 *value of 00471 *iBase_UNAVAILABLE 00472 * indicates that 00473 *handles are not 00474 *obtainable for ALL 00475 *entities of that 00476 * dimension. 00477 ******************************************************************************/ 00478 00479 void iMesh_getAdjTable( iMesh_Instance instance, 00480 /**< [in] iMesh instance handle */ 00481 int** adjacency_table, 00482 /**< [out] Pointer to array representing adjacency table 00483 \ref trio) */ 00484 int* adjacency_table_allocated, 00485 /**< [in,out] Pointer to allocated size of adjacency_table */ 00486 int* adjacency_table_size, 00487 /**< [out] Pointer to occupied size of adjacency_table */ 00488 int* err 00489 /**< [out] Returned Error status (see iBase_ErrorType) */ 00490 ); 00491 00492 /***************************************************************************/ /** 00493 * \ingroup 00494 *Adjacencies \brief 00495 *Set the adjacency 00496 *table as requested 00497 *by the application 00498 * 00499 * Set the adjacency 00500 *table as requested 00501 *by the application. 00502 * See 00503 *iMesh_getAdjTable 00504 *for a description of 00505 *the meaning of the 00506 *entries in this 00507 *table. This call to 00508 *set the adjacency 00509 *table allows an 00510 *application to 00511 *request how it would 00512 *like an 00513 *implementation to 00514 *behave when adjacent 00515 * and/or intermediate 00516 *entities are 00517 *queried. If the 00518 *implementation is 00519 *not able to 00520 *accommodate the 00521 *requested query 00522 *behavior associated 00523 *with ANY entry in 00524 *the table, the call 00525 *will fail and return 00526 *an error of 00527 * iBase_NOT_SUPPORTED. 00528 *Otherwise, the 00529 *implementation is 00530 *able to accommodate 00531 * the requested query 00532 *behavior associated 00533 *with ALL table 00534 *entries and the call 00535 *will succeed. In 00536 *either case, 00537 *however, the 00538 *implementation will 00539 * over-write the 00540 *entries in the 00541 *adjacency_table 00542 *argument with the 00543 *same values that 00544 *would be obtained in 00545 *a succeeding call to 00546 *iMesh_getAdjTable. 00547 ******************************************************************************/ 00548 00549 void iMesh_setAdjTable( iMesh_Instance instance, 00550 /**< [in] iMesh instance handle */ 00551 int* adjacency_table, 00552 /**< [in,out] Array representing adjacency table requested by 00553 application */ 00554 int adjacency_table_size, 00555 /**< [in] Size of adj table array */ 00556 int* err 00557 /**< [out] Returned Error status (see iBase_ErrorType) */ 00558 ); 00559 00560 /***************************************************************************/ /** 00561 * \ingroup EntitySets 00562 * \brief Get the 00563 *number of entities 00564 *of specified type in 00565 *the instance or set 00566 * 00567 * Get the number of 00568 *entities with the 00569 *specified type in 00570 *the instance or set. 00571 *If entity set handle 00572 *is root set, return 00573 *information for 00574 *instance, otherwise 00575 *for set. Value of 00576 *entity type must be 00577 *from the 00578 * iBase_EntityType 00579 *enumeration. If 00580 *iBase_ALL_TYPES is 00581 *specified, total 00582 *number of entities 00583 *(excluding entity 00584 *sets) is returned. 00585 ******************************************************************************/ 00586 00587 void iMesh_getNumOfType( iMesh_Instance instance, 00588 /**< [in] iMesh instance handle */ 00589 const iBase_EntitySetHandle entity_set_handle, 00590 /**< [in] Entity set being queried */ 00591 const int entity_type, 00592 /**< [in] Type of entity requested */ 00593 int* num_type, 00594 /**< [out] Pointer to number of entities, returned from function */ 00595 int* err 00596 /**< [out] Returned Error status (see iBase_ErrorType) */ 00597 ); 00598 00599 /***************************************************************************/ /** 00600 * \ingroup EntitySets 00601 * \brief Get the 00602 *number of entities 00603 *of specified 00604 *topology in instance 00605 *or set 00606 * 00607 * Get the number of 00608 *entities with the 00609 *specified topology 00610 *in the instance or 00611 *set. If entity set 00612 *handle is root set, 00613 *return information 00614 *for instance, 00615 * otherwise for set. 00616 *Value of entity 00617 *topology must be 00618 *from the 00619 * iMesh_EntityTopology 00620 *enumeration. If 00621 *iMesh_ALL_TOPOLOGIES 00622 *is specified, total 00623 *number of entities 00624 *(excluding entity 00625 *sets) is returned. 00626 ******************************************************************************/ 00627 00628 void iMesh_getNumOfTopo( iMesh_Instance instance, 00629 /**< [in] iMesh instance handle */ 00630 const iBase_EntitySetHandle entity_set_handle, 00631 /**< [in] Entity set being queried */ 00632 const int entity_topology, 00633 /**< [in] Topology of entity requested */ 00634 int* num_topo, 00635 /**< [out] Pointer to number of entities, returned from function */ 00636 int* err 00637 /**< [out] Returned Error status (see iBase_ErrorType) */ 00638 ); 00639 00640 /***************************************************************************/ /** 00641 * \ingroup 00642 *MeshModification 00643 * \brief Permit 00644 *implementation to 00645 *'optimize' the mesh 00646 *instance 00647 * 00648 * Its concievable 00649 *that after a series 00650 *of operations 00651 *modifying the mesh 00652 * instance, the 00653 *implementation's 00654 *internal 00655 *representation of 00656 *the mesh may include 00657 *data and tie up 00658 *memory resources 00659 *that could be 00660 *'optimized' away. 00661 * For example, if the 00662 *implementation only 00663 *marks removed 00664 *entities for 00665 *deletion but does 00666 *not actually free up 00667 *memory resources 00668 *associated those 00669 *entities, a call to 00670 *this function gives 00671 *the implementation 00672 *the 'ok' to go ahead 00673 *and free up such 00674 *memory. 00675 * 00676 * Depending on the 00677 *implementation as 00678 *well as the amount 00679 *and kind of changes 00680 * to the mesh that 00681 *have been made prior 00682 *to calling it, this 00683 *call may be very 00684 *expensive in time 00685 *complexity. On the 00686 *other hand, it is 00687 *also perfectly 00688 * acceptable that an 00689 *implementation 00690 *basically treat this 00691 *operation as a 00692 *no-op. 00693 * 00694 * In any event, any 00695 *entity, entity set, 00696 *iterator or tag 00697 *handle obtained 00698 *prior to calling 00699 *this method will may 00700 *be invalidated as a 00701 *result of this call. 00702 *In that case, the 00703 *caller must 00704 *re-acquire handles 00705 *after making this 00706 *call. A return 00707 *argument indicates 00708 *if handles have been 00709 *invalidated. 00710 ******************************************************************************/ 00711 00712 void iMesh_optimize( iMesh_Instance instance, 00713 /**< [in] iMesh instance handle */ 00714 int* handles_invalidated, 00715 /**< [out] Returned flag indicating if any handles the caller held 00716 before calling this function have been invalidated as a result of 00717 this call. A value of non-zero returned here indicates that any 00718 handles the caller had prior to this call must not be trusted and 00719 must be re-acquired by caller. */ 00720 int* err 00721 /**< [out] Returned Error status (see iBase_ErrorType) */ 00722 ); 00723 00724 /***************************************************************************/ /** 00725 * \ingroup Entities 00726 * \brief Get 00727 *entities of specific 00728 *type and/or topology 00729 *in set or instance 00730 * 00731 * Get entities of 00732 *specific type and/or 00733 *topology in set or 00734 *instance. All 00735 * entities of a given 00736 *type or topology are 00737 *requested by 00738 *specifying 00739 * iBase_ALL_TOPOLOGIES 00740 *or iBase_ALL_TYPES, 00741 *respectively. 00742 *Specified type or 00743 *topology must be a 00744 *value in the 00745 *iBase_EntityType or 00746 *iBase_EntityTopology 00747 * enumeration, 00748 *respectively. 00749 ******************************************************************************/ 00750 00751 void iMesh_getEntities( iMesh_Instance instance, 00752 /**< [in] iMesh instance handle */ 00753 const iBase_EntitySetHandle entity_set_handle, 00754 /**< [in] Entity set being queried */ 00755 const int entity_type, 00756 /**< [in] Type of entities being requested */ 00757 const int entity_topology, 00758 /**< [in] Topology of entities being requested */ 00759 iBase_EntityHandle** entity_handles, 00760 /**< [in,out] Pointer to array of entity handles returned \ref trio) */ 00761 int* entity_handles_allocated, 00762 /**< [in,out] Pointer to allocated size of entity_handles array */ 00763 int* entity_handles_size, 00764 /**< [out] Pointer to occupied size of entity_handles array */ 00765 int* err 00766 /**< [out] Returned Error status (see iBase_ErrorType) */ 00767 ); 00768 00769 /***************************************************************************/ /** 00770 * \ingroup 00771 *VertexEntities 00772 * \brief Get 00773 *coordinates of 00774 *specified vertices 00775 * 00776 * Get coordinates of 00777 *specified vertices. 00778 *Coordinates are 00779 *returned in the 00780 *storage order 00781 *indicated by the 00782 *storage_order 00783 *argument. 00784 ******************************************************************************/ 00785 00786 void iMesh_getVtxArrCoords( iMesh_Instance instance, 00787 /**< [in] iMesh instance handle */ 00788 const iBase_EntityHandle* vertex_handles, 00789 /**< [in] Array of mesh vertex handles whose coordinates are being 00790 requested */ 00791 const int vertex_handles_size, 00792 /**< [in] Number of vertices in vertex_handles array */ 00793 const int storage_order, 00794 /**< [in] Requested storage order of returned coordinates 00795 (see iBase_StorageOrder) */ 00796 double** coords, 00797 /**< [in,out] Pointer to array of coordinates returned from function 00798 \ref trio) */ 00799 int* coords_allocated, 00800 /**< [in,out] Pointer to allocated size of coords array */ 00801 int* coords_size, 00802 /**< [out] Pointer to occupied size of coords array */ 00803 int* err 00804 /**< [out] Returned Error status (see iBase_ErrorType) */ 00805 ); 00806 00807 /***************************************************************************/ /** 00808 * \ingroup 00809 *EntityIterators 00810 * \brief Initialize 00811 *an array iterator 00812 *over specified 00813 *entity type, 00814 *topology, and size 00815 * 00816 * Initialize an array 00817 *iterator over 00818 *specified entity 00819 *type, topology, and 00820 * size, for a 00821 *specified set or 00822 *instance. Iterator 00823 *returned can be used 00824 * as input to 00825 *functions returning 00826 *entities for the 00827 *iterator. If all 00828 * entities of a 00829 *specified type 00830 *and/or topology are 00831 *to be iterated, 00832 * specify 00833 *iBase_ALL_TYPES or 00834 *iMesh_ALL_TOPOLOGIES, 00835 *respectively. 00836 * Specified type or 00837 *topology must be a 00838 *value in the 00839 *iBase_EntityType or 00840 * iMesh_EntityTopology 00841 *enumerations, 00842 *respectively. 00843 ******************************************************************************/ 00844 00845 void iMesh_initEntArrIter( iMesh_Instance instance, 00846 /**< [in] iMesh instance handle */ 00847 const iBase_EntitySetHandle entity_set_handle, 00848 /**< [in] Entity set being iterated */ 00849 const int requested_entity_type, 00850 /**< [in] Type of entity to iterate */ 00851 const int requested_entity_topology, 00852 /**< [in] Topology of entity to iterate */ 00853 const int requested_array_size, 00854 /**< [in] Size of chunks of handles returned for each value of the 00855 iterator */ 00856 const int resilient, 00857 /**< [in] If zero, return a non-resilient iterator. 00858 Otherwise, a resilient iterator (\ref resilient) */ 00859 iBase_EntityArrIterator* entArr_iterator, 00860 /**< [out] Pointer to iterator returned from function */ 00861 int* err 00862 /**< [out] Returned Error status (see iBase_ErrorType) */ 00863 ); 00864 00865 /***************************************************************************/ /** 00866 * \ingroup 00867 *EntityIterators 00868 * \brief Get 00869 *entities contained 00870 *in array iterator 00871 *and increment 00872 *iterator 00873 * 00874 * Get the entities 00875 *corresponding to an 00876 *array iterator (e.g. 00877 *dereference the 00878 *array iterator), and 00879 *increment the 00880 *iterator. The 00881 *dereferenced 00882 * value(s) are 00883 *returned in 00884 *entity_handles. If 00885 *the iterator is at 00886 *the end of the 00887 *iteration, the 00888 *dereferenced 00889 *value(s) are 00890 *undefined and 00891 * has_data will be 00892 *returned with a 00893 *value of zero. 00894 *Otherwise, has_data 00895 * will be returned 00896 *with a non-zero 00897 *value. 00898 ******************************************************************************/ 00899 00900 void iMesh_getNextEntArrIter( iMesh_Instance instance, 00901 /**< [in] iMesh instance handle */ 00902 iBase_EntityArrIterator entArr_iterator, 00903 /**< [in] Iterator being queried */ 00904 iBase_EntityHandle** entity_handles, 00905 /**< [in,out] Pointer to array of entity handles contained in current 00906 value of iterator \ref trio) */ 00907 int* entity_handles_allocated, 00908 /**< [in,out] Pointer to allocated size of entity_handles */ 00909 int* entity_handles_size, 00910 /**< [out] Pointer to occupied size of entity_handles */ 00911 int* has_data, 00912 /**< [out] Pointer to a flag indicating if the value(s) returned 00913 in entity_handles are valid. A non-zero value indicates the value(s) 00914 are valid. A zero value indicates the value(s) are NOT valid. */ 00915 int* err 00916 /**< [out] Returned Error status (see iBase_ErrorType) */ 00917 ); 00918 00919 /***************************************************************************/ /** 00920 * \ingroup 00921 *EntityIterators 00922 * \brief Reset the 00923 *array iterator 00924 * 00925 ******************************************************************************/ 00926 00927 void iMesh_resetEntArrIter( iMesh_Instance instance, 00928 /**< [in] iMesh instance handle */ 00929 iBase_EntityArrIterator entArr_iterator, 00930 /**< [in] Iterator to reset */ 00931 int* err 00932 /**< [out] Returned Error status (see iBase_ErrorType) */ 00933 ); 00934 00935 /***************************************************************************/ /** 00936 * \ingroup 00937 *EntityIterators 00938 * \brief Destroy the 00939 *specified array 00940 *iterator 00941 * 00942 ******************************************************************************/ 00943 00944 void iMesh_endEntArrIter( iMesh_Instance instance, 00945 /**< [in] iMesh instance handle */ 00946 iBase_EntityArrIterator entArr_iterator, 00947 /**< [in] Iterator which gets destroyed */ 00948 int* err 00949 /**< [out] Returned Error status (see iBase_ErrorType) */ 00950 ); 00951 00952 /***************************************************************************/ /** 00953 * \ingroup Entities 00954 * \brief Get the 00955 *entity topology for 00956 *the specified 00957 *entities 00958 * 00959 * Get the entity 00960 *topology for the 00961 *specified entities. 00962 *Topologies returned 00963 *are values in the 00964 *iMesh_EntityTopology 00965 *enumeration. 00966 ******************************************************************************/ 00967 00968 void iMesh_getEntArrTopo( iMesh_Instance instance, 00969 /**< [in] iMesh instance handle */ 00970 const iBase_EntityHandle* entity_handles, 00971 /**< [in] Array of entity handles being queried */ 00972 const int entity_handles_size, 00973 /**< [in] Number of entities in entity_handles array */ 00974 int** topology, 00975 /**< [in,out] Pointer to array of entity topologies returned 00976 \ref trio) */ 00977 int* topology_allocated, 00978 /**< [in,out] Pointer to allocated size of topology array */ 00979 int* topology_size, 00980 /**< [out] Pointer to occupied size of topology array */ 00981 int* err 00982 /**< [out] Returned Error status (see iBase_ErrorType) */ 00983 ); 00984 00985 /***************************************************************************/ /** 00986 * \ingroup Entities 00987 * \brief Get the 00988 *entity type for the 00989 *specified entities 00990 * 00991 * Get the entity type 00992 *for the specified 00993 *entities. Types 00994 * returned are values 00995 *in the 00996 *iBase_EntityType 00997 *enumeration. 00998 ******************************************************************************/ 00999 01000 void iMesh_getEntArrType( iMesh_Instance instance, 01001 /**< [in] iMesh instance handle */ 01002 const iBase_EntityHandle* entity_handles, 01003 /**< [in] Array of entity handles being queried */ 01004 const int entity_handles_size, 01005 /**< [in] Number of entities in entity_handles array */ 01006 int** type, 01007 /**< [in,out] Pointer to array of types returned from function 01008 \ref trio) */ 01009 int* type_allocated, 01010 /**< [in,out] Pointer to allocated size of type array */ 01011 int* type_size, 01012 /**< [out] Pointer to occupied size of type array */ 01013 int* err 01014 /**< [out] Returned Error status (see iBase_ErrorType) */ 01015 ); 01016 01017 /***************************************************************************/ /** 01018 * \ingroup 01019 *Adjacencies \brief 01020 *Get entities of 01021 *specified type 01022 *adjacent to entities 01023 * 01024 * Get entities of 01025 *specified type 01026 *adjacent to 01027 *entities. Specified 01028 *type must be value 01029 *in the 01030 *iBase_EntityType 01031 *enumeration. \em 01032 *offset(i) is index 01033 *of first entity in 01034 *adjacentEntityHandles 01035 *array adjacent to 01036 * entity_handles[i]. 01037 *More precisely, the 01038 *entities adjacent to 01039 *the ith entity in 01040 *entity_handles are 01041 *found in 01042 *adjacentEntityHandles 01043 * running from 01044 *offset[i] to 01045 *offset[i+1] - 1. 01046 *This implies that 01047 *the offset_size will 01048 *be 01049 *entity_handles_size 01050 *+ 1. 01051 * 01052 * Note 1: Because 01053 *'adjacent' as 01054 *defined by the iMesh 01055 *data model refers to 01056 *those entities that 01057 *bound another, the 01058 *entities being 01059 *queried here (in 01060 *entity_handles arg) 01061 *are NEVER ALSO 01062 *returned in 01063 * adjacentEntityHandles 01064 *even if the 01065 *entity_type_requested 01066 * matches the 01067 *entity type(s) in 01068 *entity_handles. 01069 ******************************************************************************/ 01070 01071 void iMesh_getEntArrAdj( iMesh_Instance instance, 01072 /**< [in] iMesh instance handle */ 01073 const iBase_EntityHandle* entity_handles, 01074 /**< [in] Array of entity handles being queried */ 01075 const int entity_handles_size, 01076 /**< [in] Number of entities in entity_handles array */ 01077 const int entity_type_requested, 01078 /**< [in] Type of adjacent entities requested */ 01079 iBase_EntityHandle** adjacentEntityHandles, 01080 /**< [in,out] Pointer to array of adjacentEntityHandles \ref trio) 01081 returned from function. Note that the implicit INTERLEAVED storage 01082 order rule applies (see iBase_StorageOrder) */ 01083 int* adjacentEntityHandles_allocated, 01084 /**< [in,out] Pointer to allocated size of adjacentEntityHandles array */ 01085 int* adj_entity_handles_size, 01086 /**< [out] Pointer to occupied size of adjacentEntityHandles array */ 01087 int** offset, 01088 /**< [in,out] Pointer to array of offsets returned from function 01089 \ref trio) */ 01090 int* offset_allocated, 01091 /**< [in,out] Pointer to allocated size of offset array */ 01092 int* offset_size, 01093 /**< [out] Pointer to occupied size of offset array */ 01094 int* err 01095 /**< [out] Returned Error status (see iBase_ErrorType) */ 01096 ); 01097 01098 /***************************************************************************/ /** 01099 * \ingroup 01100 *Adjacencies \brief 01101 *Get "2nd order" 01102 *adjacencies to an 01103 *array of entities 01104 * 01105 * Get "2nd order" 01106 *adjacencies to an 01107 *array of entities, 01108 *that is, from each 01109 * entity, through 01110 *other entities of a 01111 *specified "bridge" 01112 *dimension, to other 01113 * entities of another 01114 *specified "to" 01115 *dimension. Note 1: 01116 *If the "bridge" 01117 *dimension is the 01118 *same as the "to" 01119 *dimension, the 01120 *output will be empty 01121 *(and an error code 01122 *of 01123 * iBase_INVALID_ARGUMENT 01124 *returned). If the 01125 *type of a particular 01126 * entity matches 01127 *the "bridge" 01128 *dimension, there 01129 *will be no entities 01130 * returned for 01131 *that input entity. 01132 *This is consistent 01133 *with the definition 01134 *of adjacencies and 01135 *the behavior of 01136 *iMesh first 01137 * adjacency calls. 01138 * Note 2: An entity 01139 *will never be 01140 *returned as a second 01141 *adjacency of itself, 01142 *on the grounds that 01143 *this is the most 01144 *likely expectation 01145 *of applications, and 01146 *that it is easier 01147 *for an application 01148 *to add the original 01149 *entity to the 01150 *returned data than 01151 *to find and remove 01152 *it. Note 3: The 01153 *entities adjacent to 01154 *the ith entity in 01155 *entity_handles are 01156 * found in 01157 *adj_entity_handles 01158 *running from 01159 *offset[i] to 01160 * offset[i+1] - 1. 01161 *This implies that 01162 *the offset_size will 01163 *be 01164 * entity_handles_size 01165 *+ 1. 01166 ******************************************************************************/ 01167 01168 void iMesh_getEntArr2ndAdj( iMesh_Instance instance, 01169 /**< [in] iMesh instance handle */ 01170 iBase_EntityHandle const* entity_handles, 01171 /**< [in] Entities from which adjacencies are requested */ 01172 int entity_handles_size, 01173 /**< [in] Number of entities whose adjacencies are requested */ 01174 int bridge_entity_type, 01175 /**< [in] Type of bridge entity for 2nd order adjacencies */ 01176 int requested_entity_type, 01177 /**< [in] Type of adjacent entities returned */ 01178 iBase_EntityHandle** adj_entity_handles, 01179 /**< [in,out] Adjacent entities. Note that the implicit INTERLEAVED 01180 storage order rule applies (see iBase_StorageOrder) 01181 \ref trio) */ 01182 int* adj_entity_handles_allocated, 01183 /**< [in,out] Allocated size of returned array */ 01184 int* adj_entity_handles_size, 01185 /**< [out] Occupied size of returned array */ 01186 int** offset, 01187 /**< [in,out] Offset[i] is offset into adj_entity_handles of 2nd order 01188 adjacencies of ith entity in entity_handles \ref trio) */ 01189 int* offset_allocated, 01190 /**< [in,out] Allocated size of offset array */ 01191 int* offset_size, 01192 /**< [out] Occupied size of offset array */ 01193 int* err 01194 /**< [out] Returned Error status (see iBase_ErrorType) */ 01195 ); 01196 01197 /***************************************************************************/ /** 01198 * \ingroup 01199 *Adjacencies \brief 01200 *Get indexed 01201 *representation of 01202 *mesh or subset of 01203 *mesh 01204 * 01205 * Given an entity set 01206 *and optionally a 01207 *type or topology, 01208 *return: 01209 * - The entities in 01210 *the set of the 01211 *specified type or 01212 *topology 01213 * - The entities 01214 *adjacent to those 01215 *entities with a 01216 *specified type, as a 01217 *list of unique 01218 *handles. 01219 * - For each entity 01220 *in the first list, 01221 *the adjacent 01222 *entities, specified 01223 *as indices into the 01224 *second list. 01225 * 01226 * Note 1: Because 01227 *'adjacent' as 01228 *defined by the iMesh 01229 *data model refers to 01230 *those entities that 01231 *bound another, the 01232 *entities being 01233 *queried here (in 01234 *entity_set_handle 01235 *arg) are NEVER ALSO 01236 *returned in 01237 * adj_entity_handles 01238 *even if the 01239 *entity_type_requested 01240 * matches the 01241 *entity type(s) in 01242 *entity_set_handle. 01243 * Note 2: The 01244 *entities adjacent to 01245 *the ith entity in 01246 *entity_handles are 01247 * found in 01248 *adj_entity_handles 01249 *running from 01250 *offset[i] to 01251 * offset[i+1] 01252 *- 1. This implies 01253 *that the offset_size 01254 *will be 01255 *entity_handles_size 01256 *+ 1. Note 3: This 01257 *function will fail 01258 *and return an error 01259 *if the caller passes 01260 * a 01261 *combination of 01262 *entity_type and 01263 *entity_topology that 01264 *are not consistent. 01265 ******************************************************************************/ 01266 01267 void iMesh_getAdjEntIndices( iMesh_Instance instance, 01268 /**< [in] iMesh instance handle */ 01269 iBase_EntitySetHandle entity_set_handle, 01270 /**< [in] The set of entities from which to query */ 01271 int entity_type_requester, 01272 /**< [in] If not iBase_ALL_TYPES, act only on the subset of entities 01273 contained in entity_set_handle of the specified type. */ 01274 int entity_topology_requester, 01275 /**< [in] If not iMesh_ALL_TOPOLOGIES, act only on the subset of 01276 entities contained in entity_set_handle of specified topology. */ 01277 int entity_type_requested, 01278 /**< [in] The type of the adjacent entities to return */ 01279 iBase_EntityHandle** entity_handles, 01280 /**< [in,out] The handles of the (non-struct) subset of the entities 01281 contained in entity_set_handle indicated by the optional type and 01282 topology filtering arguments. \ref trio) */ 01283 int* entity_handles_allocated, 01284 /**< [in,out] Allocated size of entity_handles array */ 01285 int* entity_handles_size, 01286 /**< [out] Occupied size of entity_handles array */ 01287 iBase_EntityHandle** adj_entity_handles, 01288 /**< [in,out] The union of the unique entities of type 01289 requested_entity_type adjacent to each entity in entity_handles. 01290 Note that the implicit INTERLEAVED storage order rule 01291 applies (see iBase_StorageOrder) \ref trio) */ 01292 int* adj_entity_handles_allocated, 01293 /**< [in,out] Allocated size of adj_entity_handles array */ 01294 int* adj_entity_handles_size, 01295 /**< [out] Occupied size of adj_entity_handles array */ 01296 int** adj_entity_indices, 01297 /**< [in,out] For each entity in entity_handles, the adjacent 01298 entities of type entity_type_requested, specified as indices into 01299 adj_entity_handles. The values are concatenated into a single 01300 array in the order of the entity handles in entity_handles. 01301 \ref trio) */ 01302 int* adj_entity_indices_allocated, 01303 /**< [in,out] Allocated size of adj_entity_indices array */ 01304 int* adj_entity_indices_size, 01305 /**< [out] Occupied size of adj_entity_indices array */ 01306 int** offset, 01307 /**< [in,out] For each entity in the corresponding position in 01308 entity_handles, the position in adj_entity_indices at which 01309 values for that entity are stored \ref trio) */ 01310 int* offset_allocated, 01311 /**< [in,out] Allocated size of offset array */ 01312 int* offset_size, 01313 /**< [out] Occipied size of offset array */ 01314 int* err 01315 /**< [out] Returned Error status (see iBase_ErrorType) */ 01316 ); 01317 01318 /***************************************************************************/ /** 01319 * \ingroup EntitySets 01320 * \brief Create an 01321 *entity set 01322 * 01323 * Create an entity 01324 *set, either ordered 01325 *(isList=1) or 01326 *unordered 01327 *(isList=0). 01328 * Unordered entity 01329 *sets can contain a 01330 *given entity or set 01331 *only once. 01332 * 01333 * An entity set in 01334 *iMesh supports 01335 *managing its 01336 *contained members in 01337 *one of two modes. 01338 *When an entitiy set 01339 *is first created, 01340 *the caller is 01341 *required to indicate 01342 *which mode of 01343 *membership the set 01344 *will support. The 01345 *two modes that are 01346 *supported are a) 01347 *order-preserving 01348 *(isList=1) or b) 01349 *duplicate-preventing 01350 *(isList=0). 01351 * 01352 * For 01353 *order-preserving 01354 *membership, the 01355 *implementation will 01356 *permit duplicate 01357 * entities. However, 01358 *the implementation 01359 *will guarantee that 01360 *the order in which 01361 * entities are added 01362 *to the set will be 01363 *the same as the 01364 *order in which they 01365 *are queried by the 01366 *various methods that 01367 *return the entities 01368 *of a set. This order 01369 * preserving 01370 *guarantee holds 01371 *across removals. 01372 *However, it does not 01373 *hold across removals 01374 *followed by 01375 *re-additions of the 01376 *previously removed 01377 *entities. This kind 01378 *of an entity set 01379 *behaves like an STL 01380 *vector or STL list 01381 *and is created by 01382 *setting isList=1 01383 *when creating an 01384 *entity set. 01385 * 01386 * For 01387 *duplicate-preventing 01388 *membership, the 01389 *implementation will 01390 *guarantee that 01391 * duplicate entities 01392 *are prevented. Any 01393 *attempts to add 01394 *duplicate entities 01395 *to such a set will 01396 *be detected, 01397 *prevented and 01398 *silently ignored by 01399 *the implementation. 01400 *This kind of entity 01401 *set behaves like an 01402 *STL set and is 01403 *created by setting 01404 *isList=0 when 01405 *creating an entity 01406 *set. 01407 * 01408 * Finally, all of the 01409 *above comments apply 01410 *only to entity 01411 *members of an entity 01412 * set and do not 01413 *apply to the entity 01414 *set members. 01415 *Order-preserving and 01416 * duplicate 01417 *preventing behavior 01418 *for entity set 01419 *members is 01420 *unspecified. Each 01421 * implementation may 01422 *behave differently 01423 *for entity set 01424 *members. This design 01425 *was chosen because 01426 *we could not 01427 *identify any use 01428 *cases where 01429 * order-preserving 01430 *behavior for set 01431 *members was 01432 *necessary. However, 01433 *if users encounter 01434 *situations where 01435 *such behavior is 01436 *desirable or 01437 *necessary, then the 01438 *ITAPS development 01439 *team can certainly 01440 *consider adjusting 01441 *the interface 01442 * specification to 01443 *support it. 01444 ******************************************************************************/ 01445 01446 void iMesh_createEntSet( iMesh_Instance instance, 01447 /**< [in] iMesh instance handle */ 01448 const int isList, 01449 /**< [in] If non-zero, an ordered list is created, otherwise an 01450 unordered set is created. */ 01451 iBase_EntitySetHandle* entity_set_created, 01452 /**< [out] Entity set created by function */ 01453 int* err 01454 /**< [out] Returned Error status (see iBase_ErrorType) */ 01455 ); 01456 01457 /***************************************************************************/ /** 01458 * \ingroup EntitySets 01459 * \brief Destroy an 01460 *entity set 01461 * 01462 ******************************************************************************/ 01463 01464 void iMesh_destroyEntSet( iMesh_Instance instance, 01465 /**< [in] iMesh instance handle */ 01466 iBase_EntitySetHandle entity_set, 01467 /**< [in] Entity set to be destroyed */ 01468 int* err 01469 /**< [out] Returned Error status (see iBase_ErrorType) */ 01470 ); 01471 01472 /***************************************************************************/ /** 01473 * \ingroup EntitySets 01474 * \brief Return 01475 *whether a specified 01476 *set is ordered or 01477 *unordered 01478 * 01479 * Return whether a 01480 *specified set is 01481 *ordered (*is_list=1) 01482 *or unordered 01483 *(*is_list=0) 01484 ******************************************************************************/ 01485 01486 void iMesh_isList( iMesh_Instance instance, 01487 /**< [in] iMesh instance handle */ 01488 const iBase_EntitySetHandle entity_set, 01489 /**< [in] Entity set being queried */ 01490 int* is_list, 01491 /**< [out] Pointer to flag returned from function */ 01492 int* err 01493 /**< [out] Returned Error status (see iBase_ErrorType) */ 01494 ); 01495 01496 /***************************************************************************/ /** 01497 * \ingroup EntitySets 01498 * \brief Get the 01499 *number of entity 01500 *sets contained in a 01501 *set or interface 01502 * 01503 * Get the number of 01504 *entity sets 01505 *contained in a set 01506 *or interface. 01507 ******************************************************************************/ 01508 01509 void iMesh_getNumEntSets( iMesh_Instance instance, 01510 /**< [in] iMesh instance handle */ 01511 const iBase_EntitySetHandle entity_set_handle, 01512 /**< [in] Entity set being queried */ 01513 const int num_hops, 01514 /**< [in] Maximum hops from entity_set_handle to contained set, not 01515 inclusive of the contained set. \ref numhops) */ 01516 int* num_sets, 01517 /**< [out] Pointer to the number of sets returned from function */ 01518 int* err 01519 /**< [out] Returned Error status (see iBase_ErrorType) */ 01520 ); 01521 01522 /***************************************************************************/ /** 01523 * \ingroup EntitySets 01524 * \brief Get the 01525 *entity sets 01526 *contained in a set 01527 *or interface 01528 * 01529 * Get the entity sets 01530 *contained in a set 01531 *or interface. 01532 ******************************************************************************/ 01533 01534 void iMesh_getEntSets( iMesh_Instance instance, 01535 /**< [in] iMesh instance handle */ 01536 const iBase_EntitySetHandle entity_set_handle, 01537 /**< [in] Entity set being queried */ 01538 const int num_hops, 01539 /**< [in] Maximum hops from entity_set_handle to contained set, not 01540 inclusive of the contained set \ref numhops) */ 01541 iBase_EntitySetHandle** contained_set_handles, 01542 /**< [in,out] Pointer to array of set handles returned \ref trio) */ 01543 int* contained_set_handles_allocated, 01544 /**< [in,out] Pointer to allocated length of */ 01545 int* contained_set_handles_size, 01546 /**< [out] Pointer to occupied length of */ 01547 int* err 01548 /**< [out] Returned Error status (see iBase_ErrorType) */ 01549 ); 01550 01551 /***************************************************************************/ /** 01552 * \ingroup EntitySets 01553 * \brief Add an 01554 *entity to a set 01555 * 01556 ******************************************************************************/ 01557 01558 void iMesh_addEntToSet( iMesh_Instance instance, 01559 /**< [in] iMesh instance handle */ 01560 iBase_EntityHandle entity_handle, 01561 /**< [in] The entity being added */ 01562 iBase_EntitySetHandle entity_set, 01563 /**< [in] Pointer to the set being added to */ 01564 int* err 01565 /**< [out] Returned Error status (see iBase_ErrorType) */ 01566 ); 01567 01568 /***************************************************************************/ /** 01569 * \ingroup EntitySets 01570 * \brief Remove an 01571 *entity from a set 01572 * 01573 ******************************************************************************/ 01574 01575 void iMesh_rmvEntFromSet( iMesh_Instance instance, 01576 /**< [in] iMesh instance handle */ 01577 iBase_EntityHandle entity_handle, 01578 /**< [in] The entity being removed */ 01579 iBase_EntitySetHandle entity_set, 01580 /**< [in] Pointer to the set being removed from */ 01581 int* err 01582 /**< [out] Returned Error status (see iBase_ErrorType) */ 01583 ); 01584 01585 /***************************************************************************/ /** 01586 * \ingroup EntitySets 01587 * \brief Add an 01588 *array of entities to 01589 *a set 01590 * 01591 ******************************************************************************/ 01592 01593 void iMesh_addEntArrToSet( iMesh_Instance instance, 01594 /**< [in] iMesh instance handle */ 01595 const iBase_EntityHandle* entity_handles, 01596 /**< [in] Array of entities being added */ 01597 int entity_handles_size, 01598 /**< [in] Number of entities in entity_handles array */ 01599 iBase_EntitySetHandle entity_set, 01600 /**< [in] Pointer to the set being added to */ 01601 int* err 01602 /**< [out] Returned Error status (see iBase_ErrorType) */ 01603 ); 01604 01605 /***************************************************************************/ /** 01606 * \ingroup EntitySets 01607 * \brief Remove an 01608 *array of entities 01609 *from a set 01610 * 01611 ******************************************************************************/ 01612 01613 void iMesh_rmvEntArrFromSet( iMesh_Instance instance, 01614 /**< [in] iMesh instance handle */ 01615 const iBase_EntityHandle* entity_handles, 01616 /**< [in] Array of entities being remove */ 01617 int entity_handles_size, 01618 /**< [in] Number of entities in entity_handles array */ 01619 iBase_EntitySetHandle entity_set, 01620 /**< [in] Pointer to the set being removed from */ 01621 int* err 01622 /**< [out] Returned Error status (see iBase_ErrorType) */ 01623 ); 01624 01625 /***************************************************************************/ /** 01626 * \ingroup EntitySets 01627 * \brief Add an 01628 *entity set to a set 01629 * 01630 * Add an entity set 01631 *to a set (\ref 01632 *cycles) 01633 ******************************************************************************/ 01634 01635 void iMesh_addEntSet( iMesh_Instance instance, 01636 /**< [in] iMesh instance handle */ 01637 iBase_EntitySetHandle entity_set_to_add, 01638 /**< [in] The entity set being added */ 01639 iBase_EntitySetHandle entity_set_handle, 01640 /**< [in] Pointer to the set being added to */ 01641 int* err 01642 /**< [out] Returned Error status (see iBase_ErrorType) */ 01643 ); 01644 01645 /***************************************************************************/ /** 01646 * \ingroup EntitySets 01647 * \brief Remove an 01648 *entity set from a 01649 *set 01650 * 01651 * Remove an entity 01652 *set from a set 01653 ******************************************************************************/ 01654 01655 void iMesh_rmvEntSet( iMesh_Instance instance, 01656 /**< [in] iMesh instance handle */ 01657 iBase_EntitySetHandle entity_set_to_remove, 01658 /**< [in] The entity set being removed */ 01659 iBase_EntitySetHandle entity_set_handle, 01660 /**< [in] Pointer to the set being removed from */ 01661 int* err 01662 /**< [out] Returned Error status (see iBase_ErrorType) */ 01663 ); 01664 01665 /***************************************************************************/ /** 01666 * \ingroup EntitySets 01667 * \brief Return 01668 *whether an entity is 01669 *contained in another 01670 *set 01671 * 01672 * Return whether an 01673 *entity is contained 01674 *(*is_contained=1) or 01675 *not contained 01676 *(*is_contained=0) in 01677 *another set 01678 ******************************************************************************/ 01679 01680 void iMesh_isEntContained( iMesh_Instance instance, 01681 /**< [in] iMesh instance handle */ 01682 iBase_EntitySetHandle containing_entity_set, 01683 /**< [in] Entity set being queried */ 01684 iBase_EntityHandle contained_entity, 01685 /**< [in] Entity potentially contained in containing_entity_set */ 01686 int* is_contained, 01687 /**< [out] Pointer to flag returned from function */ 01688 int* err 01689 /**< [out] Returned Error status (see iBase_ErrorType) */ 01690 ); 01691 01692 /***************************************************************************/ /** 01693 * \ingroup EntitySets 01694 * \brief Return 01695 *whether entities are 01696 *contained in a set 01697 * 01698 ******************************************************************************/ 01699 01700 void iMesh_isEntArrContained( iMesh_Instance instance, 01701 /**< [in] iMesh instance handle */ 01702 iBase_EntitySetHandle containing_entity_set, 01703 /**< [in] Entity set being queried */ 01704 const iBase_EntityHandle* entity_handles, 01705 /**< [in] List of entities for which to check containment. */ 01706 int num_entity_handles, 01707 /**< [in] Size of entity_handles array of entities to be checked. */ 01708 int** is_contained, 01709 /**< [in,out] One value for each input entity, 1 if contained in set, 01710 zero otherwise. \ref trio) */ 01711 int* is_contained_allocated, 01712 /**< [in,out] Allocated size of is_contained array */ 01713 int* is_contained_size, 01714 /**< [out] Occupied size of is_contained array */ 01715 int* err 01716 /**< [out] Returned Error status (see iBase_ErrorType) */ 01717 ); 01718 01719 /***************************************************************************/ /** 01720 * \ingroup EntitySets 01721 * \brief Return 01722 *whether an entity 01723 *set is contained in 01724 *another set 01725 * 01726 * Return whether a 01727 *set is contained 01728 *(*is_contained=1) or 01729 *not contained 01730 * (*is_contained=0) 01731 *in another set 01732 ******************************************************************************/ 01733 01734 void iMesh_isEntSetContained( iMesh_Instance instance, 01735 /**< [in] iMesh instance handle */ 01736 const iBase_EntitySetHandle containing_entity_set, 01737 /**< [in] Entity set being queried */ 01738 const iBase_EntitySetHandle contained_entity_set, 01739 /**< [in] Entity set potentially contained in containing_entity_set */ 01740 int* is_contained, 01741 /**< [out] Pointer to flag returned from function */ 01742 int* err 01743 /**< [out] Returned Error status (see iBase_ErrorType) */ 01744 ); 01745 01746 /***************************************************************************/ /** 01747 * \ingroup 01748 *ParentChildLinks 01749 * \brief Add 01750 *parent/child links 01751 *between two sets 01752 * 01753 * Add parent/child 01754 *links between two 01755 *sets. Makes parent 01756 *point to child and 01757 *child point to 01758 *parent. (\ref 01759 *cycles) 01760 ******************************************************************************/ 01761 01762 void iMesh_addPrntChld( iMesh_Instance instance, 01763 /**< [in] iMesh instance handle */ 01764 iBase_EntitySetHandle parent_entity_set, 01765 /**< [in] Pointer to parent set */ 01766 iBase_EntitySetHandle child_entity_set, 01767 /**< [in] Pointer to child set */ 01768 int* err 01769 /**< [out] Returned Error status (see iBase_ErrorType) */ 01770 ); 01771 01772 /***************************************************************************/ /** 01773 * \ingroup 01774 *ParentChildLinks 01775 * \brief Remove 01776 *parent/child links 01777 *between two sets 01778 * 01779 * Remove parent/child 01780 *links between two 01781 *sets. 01782 ******************************************************************************/ 01783 01784 void iMesh_rmvPrntChld( iMesh_Instance instance, 01785 /**< [in] iMesh instance handle */ 01786 iBase_EntitySetHandle parent_entity_set, 01787 /**< [in] Pointer to parent set */ 01788 iBase_EntitySetHandle child_entity_set, 01789 /**< [in] Pointer to child set */ 01790 int* err 01791 /**< [out] Returned Error status (see iBase_ErrorType) */ 01792 ); 01793 01794 /***************************************************************************/ /** 01795 * \ingroup 01796 *ParentChildLinks 01797 * \brief Return 01798 *whether two sets are 01799 *related by 01800 *parent/child links 01801 * 01802 * Return whether two 01803 *sets are related 01804 *(*is_child=1) or not 01805 *(*is_child=0) by 01806 *parent/child links 01807 ******************************************************************************/ 01808 01809 void iMesh_isChildOf( iMesh_Instance instance, 01810 /**< [in] iMesh instance handle */ 01811 const iBase_EntitySetHandle parent_entity_set, 01812 /**< [in] Pointer to parent set */ 01813 const iBase_EntitySetHandle child_entity_set, 01814 /**< [in] Pointer to child set */ 01815 int* is_child, 01816 /**< [out] Pointer to flag returned from function */ 01817 int* err 01818 /**< [out] Returned Error status (see iBase_ErrorType) */ 01819 ); 01820 01821 /***************************************************************************/ /** 01822 * \ingroup 01823 *ParentChildLinks 01824 * \brief Get the 01825 *number of child sets 01826 *linked from a 01827 *specified set 01828 * 01829 * Get the number of 01830 *child sets linked 01831 *from a specified 01832 *set. 01833 ******************************************************************************/ 01834 01835 void iMesh_getNumChld( iMesh_Instance instance, 01836 /**< [in] iMesh instance handle */ 01837 const iBase_EntitySetHandle entity_set, 01838 /**< [in] Entity set being queried */ 01839 const int num_hops, 01840 /**< [in] Maximum hops from entity_set_handle to child set, not 01841 inclusive of the child set. \ref numhops) */ 01842 int* num_child, 01843 /**< [out] Pointer to number of children returned from function */ 01844 int* err 01845 /**< [out] Returned Error status (see iBase_ErrorType) */ 01846 ); 01847 01848 /***************************************************************************/ /** 01849 * \ingroup 01850 *ParentChildLinks 01851 * \brief Get the 01852 *number of parent 01853 *sets linked from a 01854 *specified set 01855 * 01856 * Get the number of 01857 *parent sets linked 01858 *from a specified 01859 *set. 01860 ******************************************************************************/ 01861 01862 void iMesh_getNumPrnt( iMesh_Instance instance, 01863 /**< [in] iMesh instance handle */ 01864 const iBase_EntitySetHandle entity_set, 01865 /**< [in] Entity set being queried */ 01866 const int num_hops, 01867 /**< [in] Maximum hops from entity_set_handle to parent set, not 01868 inclusive of the parent set. \ref numhops) */ 01869 int* num_parent, 01870 /**< [out] Pointer to number of parents returned from function */ 01871 int* err 01872 /**< [out] Returned Error status (see iBase_ErrorType) */ 01873 ); 01874 01875 /***************************************************************************/ /** 01876 * \ingroup 01877 *ParentChildLinks 01878 * \brief Get the 01879 *child sets linked 01880 *from a specified set 01881 * 01882 * Get the child sets 01883 *linked from a 01884 *specified set. 01885 ******************************************************************************/ 01886 01887 void iMesh_getChldn( iMesh_Instance instance, 01888 /**< [in] iMesh instance handle */ 01889 const iBase_EntitySetHandle from_entity_set, 01890 /**< [in] Entity set being queried */ 01891 const int num_hops, 01892 /**< [in] Maximum hops from entity_set_handle to child set, 01893 \ref numhops) */ 01894 iBase_EntitySetHandle** entity_set_handles, 01895 /**< [in,out] Pointer to array of child sets \ref trio) */ 01896 int* entity_set_handles_allocated, 01897 /**< [in,out] Pointer to allocated size of */ 01898 int* entity_set_handles_size, 01899 /**< [out] Pointer to occupied size of */ 01900 int* err 01901 /**< [out] Returned Error status (see iBase_ErrorType) */ 01902 ); 01903 01904 /***************************************************************************/ /** 01905 * \ingroup 01906 *ParentChildLinks 01907 * \brief Get the 01908 *parent sets linked 01909 *from a specified set 01910 * 01911 * Get the parent sets 01912 *linked from a 01913 *specified set. 01914 ******************************************************************************/ 01915 01916 void iMesh_getPrnts( iMesh_Instance instance, 01917 /**< [in] iMesh instance handle */ 01918 const iBase_EntitySetHandle from_entity_set, 01919 /**< [in] Entity set being queried */ 01920 const int num_hops, 01921 /**< [in] Maximum hops from entity_set_handle to parent set, 01922 \ref numhops) */ 01923 iBase_EntitySetHandle** entity_set_handles, 01924 /**< [in,out] Pointer to array of parent sets \ref trio) */ 01925 int* entity_set_handles_allocated, 01926 /**< [in,out] Pointer to allocated size of */ 01927 int* entity_set_handles_size, 01928 /**< [out] Pointer to occupied size of */ 01929 int* err 01930 /**< [out] Returned Error status (see iBase_ErrorType) */ 01931 ); 01932 01933 /***************************************************************************/ /** 01934 * \ingroup 01935 *VertexEntities 01936 * \brief Set 01937 *coordinates for an 01938 *array of vertices 01939 * 01940 * Set coordinates for 01941 *an array of 01942 *vertices. Specified 01943 *storage order must 01944 *be either 01945 *iBase_INTERLEAVED or 01946 *iBase_BLOCKED, and 01947 * indicates order of 01948 *x, y, and z 01949 *coordinates in 01950 *coordinate array. 01951 ******************************************************************************/ 01952 01953 void iMesh_setVtxArrCoords( iMesh_Instance instance, 01954 /**< [in] iMesh instance handle */ 01955 const iBase_EntityHandle* vertex_handles, 01956 /**< [in] Array of vertex handles */ 01957 const int vertex_handles_size, 01958 /**< [in] Number of vertex handles in array */ 01959 const int storage_order, 01960 /**< [in] Storage order of coordinates in coordinate array */ 01961 const double* new_coords, 01962 /**< [in] Coordinate array */ 01963 const int new_coords_size, 01964 /**< [in] Size of coordinate array; should be */ 01965 int* err 01966 /**< [out] Returned Error status (see iBase_ErrorType) */ 01967 ); 01968 01969 /***************************************************************************/ /** 01970 * \ingroup 01971 *VertexEntities 01972 * \brief Create an 01973 *array of new 01974 *vertices at 01975 *specified 01976 *coordinates 01977 * 01978 * Create an array of 01979 *new vertices at 01980 *specified 01981 *coordinates. Value 01982 *of storage_order 01983 *must be either 01984 *iBase_INTERLEAVED or 01985 *iBase_BLOCKED. 01986 ******************************************************************************/ 01987 01988 void iMesh_createVtxArr( iMesh_Instance instance, 01989 /**< [in] iMesh instance handle */ 01990 const int num_verts, 01991 /**< [in] Number of new vertices to be created */ 01992 const int storage_order, 01993 /**< [in] Storage order of coordinates in new_coords array 01994 (see iBase_StorageOrder) */ 01995 const double* new_coords, 01996 /**< [in] Array of coordinates of new vertices. Should be G*num_verts 01997 in length where G is geometric dimension of the mesh. */ 01998 const int new_coords_size, 01999 /**< [in] Number of coordinates in new_coords array, should */ 02000 iBase_EntityHandle** new_vertex_handles, 02001 /**< [in,out] Pointer to array of new vertex handles \ref trio) */ 02002 int* new_vertex_handles_allocated, 02003 /**< [in,out] Pointer to allocated size of */ 02004 int* new_vertex_handles_size, 02005 /**< [out] Pointer to occupied size of */ 02006 int* err 02007 /**< [out] Returned Error status (see iBase_ErrorType) */ 02008 ); 02009 02010 /***************************************************************************/ /** 02011 * \ingroup Entities 02012 * \brief Create an 02013 *array of new 02014 *entities with 02015 *specified 02016 *lower-order topology 02017 * 02018 * Create an array of 02019 *new entities with 02020 *specified 02021 *lower-order 02022 *topology. Specified 02023 *new_entity_topology 02024 *must be value in 02025 *iMesh_EntityTopology 02026 * enumeration. Values 02027 *return in status 02028 *array must be values 02029 *in the 02030 * iBase_CreationStatus 02031 *enumeration. 02032 ******************************************************************************/ 02033 02034 void iMesh_createEntArr( iMesh_Instance instance, 02035 /**< [in] iMesh instance handle */ 02036 const int new_entity_topology, 02037 /**< [in] Topology of created entity */ 02038 const iBase_EntityHandle* lower_order_entity_handles, 02039 /**< [in] Array of lower order entity handles to be used to construct 02040 new entities */ 02041 const int lower_order_entity_handles_size, 02042 /**< [in] Number of entities in lower_order_entity_handles array */ 02043 iBase_EntityHandle** new_entity_handles, 02044 /**< [in,out] Pointer to array of new_entity_handles 02045 \ref trio) */ 02046 int* new_entity_handles_allocated, 02047 /**< [in,out] Pointer to allocated size of */ 02048 int* new_entity_handles_size, 02049 /**< [out] Pointer to occupied size of */ 02050 int** status, 02051 /**< [in,out] Pointer to array of creation status returned from 02052 \ref trio) (see iBase_CreationStatus) */ 02053 int* status_allocated, 02054 /**< [in,out] Pointer to allocated size of status array */ 02055 int* status_size, 02056 /**< [out] Pointer to occupied size of status array */ 02057 int* err 02058 /**< [out] Returned Error status (see iBase_ErrorType) */ 02059 ); 02060 02061 /***************************************************************************/ /** 02062 * \ingroup Entities 02063 * \brief Delete 02064 *specified entities 02065 * 02066 * Delete specified 02067 *entities 02068 ******************************************************************************/ 02069 02070 void iMesh_deleteEntArr( iMesh_Instance instance, 02071 /**< [in] iMesh instance handle */ 02072 const iBase_EntityHandle* entity_handles, 02073 /**< [in] Array of entity handles to be deleted */ 02074 const int entity_handles_size, 02075 /**< [in] Number of entities in array to be deleted */ 02076 int* err 02077 /**< [out] Returned Error status (see iBase_ErrorType) */ 02078 ); 02079 02080 /***************************************************************************/ /** 02081 * \ingroup Tags 02082 * \brief Create a 02083 *tag with specified 02084 *name, size, and type 02085 * 02086 * Create a tag with 02087 *specified name, 02088 *size, and type. Tag 02089 *size is in units of 02090 *size of tag_type 02091 *data types. Value 02092 *input for tag type 02093 *must be value in 02094 *iBase_TagType 02095 *enumeration. 02096 ******************************************************************************/ 02097 02098 void iMesh_createTag( iMesh_Instance instance, 02099 /**< [in] iMesh instance handle */ 02100 const char* tag_name, 02101 /**< [in] Character string indicating tag name */ 02102 const int tag_size, 02103 /**< [in] Size of each tag value, in units of number of 02104 tag_type datums. */ 02105 const int tag_type, 02106 /**< [in] Data type for data stored in this tag */ 02107 iBase_TagHandle* tag_handle, 02108 /**< [out] Pointer to tag handle returned from function */ 02109 int* err, 02110 /**< [out] Returned Error status (see iBase_ErrorType) */ 02111 const int tag_name_len 02112 /**< [in] Length of tag name string (\ref strlen) */ 02113 ); 02114 02115 /***************************************************************************/ /** 02116 * \ingroup Tags 02117 * \brief Destroy a 02118 *tag 02119 * 02120 * Destroy a tag. If 02121 *forced is non-zero 02122 *and entities still 02123 *have values set for 02124 *this tag, tag is 02125 *deleted anyway and 02126 *those values 02127 *disappear, otherwise 02128 *tag is not deleted. 02129 ******************************************************************************/ 02130 02131 void iMesh_destroyTag( iMesh_Instance instance, 02132 /**< [in] iMesh instance handle */ 02133 iBase_TagHandle tag_handle, 02134 /**< [in] Handle of tag to be deleted */ 02135 const int forced, 02136 /**< [in] If non-zero, delete the tag even if entities have values set 02137 for the tag. */ 02138 int* err 02139 /**< [out] Returned Error status (see iBase_ErrorType) */ 02140 ); 02141 02142 /***************************************************************************/ /** 02143 * \ingroup Tags 02144 * \brief Get the 02145 *name for a given tag 02146 *handle 02147 * 02148 * Get the name for a 02149 *given tag handle 02150 ******************************************************************************/ 02151 02152 void iMesh_getTagName( iMesh_Instance instance, 02153 /**< [in] iMesh instance handle */ 02154 const iBase_TagHandle tag_handle, 02155 /**< [in] Tag handle being queried */ 02156 char* name, 02157 /**< [in,out] Pointer to character string to store name returned from */ 02158 int* err, 02159 /**< [out] Returned Error status (see iBase_ErrorType) */ 02160 int name_len 02161 /**< [in] Length of character string input to function 02162 (\ref strlen) */ 02163 ); 02164 02165 /***************************************************************************/ /** 02166 * \ingroup Tags 02167 * \brief Get size of 02168 *a tag in units of 02169 *numbers of tag data 02170 *type 02171 * 02172 * Get size of a tag 02173 *in units of numbers 02174 *of tag data type 02175 ******************************************************************************/ 02176 02177 void iMesh_getTagSizeValues( iMesh_Instance instance, 02178 /**< [in] iMesh instance handle */ 02179 const iBase_TagHandle tag_handle, 02180 /**< [in] Handle of tag being queried */ 02181 int* tag_size, 02182 /**< [out] Pointer to tag size returned from function */ 02183 int* err 02184 /**< [out] Returned Error status (see iBase_ErrorType) */ 02185 ); 02186 02187 /***************************************************************************/ /** 02188 * \ingroup Tags 02189 * \brief Get size of 02190 *a tag in units of 02191 *bytes 02192 * 02193 * Get size of a tag 02194 *in units of bytes 02195 ******************************************************************************/ 02196 02197 void iMesh_getTagSizeBytes( iMesh_Instance instance, 02198 /**< [in] iMesh instance handle */ 02199 const iBase_TagHandle tag_handle, 02200 /**< [in] Handle of tag being queried */ 02201 int* tag_size, 02202 /**< [out] Pointer to tag size returned from function */ 02203 int* err 02204 /**< [out] Returned Error status (see iBase_ErrorType) */ 02205 ); 02206 02207 /***************************************************************************/ /** 02208 * \ingroup Tags 02209 * \brief Get a the 02210 *handle of an 02211 *existing tag with 02212 *the specified name 02213 * 02214 * Get a the handle of 02215 *an existing tag with 02216 *the specified name 02217 ******************************************************************************/ 02218 02219 void iMesh_getTagHandle( iMesh_Instance instance, 02220 /**< [in] iMesh instance handle */ 02221 const char* tag_name, 02222 /**< [in] Name of tag being queried */ 02223 iBase_TagHandle* tag_handle, 02224 /**< [out] Pointer to tag handle returned from function */ 02225 int* err, 02226 /**< [out] Returned Error status (see iBase_ErrorType) */ 02227 int tag_name_len 02228 /**< [in] Length of tag name string (\ref strlen) */ 02229 ); 02230 02231 /***************************************************************************/ /** 02232 * \ingroup Tags 02233 * \brief Get the 02234 *data type of the 02235 *specified tag handle 02236 * 02237 * Get the data type 02238 *of the specified tag 02239 *handle. Tag type is 02240 *a value in the 02241 *iBase_TagType 02242 *enumeration. 02243 ******************************************************************************/ 02244 02245 void iMesh_getTagType( iMesh_Instance instance, 02246 /**< [in] iMesh instance handle */ 02247 const iBase_TagHandle tag_handle, 02248 /**< [in] Handle for the tag being queried */ 02249 int* tag_type, 02250 /**< [out] Pointer to tag type returned from function */ 02251 int* err 02252 /**< [out] Returned Error status (see iBase_ErrorType) */ 02253 ); 02254 02255 /***************************************************************************/ /** 02256 * \ingroup TagsOnSets 02257 * \brief Set a tag 02258 *value of arbitrary 02259 *type on an entity 02260 *set 02261 * 02262 * Set a tag value of 02263 *arbitrary type on an 02264 *entity set. The tag 02265 *data is passed as 02266 *void*. 02267 *tag_value_size 02268 *specifies the size 02269 *of the memory 02270 * pointed to by 02271 *tag_value in terms 02272 *of bytes. 02273 *Applications are 02274 *free to use this 02275 *function to set data 02276 *of any type, not 02277 *just iBase_BYTES. 02278 * However, in all 02279 *cases, the size 02280 *specified by 02281 *tag_value_size is 02282 * always in terms of 02283 *bytes. 02284 ******************************************************************************/ 02285 02286 void iMesh_setEntSetData( iMesh_Instance instance, 02287 /**< [in] iMesh instance handle */ 02288 iBase_EntitySetHandle entity_set_handle, 02289 /**< [in] Entity set on which tag is being set */ 02290 const iBase_TagHandle tag_handle, 02291 /**< [in] Tag being set on an entity set */ 02292 const void* tag_value, 02293 /**< [in] Pointer to tag data being set on entity set */ 02294 const int tag_value_size, 02295 /**< [in] Size in bytes of tag data */ 02296 int* err 02297 /**< [out] Returned Error status (see iBase_ErrorType) */ 02298 ); 02299 02300 /***************************************************************************/ /** 02301 * \ingroup TagsOnSets 02302 * \brief Set a tag 02303 *value of integer 02304 *type on an entity 02305 *set 02306 * 02307 * Set a tag value of 02308 *integer type on an 02309 *entity set. 02310 ******************************************************************************/ 02311 02312 void iMesh_setEntSetIntData( iMesh_Instance instance, 02313 /**< [in] iMesh instance handle */ 02314 iBase_EntitySetHandle entity_set, 02315 /**< [in] Entity set on which tag is being set */ 02316 const iBase_TagHandle tag_handle, 02317 /**< [in] Tag being set on an entity set */ 02318 const int tag_value, 02319 /**< [in] Tag value being set on entity set */ 02320 int* err 02321 /**< [out] Returned Error status (see iBase_ErrorType) */ 02322 ); 02323 02324 /***************************************************************************/ /** 02325 * \ingroup TagsOnSets 02326 * \brief Set a tag 02327 *value of double type 02328 *on an entity set 02329 * 02330 * Set a tag value of 02331 *double type on an 02332 *entity set. 02333 ******************************************************************************/ 02334 02335 void iMesh_setEntSetDblData( iMesh_Instance instance, 02336 /**< [in] iMesh instance handle */ 02337 iBase_EntitySetHandle entity_set, 02338 /**< [in] Entity set on which tag is being set */ 02339 const iBase_TagHandle tag_handle, 02340 /**< [in] Tag being set on an entity set */ 02341 const double tag_value, 02342 /**< [in] Tag value being set on entity set */ 02343 int* err 02344 /**< [out] Returned Error status (see iBase_ErrorType) */ 02345 ); 02346 02347 /***************************************************************************/ /** 02348 * \ingroup TagsOnSets 02349 * \brief Set a tag 02350 *value of entity 02351 *handle type on an 02352 *entity set 02353 * 02354 * Set a tag value of 02355 *entity handle type 02356 *on an entity set. 02357 ******************************************************************************/ 02358 02359 void iMesh_setEntSetEHData( iMesh_Instance instance, 02360 /**< [in] iMesh instance handle */ 02361 iBase_EntitySetHandle entity_set, 02362 /**< [in] Entity set on which tag is being set */ 02363 const iBase_TagHandle tag_handle, 02364 /**< [in] Tag being set on an entity set */ 02365 const iBase_EntityHandle tag_value, 02366 /**< [in] Tag value being set on entity set */ 02367 int* err 02368 /**< [out] Returned Error status (see iBase_ErrorType) */ 02369 ); 02370 02371 /***************************************************************************/ /** 02372 * \ingroup TagsOnSets 02373 * \brief Set a tag 02374 *value of entity set 02375 *handle type on an 02376 * 02377 * entity set 02378 * Set a tag value of 02379 *entity set handle 02380 *type on an entity 02381 *set. 02382 ******************************************************************************/ 02383 02384 void iMesh_setEntSetESHData( iMesh_Instance instance, 02385 /**< [in] iMesh instance handle */ 02386 iBase_EntitySetHandle entity_set, 02387 /**< [in] Entity set on which tag is being set */ 02388 const iBase_TagHandle tag_handle, 02389 /**< [in] Tag being set on an entity set */ 02390 const iBase_EntitySetHandle tag_value, 02391 /**< [in] Tag value being set on entity set */ 02392 int* err 02393 /**< [out] Returned Error status (see iBase_ErrorType) */ 02394 ); 02395 02396 /***************************************************************************/ /** 02397 * \ingroup TagsOnSets 02398 * \brief Get the 02399 *value of a tag of 02400 *arbitrary type on an 02401 *entity set 02402 * 02403 * Get the value of a 02404 *tag of arbitrary 02405 *type on an entity 02406 *set. Tag data is 02407 *returned back as 02408 *void*. 02409 *tag_value_size 02410 *specifies the size 02411 *of the memory 02412 *pointed to by 02413 *tag_value in terms 02414 *of bytes. 02415 *Applications may use 02416 *this function to get 02417 *data of any type, 02418 *not just 02419 *iBase_BYTES. However 02420 *because this 02421 *function supports 02422 *data of arbitrary 02423 *type, in all cases 02424 *the size specified 02425 *by tag_value_size is 02426 *always in terms of 02427 *bytes. 02428 ******************************************************************************/ 02429 02430 void iMesh_getEntSetData( iMesh_Instance instance, 02431 /**< [in] iMesh instance handle */ 02432 const iBase_EntitySetHandle entity_set_handle, 02433 /**< [in] Entity set on which tag is being set */ 02434 const iBase_TagHandle tag_handle, 02435 /**< [in] Tag being set on an entity set */ 02436 void* tag_value, 02437 /**< [in,out] Pointer to tag data array being queried 02438 \ref trio) */ 02439 int* tag_value_allocated, 02440 /**< [in,out] Pointer allocated size, in bytes, of tag_value array. */ 02441 int* tag_value_size, 02442 /**< [out] Pointer to occupied size, in bytes, of tag_value array. */ 02443 int* err 02444 /**< [out] Returned Error status (see iBase_ErrorType) */ 02445 ); 02446 02447 /***************************************************************************/ /** 02448 * \ingroup TagsOnSets 02449 * \brief Get the 02450 *value of a tag of 02451 *integer type on an 02452 *entity set 02453 * 02454 * Get the value of a 02455 *tag of integer type 02456 *on an entity set. 02457 ******************************************************************************/ 02458 02459 void iMesh_getEntSetIntData( iMesh_Instance instance, 02460 /**< [in] iMesh instance handle */ 02461 const iBase_EntitySetHandle entity_set, 02462 /**< [in] Entity set on which tag is being set */ 02463 const iBase_TagHandle tag_handle, 02464 /**< [in] Tag being set on an entity set */ 02465 int* out_data, 02466 /**< [out] Pointer to tag value returned from function */ 02467 int* err 02468 /**< [out] Returned Error status (see iBase_ErrorType) */ 02469 ); 02470 02471 /***************************************************************************/ /** 02472 * \ingroup TagsOnSets 02473 * \brief Get the 02474 *value of a tag of 02475 *double type on an 02476 *entity set 02477 * 02478 * Get the value of a 02479 *tag of double type 02480 *on an entity set. 02481 ******************************************************************************/ 02482 02483 void iMesh_getEntSetDblData( iMesh_Instance instance, 02484 /**< [in] iMesh instance handle */ 02485 const iBase_EntitySetHandle entity_set, 02486 /**< [in] Entity set on which tag is being set */ 02487 const iBase_TagHandle tag_handle, 02488 /**< [in] Tag being set on an entity set */ 02489 double* out_data, 02490 /**< [out] Pointer to tag value returned from function */ 02491 int* err 02492 /**< [out] Returned Error status (see iBase_ErrorType) */ 02493 ); 02494 02495 /***************************************************************************/ /** 02496 * \ingroup TagsOnSets 02497 * \brief Get the 02498 *value of a tag of 02499 *entity handle type 02500 *on an entity set 02501 * 02502 * Get the value of a 02503 *tag of entity handle 02504 *type on an entity 02505 *set. 02506 ******************************************************************************/ 02507 02508 void iMesh_getEntSetEHData( iMesh_Instance instance, 02509 /**< [in] iMesh instance handle */ 02510 const iBase_EntitySetHandle entity_set, 02511 /**< [in] Entity set on which tag is being set */ 02512 const iBase_TagHandle tag_handle, 02513 /**< [in] Tag being set on an entity set */ 02514 iBase_EntityHandle* out_data, 02515 /**< [out] Pointer to tag value returned from function */ 02516 int* err 02517 /**< [out] Returned Error status (see iBase_ErrorType) */ 02518 ); 02519 02520 /***************************************************************************/ /** 02521 * \ingroup TagsOnSets 02522 * \brief Get the 02523 *value of a tag of 02524 *entity set handle 02525 *type on an 02526 * 02527 * entity set 02528 * Get the value of a 02529 *tag of entity set 02530 *handle type on an 02531 *entity set. 02532 ******************************************************************************/ 02533 02534 void iMesh_getEntSetESHData( iMesh_Instance instance, 02535 /**< [in] iMesh instance handle */ 02536 const iBase_EntitySetHandle entity_set, 02537 /**< [in] Entity set on which tag is being set */ 02538 const iBase_TagHandle tag_handle, 02539 /**< [in] Tag being set on an entity set */ 02540 iBase_EntitySetHandle* out_data, 02541 /**< [out] Pointer to tag value returned from function */ 02542 int* err 02543 /**< [out] Returned Error status (see iBase_ErrorType) */ 02544 ); 02545 02546 /***************************************************************************/ /** 02547 * \ingroup Tags 02548 * \brief Get all the 02549 *tags associated with 02550 *a specified entity 02551 *set 02552 * 02553 * Get all the tags 02554 *associated with a 02555 *specified entity set 02556 ******************************************************************************/ 02557 02558 void iMesh_getAllEntSetTags( iMesh_Instance instance, 02559 /**< [in] iMesh instance handle */ 02560 const iBase_EntitySetHandle entity_set_handle, 02561 /**< [in] Entity being queried */ 02562 iBase_TagHandle** tag_handles, 02563 /**< [in,out] Pointer to array of tag_handles returned from 02564 \ref trio) */ 02565 int* tag_handles_allocated, 02566 /**< [in,out] Pointer to allocated size of tag_handles */ 02567 int* tag_handles_size, 02568 /**< [out] Pointer to occupied size of tag_handles array */ 02569 int* err 02570 /**< [out] Returned Error status (see iBase_ErrorType) */ 02571 ); 02572 02573 /***************************************************************************/ /** 02574 * \ingroup Tags 02575 * \brief Remove a 02576 *tag value from an 02577 *entity set 02578 * 02579 * Remove a tag value 02580 *from an entity set 02581 ******************************************************************************/ 02582 02583 void iMesh_rmvEntSetTag( iMesh_Instance instance, 02584 /**< [in] iMesh instance handle */ 02585 iBase_EntitySetHandle entity_set_handle, 02586 /**< [in] Entity set from which tag is being removed */ 02587 const iBase_TagHandle tag_handle, 02588 /**< [in] Tag handle of tag being removed */ 02589 int* err 02590 /**< [out] Returned Error status (see iBase_ErrorType) */ 02591 ); 02592 02593 /***************************************************************************/ /** 02594 * \ingroup 02595 *VertexEntities 02596 * \brief Set 02597 *coordinates for a 02598 *vertex 02599 * 02600 * Set coordinates for 02601 *a vertex. 02602 ******************************************************************************/ 02603 02604 void iMesh_setVtxCoord( iMesh_Instance instance, 02605 /**< [in] iMesh instance handle */ 02606 iBase_EntityHandle vertex_handle, 02607 /**< [in] vertex handle being set */ 02608 const double x, 02609 /**< [in] x coordinate being set */ 02610 const double y, 02611 /**< [in] y coordinate being set */ 02612 const double z, 02613 /**< [in] z coordinate being set */ 02614 int* err 02615 /**< [out] Returned Error status (see iBase_ErrorType) */ 02616 ); 02617 02618 /***************************************************************************/ /** 02619 * \ingroup 02620 *VertexEntities 02621 * \brief Create a 02622 *new vertex at 02623 *specified 02624 *coordinates 02625 * 02626 * Create a new vertex 02627 *at specified 02628 *coordinates. 02629 ******************************************************************************/ 02630 02631 void iMesh_createVtx( iMesh_Instance instance, 02632 /**< [in] iMesh instance handle */ 02633 const double x, 02634 /**< [in] x coordinate of new vertex */ 02635 const double y, 02636 /**< [in] y coordinate of new vertex */ 02637 const double z, 02638 /**< [in] z coordinate of new vertex */ 02639 iBase_EntityHandle* new_vertex_handle, 02640 /**< [out] Pointer to new vertex handles returned from */ 02641 int* err 02642 /**< [out] Returned Error status (see iBase_ErrorType) */ 02643 ); 02644 02645 /***************************************************************************/ /** 02646 * \ingroup Entities 02647 * \brief Create a 02648 *new entity with 02649 *specified 02650 *lower-order topology 02651 * 02652 * Create a new entity 02653 *with specified 02654 *lower-order 02655 *topology. Specified 02656 *new_entity_topology 02657 *must be value in 02658 *iMesh_EntityTopology 02659 * enumeration. Value 02660 *returned as status 02661 *must be a value in 02662 *the 02663 * iBase_CreationStatus 02664 *enumeration. 02665 ******************************************************************************/ 02666 02667 void iMesh_createEnt( iMesh_Instance instance, 02668 /**< [in] iMesh instance handle */ 02669 const int new_entity_topology, 02670 /**< [in] Topology of created entity */ 02671 const iBase_EntityHandle* lower_order_entity_handles, 02672 /**< [in] Array of lower order entity handles to be used to construct 02673 new entity. */ 02674 const int lower_order_entity_handles_size, 02675 /**< [in] Number of entities in lower_order_entity_handles array */ 02676 iBase_EntityHandle* new_entity_handle, 02677 /**< [out] Pointer to new entity handle returned from */ 02678 int* status, 02679 /**< [out] Pointer to creation status returned from function 02680 (see iBase_CreationStatus) */ 02681 int* err 02682 /**< [out] Returned Error status (see iBase_ErrorType) */ 02683 ); 02684 02685 /***************************************************************************/ /** 02686 * \ingroup Entities 02687 * \brief Delete 02688 *specified entity 02689 * 02690 * Delete specified 02691 *entity 02692 ******************************************************************************/ 02693 02694 void iMesh_deleteEnt( iMesh_Instance instance, 02695 /**< [in] iMesh instance handle */ 02696 iBase_EntityHandle entity_handle, 02697 /**< [in] Entity to be deleted */ 02698 int* err 02699 /**< [out] Returned Error status (see iBase_ErrorType) */ 02700 ); 02701 02702 /***************************************************************************/ /** 02703 * \ingroup TagsOnArr 02704 * \brief Get tag 02705 *values of arbitrary 02706 *type for an array of 02707 *entities 02708 * 02709 * Get tag values of 02710 *arbitrary type for 02711 *an array of 02712 *entities. Tag data 02713 * is returned as 02714 *void*. 02715 *tag_values_size 02716 *specifies the size 02717 *of the memory 02718 *pointed to by 02719 *tag_values in terms 02720 *of bytes. 02721 *Applications may use 02722 *this function to get 02723 *data of any type, 02724 *not just 02725 *iBase_BYTES. 02726 * However, because 02727 *this function 02728 *supports data of 02729 *arbitrary type, in 02730 * all cases the size 02731 *specified by 02732 *tag_values_size 02733 *always in terms of 02734 * bytes. 02735 ******************************************************************************/ 02736 02737 void iMesh_getArrData( iMesh_Instance instance, 02738 /**< [in] iMesh instance handle */ 02739 const iBase_EntityHandle* entity_handles, 02740 /**< [in] Entity array on which tag is being set */ 02741 const int entity_handles_size, 02742 /**< [in] Number of entities in array */ 02743 const iBase_TagHandle tag_handle, 02744 /**< [in] Tag being set on an entity */ 02745 void* tag_values, 02746 /**< [in,out] Pointer to tag data array being returned. Note that the 02747 implicit INTERLEAVED storage order rule applies 02748 (see iBase_StorageOrder) \ref trio) */ 02749 int* tag_values_allocated, 02750 /**< [in,out] Pointer to allocated size of tag data array */ 02751 int* tag_values_size, 02752 /**< [out] Pointer to occupied size in bytes of tag data */ 02753 int* err 02754 /**< [out] Returned Error status (see iBase_ErrorType) */ 02755 ); 02756 02757 /***************************************************************************/ /** 02758 * \ingroup TagsOnArr 02759 * \brief Get tag 02760 *values of integer 02761 *type for an array of 02762 *entities 02763 * 02764 * Get tag values of 02765 *integer type for an 02766 *array of entities. 02767 ******************************************************************************/ 02768 02769 void iMesh_getIntArrData( iMesh_Instance instance, 02770 /**< [in] iMesh instance handle */ 02771 const iBase_EntityHandle* entity_handles, 02772 /**< [in] Entity array on which tag is being set */ 02773 const int entity_handles_size, 02774 /**< [in] Number of entities in array */ 02775 const iBase_TagHandle tag_handle, 02776 /**< [in] Tag being set on an entity */ 02777 int** tag_values, 02778 /**< [in,out] Pointer to tag data array being returned. Note that the 02779 implicit INTERLEAVED storage order rule applies 02780 (see iBase_StorageOrder) \ref trio) */ 02781 int* tag_values_allocated, 02782 /**< [in,out] Pointer to allocated size of tag data array */ 02783 int* tag_values_size, 02784 /**< [out] Pointer to occupied size of tag data array */ 02785 int* err 02786 /**< [out] Returned Error status (see iBase_ErrorType) */ 02787 ); 02788 02789 /***************************************************************************/ /** 02790 * \ingroup TagsOnArr 02791 * \brief Get tag 02792 *values of double 02793 *type for an array of 02794 *entities 02795 * 02796 * Get tag values of 02797 *double type for an 02798 *array of entities. 02799 ******************************************************************************/ 02800 02801 void iMesh_getDblArrData( iMesh_Instance instance, 02802 /**< [in] iMesh instance handle */ 02803 const iBase_EntityHandle* entity_handles, 02804 /**< [in] Entity array on which tag is being set */ 02805 const int entity_handles_size, 02806 /**< [in] Number of entities in array */ 02807 const iBase_TagHandle tag_handle, 02808 /**< [in] Tag being set on an entity */ 02809 double** tag_values, 02810 /**< [in,out] Pointer to tag data array being returned. Note that the 02811 implicit INTERLEAVED storage order rule applies 02812 (see iBase_StorageOrder) \ref trio) */ 02813 int* tag_values_allocated, 02814 /**< [in,out] Pointer to allocated size of tag data array */ 02815 int* tag_values_size, 02816 /**< [out] Pointer to occupied size of tag data array */ 02817 int* err 02818 /**< [out] Returned Error status (see iBase_ErrorType) */ 02819 ); 02820 02821 /***************************************************************************/ /** 02822 * \ingroup TagsOnArr 02823 * \brief Get tag 02824 *values of entity 02825 *handle type for an 02826 *array of entities 02827 * 02828 * Get tag values of 02829 *entity handle type 02830 *for an array of 02831 *entities. 02832 ******************************************************************************/ 02833 02834 void iMesh_getEHArrData( iMesh_Instance instance, 02835 /**< [in] iMesh instance handle */ 02836 const iBase_EntityHandle* entity_handles, 02837 /**< [in] Entity array on which tag is being set */ 02838 const int entity_handles_size, 02839 /**< [in] Number of entities in array */ 02840 const iBase_TagHandle tag_handle, 02841 /**< [in] Tag being set on an entity */ 02842 iBase_EntityHandle** tag_value, 02843 /**< [in,out] Pointer to tag data array being returned. Note that the 02844 implicit INTERLEAVED storage order rule applies 02845 (see iBase_StorageOrder) \ref trio) */ 02846 int* tag_value_allocated, 02847 /**< [in,out] Pointer to allocated size of tag data array */ 02848 int* tag_value_size, 02849 /**< [out] Pointer to occupied size of tag data array */ 02850 int* err 02851 /**< [out] Returned Error status (see iBase_ErrorType) */ 02852 ); 02853 02854 /***************************************************************************/ /** 02855 * \ingroup TagsOnArr 02856 * \brief Get tag 02857 *values of entity set 02858 *handle type for an 02859 *array of 02860 * 02861 * entities 02862 * Get tag values of 02863 *entity set handle 02864 *type for an array of 02865 *entities. 02866 ******************************************************************************/ 02867 02868 void iMesh_getESHArrData( iMesh_Instance instance, 02869 /**< [in] iMesh instance handle */ 02870 const iBase_EntityHandle* entity_handles, 02871 /**< [in] Entity array on which tag is being set */ 02872 const int entity_handles_size, 02873 /**< [in] Number of entities in array */ 02874 const iBase_TagHandle tag_handle, 02875 /**< [in] Tag being set on an entity */ 02876 iBase_EntitySetHandle** tag_value, 02877 /**< [in,out] Pointer to tag data array being returned. Note that the 02878 implicit INTERLEAVED storage order rule applies 02879 (see iBase_StorageOrder) \ref trio) */ 02880 int* tag_value_allocated, 02881 /**< [in,out] Pointer to allocated size of tag data array */ 02882 int* tag_value_size, 02883 /**< [out] Pointer to occupied size of tag data array */ 02884 int* err 02885 /**< [out] Returned Error status (see iBase_ErrorType) */ 02886 ); 02887 02888 /***************************************************************************/ /** 02889 * \ingroup TagsOnArr 02890 * \brief Set tag 02891 *values of arbitrary 02892 *type on an array of 02893 *entities 02894 * 02895 * Set tag values of 02896 *arbitrary type on an 02897 *array of entities. 02898 *Tag data is passed 02899 *as void*. 02900 *tag_values_size 02901 *specifies the size 02902 *of the memory 02903 *pointed to by 02904 *tag_values in terms 02905 *of bytes. 02906 *Applications may use 02907 *this function to set 02908 *data of any type, 02909 *not just 02910 *iBase_BYTES. 02911 * However, because 02912 *this function 02913 *supports data of 02914 *arbitrary type, in 02915 *all cases the size 02916 *specified by 02917 *tag_values_size is 02918 *always in terms of 02919 * bytes. 02920 ******************************************************************************/ 02921 02922 void iMesh_setArrData( iMesh_Instance instance, 02923 /**< [in] iMesh instance handle */ 02924 const iBase_EntityHandle* entity_handles, 02925 /**< [in] Entity array on which tag is being set */ 02926 const int entity_handles_size, 02927 /**< [in] Number of entities in array */ 02928 const iBase_TagHandle tag_handle, 02929 /**< [in] Tag being set on an entity */ 02930 const void* tag_values, 02931 /**< [in] Pointer to tag data being set on entity. Note that the 02932 implicit INTERLEAVED storage order rule applies 02933 (see iBase_StorageOrder) */ 02934 const int tag_values_size, 02935 /**< [in] Size in bytes of tag data */ 02936 int* err 02937 /**< [out] Returned Error status (see iBase_ErrorType) */ 02938 ); 02939 02940 /***************************************************************************/ /** 02941 * \ingroup TagsOnArr 02942 * \brief Set tag 02943 *values of integer 02944 *type on an array of 02945 *entities 02946 * 02947 * Set tag values of 02948 *integer type on an 02949 *array of entities. 02950 ******************************************************************************/ 02951 02952 void iMesh_setIntArrData( iMesh_Instance instance, 02953 /**< [in] iMesh instance handle */ 02954 const iBase_EntityHandle* entity_handles, 02955 /**< [in] Entity array on which tag is being set */ 02956 const int entity_handles_size, 02957 /**< [in] Number of entities in array */ 02958 const iBase_TagHandle tag_handle, 02959 /**< [in] Tag being set on an entity */ 02960 const int* tag_values, 02961 /**< [in] Pointer to tag data being set on entities. Note that the 02962 implicit INTERLEAVED storage order rule applies 02963 (see iBase_StorageOrder) */ 02964 const int tag_values_size, 02965 /**< [in] Size in total number of integers of tag data */ 02966 int* err 02967 /**< [out] Returned Error status (see iBase_ErrorType) */ 02968 ); 02969 02970 /***************************************************************************/ /** 02971 * \ingroup TagsOnArr 02972 * \brief Set tag 02973 *values of double 02974 *type on an array of 02975 *entities 02976 * 02977 * Set tag values of 02978 *double type on an 02979 *array of entities. 02980 ******************************************************************************/ 02981 02982 void iMesh_setDblArrData( iMesh_Instance instance, 02983 /**< [in] iMesh instance handle */ 02984 const iBase_EntityHandle* entity_handles, 02985 /**< [in] Entity array on which tag is being set */ 02986 const int entity_handles_size, 02987 /**< [in] Number of entities in array */ 02988 const iBase_TagHandle tag_handle, 02989 /**< [in] Tag being set on an entity */ 02990 const double* tag_values, 02991 /**< [in] Pointer to tag data being set on entities. Note that the 02992 implicit INTERLEAVED storage order rule applies 02993 (see iBase_StorageOrder) */ 02994 const int tag_values_size, 02995 /**< [in] Size in total number of doubles of tag data */ 02996 int* err 02997 /**< [out] Returned Error status (see iBase_ErrorType) */ 02998 ); 02999 03000 /***************************************************************************/ /** 03001 * \ingroup TagsOnArr 03002 * \brief Set tag 03003 *values of entity 03004 *handle type on an 03005 *array of entities 03006 * 03007 * Set tag values of 03008 *entity handle type 03009 *on an array of 03010 *entities. 03011 ******************************************************************************/ 03012 03013 void iMesh_setEHArrData( iMesh_Instance instance, 03014 /**< [in] iMesh instance handle */ 03015 const iBase_EntityHandle* entity_handles, 03016 /**< [in] Entity array on which tag is being set */ 03017 const int entity_handles_size, 03018 /**< [in] Number of entities in array */ 03019 const iBase_TagHandle tag_handle, 03020 /**< [in] Tag being set on an entity */ 03021 const iBase_EntityHandle* tag_values, 03022 /**< [in] Pointer to tag data being set on entities. Note that the 03023 implicit INTERLEAVED storage order rule applies 03024 (see iBase_StorageOrder) */ 03025 const int tag_values_size, 03026 /**< [in] Size in total number of entity handles of tag */ 03027 int* err 03028 /**< [out] Returned Error status (see iBase_ErrorType) */ 03029 ); 03030 03031 /***************************************************************************/ /** 03032 * \ingroup TagsOnArr 03033 * \brief Set tag 03034 *values of entity set 03035 *handle type on an 03036 *array of 03037 * 03038 * entities 03039 * Set tag values of 03040 *entity set handle 03041 *type on an array of 03042 *entities. 03043 ******************************************************************************/ 03044 03045 void iMesh_setESHArrData( iMesh_Instance instance, 03046 /**< [in] iMesh instance handle */ 03047 const iBase_EntityHandle* entity_handles, 03048 /**< [in] Entity array on which tag is being set */ 03049 const int entity_handles_size, 03050 /**< [in] Number of entities in array */ 03051 const iBase_TagHandle tag_handle, 03052 /**< [in] Tag being set on an entity */ 03053 const iBase_EntitySetHandle* tag_values, 03054 /**< [in] Pointer to tag data being set on entities. Note that the 03055 implicit INTERLEAVED storage order rule applies 03056 (see iBase_StorageOrder) */ 03057 const int tag_values_size, 03058 /**< [in] Size in total number of entity handles of tag */ 03059 int* err 03060 /**< [out] Returned Error status (see iBase_ErrorType) */ 03061 ); 03062 03063 /***************************************************************************/ /** 03064 * \ingroup Tags 03065 * \brief Remove a 03066 *tag value from an 03067 *array of entities 03068 * 03069 * Remove a tag value 03070 *from an array of 03071 *entities 03072 ******************************************************************************/ 03073 03074 void iMesh_rmvArrTag( iMesh_Instance instance, 03075 /**< [in] iMesh instance handle */ 03076 const iBase_EntityHandle* entity_handles, 03077 /**< [in] Entity from which tag is being removed */ 03078 const int entity_handles_size, 03079 /**< [in] Number of entities in entity array */ 03080 const iBase_TagHandle tag_handle, 03081 /**< [in] Tag handle of tag being removed */ 03082 int* err 03083 /**< [out] Returned Error status (see iBase_ErrorType) */ 03084 ); 03085 03086 /***************************************************************************/ /** 03087 * \ingroup TagsOnEnts 03088 * \brief Get the 03089 *value of a tag of 03090 *arbitrary type on an 03091 *entity 03092 * 03093 * Get the value of a 03094 *tag of arbitrary 03095 *type on an entity. 03096 *Tag data is passed 03097 *back as void*. 03098 *tag_value_size 03099 *specifies the size 03100 *of the memory 03101 *pointed to by 03102 *tag_value in terms 03103 *of bytes. 03104 *Applications may use 03105 *this function to get 03106 *data of any type, 03107 *not just 03108 *iBase_BYTES. 03109 * However, because 03110 *this function 03111 *supports arbitrary 03112 *type, in all cases 03113 *the size specified 03114 *by tag_value_size is 03115 *always in terms of 03116 * bytes. 03117 ******************************************************************************/ 03118 03119 void iMesh_getData( iMesh_Instance instance, 03120 /**< [in] iMesh instance handle */ 03121 const iBase_EntityHandle entity_handle, 03122 /**< [in] Entity on which tag is being set */ 03123 const iBase_TagHandle tag_handle, 03124 /**< [in] Tag being set on an entity */ 03125 void* tag_value, 03126 /**< [in,out] Pointer to tag data array being queried 03127 \ref trio) */ 03128 int* tag_value_allocated, 03129 /**< [in,out] Pointer to tag data array allocated size */ 03130 int* tag_value_size, 03131 /**< [out] Pointer to occupied size in bytes of tag data */ 03132 int* err 03133 /**< [out] Returned Error status (see iBase_ErrorType) */ 03134 ); 03135 03136 /***************************************************************************/ /** 03137 * \ingroup TagsOnEnts 03138 * \brief Get the 03139 *value of a tag of 03140 *integer type on an 03141 *entity 03142 * 03143 * Get the value of a 03144 *tag of integer type 03145 *on an entity. 03146 ******************************************************************************/ 03147 03148 void iMesh_getIntData( iMesh_Instance instance, 03149 /**< [in] iMesh instance handle */ 03150 const iBase_EntityHandle entity_handle, 03151 /**< [in] Entity on which tag is being set */ 03152 const iBase_TagHandle tag_handle, 03153 /**< [in] Tag being set on an entity */ 03154 int* out_data, 03155 /**< [out] Pointer to tag value returned from function */ 03156 int* err 03157 /**< [out] Returned Error status (see iBase_ErrorType) */ 03158 ); 03159 03160 /***************************************************************************/ /** 03161 * \ingroup TagsOnEnts 03162 * \brief Get the 03163 *value of a tag of 03164 *double type on an 03165 *entity 03166 * 03167 * Get the value of a 03168 *tag of double type 03169 *on an entity. 03170 ******************************************************************************/ 03171 03172 void iMesh_getDblData( iMesh_Instance instance, 03173 /**< [in] iMesh instance handle */ 03174 const iBase_EntityHandle entity_handle, 03175 /**< [in] Entity on which tag is being set */ 03176 const iBase_TagHandle tag_handle, 03177 /**< [in] Tag being set on an entity */ 03178 double* out_data, 03179 /**< [out] Pointer to tag value returned from function */ 03180 int* err 03181 /**< [out] Returned Error status (see iBase_ErrorType) */ 03182 ); 03183 03184 /***************************************************************************/ /** 03185 * \ingroup TagsOnEnts 03186 * \brief Get the 03187 *value of a tag of 03188 *entity handle type 03189 *on an entity 03190 * 03191 * Get the value of a 03192 *tag of entity handle 03193 *type on an entity. 03194 ******************************************************************************/ 03195 03196 void iMesh_getEHData( iMesh_Instance instance, 03197 /**< [in] iMesh instance handle */ 03198 const iBase_EntityHandle entity_handle, 03199 /**< [in] Entity on which tag is being set */ 03200 const iBase_TagHandle tag_handle, 03201 /**< [in] Tag being set on an entity */ 03202 iBase_EntityHandle* out_data, 03203 /**< [out] Pointer to tag value returned from function */ 03204 int* err 03205 /**< [out] Returned Error status (see iBase_ErrorType) */ 03206 ); 03207 03208 /***************************************************************************/ /** 03209 * \ingroup TagsOnEnts 03210 * \brief Get the 03211 *value of a tag of 03212 *entity set handle 03213 *type on an 03214 * 03215 * entity 03216 * Get the value of a 03217 *tag of entity set 03218 *handle type on an 03219 *entity. 03220 ******************************************************************************/ 03221 03222 void iMesh_getESHData( iMesh_Instance instance, 03223 /**< [in] iMesh instance handle */ 03224 const iBase_EntityHandle entity_handle, 03225 /**< [in] Entity on which tag is being set */ 03226 const iBase_TagHandle tag_handle, 03227 /**< [in] Tag being set on an entity */ 03228 iBase_EntitySetHandle* out_data, 03229 /**< [out] Pointer to tag value returned from function */ 03230 int* err 03231 /**< [out] Returned Error status (see iBase_ErrorType) */ 03232 ); 03233 03234 /***************************************************************************/ /** 03235 * \ingroup TagsOnEnts 03236 * \brief Set a tag 03237 *value of arbitrary 03238 *type on an entity 03239 * 03240 * Set a tag value of 03241 *arbitrary type on an 03242 *entity. Tag data is 03243 *passed as void*. 03244 *tag_value_size 03245 *specifies the size 03246 *of the memory 03247 *pointed to by 03248 *tag_value in terms 03249 *of bytes. 03250 *Applications may use 03251 *this function to set 03252 *data of any type, 03253 *not just 03254 *iBase_BYTES. 03255 * However, because 03256 *this function 03257 *supports data of 03258 *arbitrary type, in 03259 * all cases the size 03260 *specified by 03261 *tag_value_size is 03262 *always in terms of 03263 *bytes. 03264 ******************************************************************************/ 03265 03266 void iMesh_setData( iMesh_Instance instance, 03267 /**< [in] iMesh instance handle */ 03268 iBase_EntityHandle entity_handle, 03269 /**< [in] Entity on which tag is being set */ 03270 const iBase_TagHandle tag_handle, 03271 /**< [in] Tag being set on an entity */ 03272 const void* tag_value, 03273 /**< [in] Pointer to tag data being set on entity */ 03274 const int tag_value_size, 03275 /**< [in] Size in bytes of tag data */ 03276 int* err 03277 /**< [out] Returned Error status (see iBase_ErrorType) */ 03278 ); 03279 03280 /***************************************************************************/ /** 03281 * \ingroup TagsOnEnts 03282 * \brief Set a tag 03283 *value of integer 03284 *type on an entity 03285 * 03286 * Set a tag value of 03287 *integer type on an 03288 *entity. 03289 ******************************************************************************/ 03290 03291 void iMesh_setIntData( iMesh_Instance instance, 03292 /**< [in] iMesh instance handle */ 03293 iBase_EntityHandle entity_handle, 03294 /**< [in] Entity on which tag is being set */ 03295 const iBase_TagHandle tag_handle, 03296 /**< [in] Tag being set on an entity */ 03297 const int tag_value, 03298 /**< [in] Tag value being set on entity */ 03299 int* err 03300 /**< [out] Returned Error status (see iBase_ErrorType) */ 03301 ); 03302 03303 /***************************************************************************/ /** 03304 * \ingroup TagsOnEnts 03305 * \brief Set a tag 03306 *value of double type 03307 *on an entity 03308 * 03309 * Set a tag value of 03310 *double type on an 03311 *entity. 03312 ******************************************************************************/ 03313 03314 void iMesh_setDblData( iMesh_Instance instance, 03315 /**< [in] iMesh instance handle */ 03316 iBase_EntityHandle entity_handle, 03317 /**< [in] Entity on which tag is being set */ 03318 const iBase_TagHandle tag_handle, 03319 /**< [in] Tag being set on an entity */ 03320 const double tag_value, 03321 /**< [in] Tag value being set on entity */ 03322 int* err 03323 /**< [out] Returned Error status (see iBase_ErrorType) */ 03324 ); 03325 03326 /***************************************************************************/ /** 03327 * \ingroup TagsOnEnts 03328 * \brief Set a tag 03329 *value of entity 03330 *handle type on an 03331 *entity 03332 * 03333 * Set a tag value of 03334 *entity handle type 03335 *on an entity. 03336 ******************************************************************************/ 03337 03338 void iMesh_setEHData( iMesh_Instance instance, 03339 /**< [in] iMesh instance handle */ 03340 iBase_EntityHandle entity_handle, 03341 /**< [in] Entity on which tag is being set */ 03342 const iBase_TagHandle tag_handle, 03343 /**< [in] Tag being set on an entity */ 03344 const iBase_EntityHandle tag_value, 03345 /**< [in] Tag value being set on entity */ 03346 int* err 03347 /**< [out] Returned Error status (see iBase_ErrorType) */ 03348 ); 03349 03350 /***************************************************************************/ /** 03351 * \ingroup TagsOnEnts 03352 * \brief Set a tag 03353 *value of entity set 03354 *handle type on an 03355 *entity 03356 * 03357 * Set a tag value of 03358 *entity set handle 03359 *type on an entity. 03360 ******************************************************************************/ 03361 03362 void iMesh_setESHData( iMesh_Instance instance, 03363 /**< [in] iMesh instance handle */ 03364 iBase_EntityHandle entity_handle, 03365 /**< [in] Entity on which tag is being set */ 03366 const iBase_TagHandle tag_handle, 03367 /**< [in] Tag being set on an entity */ 03368 const iBase_EntitySetHandle tag_value, 03369 /**< [in] Tag value being set on entity */ 03370 int* err 03371 /**< [out] Returned Error status (see iBase_ErrorType) */ 03372 ); 03373 03374 /***************************************************************************/ /** 03375 * \ingroup Tags 03376 * \brief Get all the 03377 *tags associated with 03378 *a specified entity 03379 *handle 03380 * 03381 * Get all the tags 03382 *associated with a 03383 *specified entity 03384 *handle 03385 ******************************************************************************/ 03386 03387 void iMesh_getAllTags( iMesh_Instance instance, 03388 /**< [in] iMesh instance handle */ 03389 const iBase_EntityHandle entity_handle, 03390 /**< [in] Entity being queried */ 03391 iBase_TagHandle** tag_handles, 03392 /**< [in,out] Pointer to array of tag_handles returned from 03393 \ref trio) */ 03394 int* tag_handles_allocated, 03395 /**< [in,out] Pointer to allocated size of tag_handles */ 03396 int* tag_handles_size, 03397 /**< [out] Pointer to occupied size of tag_handles array */ 03398 int* err 03399 /**< [out] Returned Error status (see iBase_ErrorType) */ 03400 ); 03401 03402 /***************************************************************************/ /** 03403 * \ingroup Tags 03404 * \brief Remove a 03405 *tag value from an 03406 *entity 03407 * 03408 * Remove a tag value 03409 *from an entity 03410 ******************************************************************************/ 03411 03412 void iMesh_rmvTag( iMesh_Instance instance, 03413 /**< [in] iMesh instance handle */ 03414 iBase_EntityHandle entity_handle, 03415 /**< [in] Entity from which tag is being removed */ 03416 const iBase_TagHandle tag_handle, 03417 /**< [in] Tag handle of tag being removed */ 03418 int* err 03419 /**< [out] Returned Error status (see iBase_ErrorType) */ 03420 ); 03421 03422 /***************************************************************************/ /** 03423 * \ingroup 03424 *EntityIterators 03425 * \brief Initialize 03426 *an iterator over 03427 *specified entity 03428 *type, topology, and 03429 *size 03430 * 03431 * Initialize an 03432 *iterator over 03433 *specified entity 03434 *type, topology, and 03435 *size, for a 03436 *specified set or 03437 *instance. Iterator 03438 *returned can be used 03439 *as input to 03440 *functions returning 03441 *the entity for the 03442 *iterator. If all 03443 *entities of a 03444 *specified type 03445 *and/or topology are 03446 *to be iterated, 03447 *specify 03448 * iBase_ALL_TYPES or 03449 *iMesh_ALL_TOPOLOGIES, 03450 *respectively. 03451 *Specified type or 03452 *topology must be a 03453 *value in the 03454 *iBase_EntityType or 03455 * iMesh_EntityTopology 03456 *enumerations, 03457 *respectively. 03458 * 03459 * Note: This function 03460 *will fail and return 03461 *an error if the 03462 *caller passes a 03463 * combination of 03464 *entity_type and 03465 *entity_topology that 03466 *are not consistent. 03467 ******************************************************************************/ 03468 03469 void iMesh_initEntIter( iMesh_Instance instance, 03470 /**< [in] iMesh instance handle */ 03471 const iBase_EntitySetHandle entity_set_handle, 03472 /**< [in] Entity set being iterated */ 03473 const int requested_entity_type, 03474 /**< [in] Type of entity to iterate */ 03475 const int requested_entity_topology, 03476 /**< [in] Topology of entity to iterate */ 03477 const int resilient, 03478 /**< [in] If zero, return a non-resilient iterator. 03479 Otherwise, a resilient iterator (\ref resilient) */ 03480 iBase_EntityIterator* entity_iterator, 03481 /**< [out] Pointer to iterator returned from function */ 03482 int* err 03483 /**< [out] Returned Error status (see iBase_ErrorType) */ 03484 ); 03485 03486 /***************************************************************************/ /** 03487 * \ingroup 03488 *EntityIterators 03489 * \brief Get entity 03490 *corresponding to an 03491 *iterator and 03492 *increment iterator 03493 * 03494 * Get the entity 03495 *corresponding to an 03496 *iterator (that is, 03497 *dereference the 03498 *iterator), and 03499 *increment the 03500 *iterator. The 03501 *dereferenced value 03502 * is returned in 03503 *'entity_handle'. If 03504 *the iterator is at 03505 *the end of the 03506 * iteration, the 03507 *dereferenced value 03508 *will be undefined 03509 *and 'has_data' will 03510 *have a value of 03511 *zero. Otherwise, 03512 *'has_data' will have 03513 *a non-zero value. 03514 ******************************************************************************/ 03515 03516 void iMesh_getNextEntIter( iMesh_Instance instance, 03517 /**< [in] iMesh instance handle */ 03518 iBase_EntityIterator entity_iterator, 03519 /**< [in] Iterator being queried */ 03520 iBase_EntityHandle* entity_handle, 03521 /**< [out] Pointer to an entity handle corresponding to the current 03522 value of iterator just prior to the call. */ 03523 int* has_data, 03524 /**< [out] Pointer to a flag indicating if the value returned in 03525 entity_handle is valid. A non-zero value indicates the value is 03526 valid. A zero value indicates the value is NOT valid. */ 03527 int* err 03528 /**< [out] Returned Error status (see iBase_ErrorType) */ 03529 ); 03530 03531 /***************************************************************************/ /** 03532 * \ingroup 03533 *EntityIterators 03534 * \brief Reset the 03535 *iterator 03536 * 03537 * Reset the iterator 03538 ******************************************************************************/ 03539 03540 void iMesh_resetEntIter( iMesh_Instance instance, 03541 /**< [in] iMesh instance handle */ 03542 iBase_EntityIterator entity_iterator, 03543 /**< [in] Iterator to reset */ 03544 int* err 03545 /**< [out] Returned Error status (see iBase_ErrorType) */ 03546 ); 03547 03548 /***************************************************************************/ /** 03549 * \ingroup 03550 *EntityIterators 03551 * \brief Destroy the 03552 *specified iterator 03553 * 03554 * Destroy the 03555 *specified iterator 03556 ******************************************************************************/ 03557 03558 void iMesh_endEntIter( iMesh_Instance instance, 03559 /**< [in] iMesh instance handle */ 03560 iBase_EntityIterator entity_iterator, 03561 /**< [in] Iterator which gets destroyed */ 03562 int* err 03563 /**< [out] Returned Error status (see iBase_ErrorType) */ 03564 ); 03565 03566 /***************************************************************************/ /** 03567 * \ingroup Entities 03568 * \brief Get the 03569 *entity topology for 03570 *the specified entity 03571 * 03572 * Get the entity 03573 *topology for the 03574 *specified entity. 03575 *Topology returned is 03576 *a value in the 03577 *iMesh_EntityTopology 03578 *enumeration. 03579 ******************************************************************************/ 03580 03581 void iMesh_getEntTopo( iMesh_Instance instance, 03582 /**< [in] iMesh instance handle */ 03583 const iBase_EntityHandle entity_handle, 03584 /**< [in] Entity handle being queried */ 03585 int* out_topo, 03586 /**< [out] Pointer to entity topology returned from function */ 03587 int* err 03588 /**< [out] Returned Error status (see iBase_ErrorType) */ 03589 ); 03590 03591 /***************************************************************************/ /** 03592 * \ingroup Entities 03593 * \brief Get the 03594 *entity type for the 03595 *specified entity 03596 * 03597 * Get the entity type 03598 *for the specified 03599 *entity. Type 03600 *returned is a value 03601 * in the 03602 *iBase_EntityType 03603 *enumeration. 03604 ******************************************************************************/ 03605 03606 void iMesh_getEntType( iMesh_Instance instance, 03607 /**< [in] iMesh instance handle */ 03608 const iBase_EntityHandle entity_handle, 03609 /**< [in] Entity handle being queried */ 03610 int* out_type, 03611 /**< [out] Pointer to entity type returned from function */ 03612 int* err 03613 /**< [out] Returned Error status (see iBase_ErrorType) */ 03614 ); 03615 03616 /***************************************************************************/ /** 03617 * \ingroup 03618 *VertexEntities 03619 * \brief Get 03620 *coordinates of 03621 *specified vertex 03622 * 03623 * Get coordinates of 03624 *specified vertex. 03625 ******************************************************************************/ 03626 03627 void iMesh_getVtxCoord( iMesh_Instance instance, 03628 /**< [in] iMesh instance handle */ 03629 const iBase_EntityHandle vertex_handle, 03630 /**< [in] Mesh vertex being queried */ 03631 double* x, 03632 /**< [out] Pointer to x coordinate returned from function */ 03633 double* y, 03634 /**< [out] Pointer to y coordinate returned from function */ 03635 double* z, 03636 /**< [out] Pointer to z coordinate returned from function */ 03637 int* err 03638 /**< [out] Returned Error status (see iBase_ErrorType) */ 03639 ); 03640 03641 /***************************************************************************/ /** 03642 * \ingroup 03643 *Adjacencies \brief 03644 *Get entities of 03645 *specified type 03646 *adjacent to an 03647 *entity 03648 * 03649 * Get entities of 03650 *specified type 03651 *adjacent to an 03652 *entity. Specified 03653 *type must be value 03654 *in the 03655 *iBase_EntityType 03656 *enumeration. 03657 * 03658 * Note 1: Because 03659 *'adjacent' as 03660 *defined by the iMesh 03661 *data model refers to 03662 *those entities that 03663 *bound another, the 03664 *entity being queried 03665 * here (in 03666 *entity_handle arg) 03667 *is NEVER ALSO 03668 *returned in 03669 * adj_entity_handles 03670 *even if the 03671 *entity_type_requested 03672 * matches the 03673 *entity type in 03674 *entity_handle. 03675 ******************************************************************************/ 03676 03677 void iMesh_getEntAdj( iMesh_Instance instance, 03678 /**< [in] iMesh instance handle */ 03679 const iBase_EntityHandle entity_handle, 03680 /**< [in] Entity handle being queried */ 03681 const int entity_type_requested, 03682 /**< [in] Type of adjacent entities requested */ 03683 iBase_EntityHandle** adj_entity_handles, 03684 /**< [in,out] Pointer to array of adjacent entities \ref trio) */ 03685 int* adj_entity_handles_allocated, 03686 /**< [in,out] Pointer to allocated size of adj_entity_handles */ 03687 int* adj_entity_handles_size, 03688 /**< [out] Pointer to occupied size of adj_entity_handles */ 03689 int* err 03690 /**< [out] Returned Error status (see iBase_ErrorType) */ 03691 ); 03692 03693 /***************************************************************************/ /** 03694 * \ingroup 03695 *Adjacencies \brief 03696 *Get "2nd order" 03697 *adjacencies to an 03698 *entity 03699 * 03700 * Get "2nd order" 03701 *adjacencies to an 03702 *entity, that is, 03703 *from an entity, 03704 *through other 03705 *entities of a 03706 *specified "bridge" 03707 *dimension, to other 03708 *entities of another 03709 *specified "to" 03710 *dimension. Note 1: 03711 *If the "bridge" 03712 *dimension is the 03713 *same as the "to" 03714 *dimension or the 03715 *dimension of the 03716 *input entity, the 03717 *output will be empty 03718 * (and an error 03719 *code of 03720 *iBase_INVALID_ARGUMENT 03721 *returned). This is 03722 * consistent with 03723 *the definition of 03724 *adjacencies and the 03725 *behavior of iMesh 03726 *first adjacency 03727 *calls. Note 2: An 03728 *entity will never be 03729 *returned as a second 03730 *adjacency of itself, 03731 *on the grounds that 03732 *this is the most 03733 *likely expectation 03734 *of applications, and 03735 *that it is easier 03736 *for an application 03737 *to add the original 03738 *entity to the 03739 *returned data than 03740 *to find and remove 03741 *it. 03742 ******************************************************************************/ 03743 03744 void iMesh_getEnt2ndAdj( iMesh_Instance instance, 03745 /**< [in] iMesh instance handle */ 03746 iBase_EntityHandle entity_handle, 03747 /**< [in] Entity from which adjacencies are requested */ 03748 int bridge_entity_type, 03749 /**< [in] Type of bridge entity for 2nd order adjacencies */ 03750 int requested_entity_type, 03751 /**< [in] Type of adjacent entities returned */ 03752 iBase_EntityHandle** adjacent_entities, 03753 /**< [in,out] Adjacent entities \ref trio) */ 03754 int* adjacent_entities_allocated, 03755 /**< [in,out] Allocated size of returned array */ 03756 int* adjacent_entities_size, 03757 /**< [out] Occupied size of returned array */ 03758 int* err 03759 /**< [out] Returned Error status (see iBase_ErrorType) */ 03760 ); 03761 03762 /***************************************************************************/ /** 03763 * \ingroup 03764 *EntitySetOperators 03765 * \brief Subtract 03766 *contents of one 03767 *entity set from 03768 *another 03769 * 03770 * Subtract contents 03771 *of one entity set 03772 *from another 03773 ******************************************************************************/ 03774 03775 void iMesh_subtract( iMesh_Instance instance, 03776 /**< [in] iMesh instance handle */ 03777 const iBase_EntitySetHandle entity_set_1, 03778 /**< [in] Entity set from which other set is being subtracted */ 03779 const iBase_EntitySetHandle entity_set_2, 03780 /**< [in] Entity set being subtracted from other set */ 03781 iBase_EntitySetHandle* result_entity_set, 03782 /**< [out] Pointer to entity set returned from function */ 03783 int* err 03784 /**< [out] Returned Error status (see iBase_ErrorType) */ 03785 ); 03786 03787 /***************************************************************************/ /** 03788 * \ingroup 03789 *EntitySetOperators 03790 * \brief Intersect 03791 *contents of one 03792 *entity set with 03793 *another 03794 * 03795 * Intersect contents 03796 *of one entity set 03797 *with another 03798 ******************************************************************************/ 03799 03800 void iMesh_intersect( iMesh_Instance instance, 03801 /**< [in] iMesh instance handle */ 03802 const iBase_EntitySetHandle entity_set_1, 03803 /**< [in] Entity set being intersected with another */ 03804 const iBase_EntitySetHandle entity_set_2, 03805 /**< [in] Entity set being intersected with another */ 03806 iBase_EntitySetHandle* result_entity_set, 03807 /**< [out] Pointer to entity set returned from function */ 03808 int* err 03809 /**< [out] Returned Error status (see iBase_ErrorType) */ 03810 ); 03811 03812 /***************************************************************************/ /** 03813 * \ingroup 03814 *EntitySetOperators 03815 * \brief Unite 03816 *contents of one 03817 *entity set with 03818 *another 03819 * 03820 ******************************************************************************/ 03821 03822 void iMesh_unite( iMesh_Instance instance, 03823 /**< [in] iMesh instance handle */ 03824 const iBase_EntitySetHandle entity_set_1, 03825 /**< [in] Entity set being united with another */ 03826 const iBase_EntitySetHandle entity_set_2, 03827 /**< [in] Entity set being united with another */ 03828 iBase_EntitySetHandle* result_entity_set, 03829 /**< [out] Pointer to entity set returned from function */ 03830 int* err 03831 /**< [out] Returned Error status (see iBase_ErrorType) */ 03832 ); 03833 03834 /***************************************************************************/ /** 03835 * \page imesh iMesh: 03836 *ITAPS Serial Mesh 03837 *Interface 03838 * 03839 * The ITAPS Mesh 03840 *Interface iMesh 03841 *provides a common 03842 *interface for 03843 * accessing mesh and 03844 *data associated with 03845 *a mesh. Applications 03846 *written to use this 03847 *interface can use a 03848 *variety of 03849 *implementations, 03850 *choosing the one 03851 *that best meets its 03852 *needs. They can 03853 *also use tools 03854 *written to this 03855 *interface, for 03856 *example mesh 03857 *smoothing, adaptive 03858 *mesh refinement, and 03859 *parallel mesh 03860 *support. 03861 * 03862 * The ITAPS 03863 *interfaces use a 03864 *data model composed 03865 *of four basic data 03866 *types: /Entity/: 03867 *basic topological 03868 *entities in a mesh, 03869 *e.g. vertices, 03870 * triangles, 03871 *hexahedra. /Entity 03872 *Set/: arbitrary 03873 *grouping of other 03874 *entities and sets. 03875 * Entity sets also 03876 *support parent/child 03877 *relations with other 03878 *sets which are 03879 *distinct from 03880 *entities contained 03881 *in those sets. 03882 *Parent/child links 03883 * can be used to 03884 *embed graph 03885 *relationships 03886 *between sets, e.g. 03887 *to represent 03888 *topological 03889 *relationships 03890 *between the sets. 03891 * /Interface/: the 03892 *object with which 03893 *mesh is associated 03894 *and on which 03895 * functions in iMesh 03896 *are called. /Tag/: 03897 *application data 03898 *associated with 03899 *objects of any of 03900 *the other data 03901 *types. Each tag has 03902 *a designated name, 03903 *size, and data type. 03904 * 03905 * ITAPS Entity Type, 03906 *Topology Each entity 03907 *has a specific 03908 *Entity Type and 03909 *Entity Topology. The 03910 *Entity Type is one 03911 *of VERTEX, EDGE, 03912 *FACE, and REGION, 03913 *and is synonymous 03914 *with the topological 03915 *dimension of the 03916 *entity. The Entity 03917 *Topology denotes the 03918 *specific shape, for 03919 *example TRIANGLE, 03920 *QUADRILATERAL, 03921 *TETRAHEDRON, and 03922 *HEXAHEDRON. Entity 03923 *Type and Entity 03924 *Topology exist as 03925 *enumerated types, 03926 *Entity Type in the 03927 *iBase_EntityType 03928 *enumeration, and 03929 * Entity Topology in 03930 *the 03931 *iMesh_EntityTopology 03932 *enumeration. 03933 * 03934 * ITAPS Entity-, 03935 *Array-, and 03936 *Iterator-Based 03937 *Access The iMesh 03938 *interface provides 03939 *functions for 03940 *accessing entities 03941 * individually, as 03942 *arrays of entities, 03943 *or using iterators. 03944 *These access methods 03945 *have different 03946 *memory versus 03947 *execution time 03948 *tradeoffs, depending 03949 *on the 03950 *implementation. 03951 * 03952 * \image html 03953 *example_pic.jpeg 03954 * 03955 * \subpage cycles 03956 * 03957 * \page cycles Cycles 03958 *in Set-Inclusion and 03959 *Parent-Child 03960 *structures. 03961 * 03962 * There are two 03963 *graph-like 03964 *structures in the 03965 *iMesh interface and 03966 *data model; the 03967 *set-inclusion 03968 *structure and the 03969 *parent-child link 03970 *structure. Whether 03971 *these structures 03972 *support cycles is 03973 *relevant to 03974 *implementors. 03975 * 03976 * Over the evolution 03977 *of the iMesh data 03978 *model and API, both 03979 *of these structures 03980 *have been viewed 03981 *more or less like a 03982 *tree and so cycles 03983 *seem incompatible 03984 *with that notion. 03985 * 03986 * Allowing a cycle in 03987 *the set inclusion 03988 *structure implies 03989 *all entity sets in 03990 *the cycle are all 03991 *equal to each other. 03992 *That is the only 03993 *rational, 03994 * model-level view 03995 *that would allow 03996 *them all to be 03997 *(improper) subsets 03998 *of each other. On 03999 *the other hand if 04000 *the iMesh 04001 *specification 04002 *excludes cycles from 04003 *the set inclusion 04004 *structure, the time 04005 *complexity 04006 *(performance) as a 04007 * function of the 04008 *number of entity 04009 *sets may be 04010 *prohibitive for 04011 * implementations to 04012 *detect and prevent 04013 *them. 04014 * 04015 * Allowing a cycle in 04016 *the parent-child 04017 *link structure seems 04018 *likewise hard to 04019 *justify. However, 04020 *when the 04021 *parent-child 04022 *structure is viewed 04023 *more like a general 04024 *graph (a view that 04025 *the current API 04026 *itself supports even 04027 *if the function 04028 *names themselves do 04029 *not suggest that) 04030 *than specifically a 04031 *tree, the admission 04032 *of cycles there is 04033 *potentially more 04034 *natural and useful. 04035 * 04036 * Implementations are 04037 *required to support 04038 *cycles in the 04039 *Parent-Child 04040 * structure. 04041 *Implementations are 04042 *neither required to 04043 *support nor required 04044 * to explicitly 04045 *prevent cycles in 04046 *the Set-Inclusion 04047 *structure. Portable 04048 * applications should 04049 *NOT rely on 04050 *implementations 04051 *support for cycles 04052 * in the 04053 *set-inclusion 04054 *structure. 04055 ******************************************************************************/ 04056 04057 /***************************************************************************/ /** 04058 * \defgroup iMesh 04059 *iMesh 04060 ******************************************************************************/ 04061 04062 /***************************************************************************/ /** 04063 * \defgroup 04064 *Initialization 04065 *Initialization 04066 * \ingroup iMesh 04067 ******************************************************************************/ 04068 04069 /***************************************************************************/ /** 04070 * \defgroup Entities 04071 *Entities \ingroup 04072 *iMesh 04073 ******************************************************************************/ 04074 04075 /***************************************************************************/ /** 04076 * \defgroup 04077 *VertexEntities 04078 *Vertex Entities 04079 * \ingroup Entities 04080 ******************************************************************************/ 04081 04082 /***************************************************************************/ /** 04083 * \defgroup 04084 *EntitySets Entity 04085 *Sets \ingroup iMesh 04086 ******************************************************************************/ 04087 04088 /***************************************************************************/ /** 04089 * \defgroup 04090 *EntitySetOperators 04091 *Entity Set Operators 04092 * \ingroup EntitySets 04093 ******************************************************************************/ 04094 04095 /***************************************************************************/ /** 04096 * \defgroup 04097 *Adjacencies 04098 *Adjacencies \ingroup 04099 *iMesh 04100 ******************************************************************************/ 04101 04102 /***************************************************************************/ /** 04103 * \defgroup 04104 *EntityIterators 04105 *Entity Iterators 04106 * \ingroup iMesh 04107 ******************************************************************************/ 04108 04109 /***************************************************************************/ /** 04110 * \defgroup Tags Tags 04111 * \ingroup iMesh 04112 ******************************************************************************/ 04113 04114 /***************************************************************************/ /** 04115 * \defgroup TagData 04116 *Tag Data \ingroup 04117 *iMesh 04118 ******************************************************************************/ 04119 04120 /***************************************************************************/ /** 04121 * \defgroup 04122 *TagsOnEnts Tag Data 04123 *On Entities \ingroup 04124 *TagData 04125 ******************************************************************************/ 04126 04127 /***************************************************************************/ /** 04128 * \defgroup 04129 *TagsOnSets Tag Data 04130 *On Entity Sets 04131 * \ingroup TagData 04132 ******************************************************************************/ 04133 04134 /***************************************************************************/ /** 04135 * \defgroup TagsOnArr 04136 *Tag Data On Arrays 04137 *of Entities \ingroup 04138 *TagData 04139 ******************************************************************************/ 04140 04141 /***************************************************************************/ /** 04142 * \defgroup 04143 *MeshModification 04144 *Mesh Modification 04145 * \ingroup iMesh 04146 ******************************************************************************/ 04147 04148 /***************************************************************************/ /** 04149 * \defgroup 04150 *ParentChildLinks 04151 *Parent Child Links 04152 * \ingroup iMesh 04153 ******************************************************************************/ 04154 04155 /***************************************************************************/ /** 04156 * \defgroup Datatypes 04157 *Datatypes \ingroup 04158 *iMesh 04159 ******************************************************************************/ 04160 04161 #ifdef __cplusplus 04162 } /* extern "C" */ 04163 #endif 04164 04165 #endif /* ifndef _ITAPS_iMesh */