| 
 
 IMeshEx(64) Interface
GetVertexGetSimplexGetVertexPositionGetSimplexPositionUpgradeIsUpgradedDowngradeIsClosedSurfaceExtractExtract2MergeSplitLinkedComponentsRefineSmoothLaplacian 
This interface gives access to interfaces implemented by individual elements of
the mesh, which give full control of the element parameters and structure.
IMeshEx can be queried from IMesh interface. See also Morph sample, IMesh,
IVertex, ISimplex 
Interface List 
 HRESULT GetVertex(POSN vertex, IVertex** iVertex )   Parameters vertex - [in] 
position of the vertex in vertex
list of the mesh.   iVertex - [out, retval] - Returned reference to IVertex
interface, implemented by the vertex.  Returns  
  S_OK in case of 
  success. 
  Remarks:  Retrieves reference to IVertex interface,
implemented by the vertex identified by its position 
in vertex
list of the mesh. 
 HRESULT GetSimplex(POSN simplex,      ISimplex** iSimplex )       Parameters simplex       - [in] 
position of the simplex in the simplex
list of the mesh. iSimplex - [out, retval] - Returned reference to ISimplex
interface, implemented by the simplex. Return Values 
  S_OK in case of 
  success. 
      
  Remarks:  Retrieves reference to ISimplex
 interface,
implemented by the vertex identified by its position 
in simplex list of the mesh. 
 HRESULT GetVertexPosition(IVertex* iVertex, POSN* position)       Parameters  iVertex - [in] - Reference to IVertex
interface, implemented by the vertex.  position      - [out, retval] - Returned  
position   of the vertex in the vertex
list of the mesh. 
  Remarks: 
 Retrieves position of a vertex in vertex list of the mesh. 
 HRESULT GetSimplexPosition(ISimplex* simplex, POSN* position)       Parameters simplex - [in] - Reference to ISimplex
interface, implemented by the simplex. position      - [out, retval] - Returned  
position  of the simplex in the simplex
list of the mesh. 
  Remarks: 
 Retrieves position of a simplex in simplex list of the mesh. 
 HRESULT Upgrade()       
  Remarks: 
 Generates incidence information which allows traversing from a simplex or vertex 
    to its adjacent simplex, vertex or edge elements. This operation is relatively 
    expensive computationally and consumers significant amount of additional memory 
    for large meshes. A mesh must be in upgraded state to be able to obtain 
    ISimplexEx_KC, 
    IVertexEx_KC and 
    IEdge_KC interfaces. It is recommended to call 
    the Dongrade() method below once the incidence information is no longer needed. It is not an error to call this method in already upgraded state, in which case 
    the method exits without repeating the operation. 
 HRESULT IsUpgraded(VARIANT_BOOL* upgraded)       ParaParameters upgraded - [out, retval] - Returns the current upgrade 
    state of the mesh. See remarks for the Upgrade methog above. 
 HRESULT Downgrade()       
  Remarks: 
 Cleares all incidence information and releases all related resources. See remarks 
    for the Upgrade methog above. It is not an error to call this method in already downgraded state, in which case 
    the method exits without any action. 
 HRESULT IsClosedSurface(VARIANT_BOOL* closed)      Parameters closed - [out, retval] - True if the mesh forms a 
    closed surface and represents a solid object. 
 HRESULT Extract(IObjectOriented* proximity, int elements, VARIANT_BOOL move, VARIANT_BOOL replicate, IMesh* iMeshExtracted, 
    IRefMap_KC** map)      Parameters proximity - [in] - Sphere or box which defines the area 
    to be extracted from this mesh elements      - [in] - Flags. Must be 4 in this 
    version. Extracts flagged elements 1<<dim, where dim is 0 for verticies, 1 for 
    segment and 2 for simplexes move - [in] - If true the elemets inside proximity 
    are removed from this mesh replicate - [in] - If false the extracted elements will 
    be shared by both meshes. True is the recommended value if move 
    is false iMeshExtracted - [in] - The mesh, which will contain the 
    extracted elements. Must be supplied by the caller. See remarks map - [in] - Ignored in this release. Has to be null 
  Remarks: 
 Extracts elements of this mesh (The mesh which implements this interface) which 
        are located inside proximity into iMeshExtracted This method is indended for reducing large meshes for analysis of some problems. 
        For performance only simplexes which have at least one vertex inside the 
        proximity is extracted. This mean that some simplexes near the surface of 
        proximity may not be included even if its internal part intersects with the 
        proximilty. An extracted simplex is added whole to iMeshExtracted 
        without clipping. Contact us to request a different 
        algorithm  iMeshExtracted must be supplied by the caller. It can be 
        either created new (with a IDIObjGenerator.Create*(EObjectType.eObjTypeMesh)) or 
        obtained in other way (queried from ISection of a mesh entity, etc) The extracted elements are added to iMeshExtracted 
        without clearing its previous content. So iMeshExtracted 
        can be used to collect elements form several meshes The map parameter is supposed to contain a map of list of simplexes 
        of this and of iMeshExtracted. For a position of a 
        simplex in this mesh the map will be able to return its position (or position of 
        its replica) in the extracted mesh. This feature is not implemented in this 
        release. map is assumed to be null. Contact us to request this 
        functionality This mesh is assumed to be constructed in global axes See also Mesh Ops sample 
 
 HRESULT Extract2(IFrame* frameOfThis, IObjectOriented* proximity, int elements, VARIANT_BOOL move, VARIANT_BOOL replicate, IMeshT* iMeshExtracted, IRefMap_KC** map)      Parameters frameOfThis - [in] - Frame, where this mesh is relative to proximity - [in] - Sphere or box which defines the area 
    to be extracted from this mesh elements      - [in] - Flags. Must be 4 in this 
    version. Extracts flagged elements 1<<dim, where dim is 0 for verticies, 1 for 
    segment and 2 for simplexes move - [in] - If true the elemets inside proximity 
    are removed from this mesh replicate - [in] - If false the extracted elements will 
    be shared by both meshes. True is the recommended value if move 
    is false iMeshExtracted - [in] - The mesh, which will contain the 
    extracted elements. Must be supplied by the caller. See remarks map - [in] - Ignored in this release. Has to be null 
  Remarks: 
 frameOfThis defines the axes coordinates of all elements are relative to. 
        When this mesh is mesh of a entity (queried form ISection), frame of the 
        entity is the recommended value for the parameter. All other parameters and behaviour 
        are 
    analogous to the Extract() method above
     See also Mesh Ops sample 
 HRESULT Merge(IMesh* iMesh, int elements, VARIANT_BOOL move, VARIANT_BOOL replicate, IRefMap_KC** map)      Parameters iMesh - [in] - The mesh to be merged into this elements      - [in] - Flags. Bit 0 - verticies, bit 1 
    - segments, bit 2 - simplexes. Value of 4 is the most common case move - [in] - If true the elemets inside proximity 
    are removed from iMesh replicate - [in] - If false the extracted elements will 
    be shared by both meshes. True is the recommended value if move 
    is false map - [in] - Ignored in this release. Has to be null 
  Remarks:  Adds all elements of the specified type from iMesh into this mesh (The mesh which 
        implements this interface) The map parameter is supposed to contain a map of list of simplexes 
        of this and of iMesh. For a position of a 
        simplex in this mesh the map will be able to return its position (or position of 
        its replica) in iMesh. This feature is not implemented in this 
        release. map is assumed to be null. Contact us to request this 
        functionality This method requires a call to IModel.Update() or DG Kernel.UpdateSurface() for changes to appear in 3D view 
 HRESULT SplitLinkedComponents(IArray2** components, 
    IRefMap_KC** map, 
    VARIANT_BOOL* found)      Parameters components  - [out] - If not null before the call, the 
        variable will contain returned components of the mesh. Elements have type IMesh* map - [out] - null or a reference to variable which will contain map of new component to the original mesh found - [out, retval] - The returned value. False is the mesh 
    consists of a single linked piece or is empty 
  Remarks:  If there any disjoined pieces in the mesh where this interface was queried form 
        the method will create a new set of meshes which are clones of each linked 
        piece. The components   array will contain at least one 
        element of type IMesh* even if this mesh (from which this interface was queried 
        from) is empty If map is not null after the call it will contain a map of simplexes 
        of this and all of the components: If pos is a position of a 
        simplex in a component from the components   array, 
        map.Lookup(pos, value) will return position of the correspondent 
        simplex in the original (this) mesh (simplex which was cloned to create the 
        simplex at pos)  Notice that the map, if requested, allocates significant amount of memory See the Tools menu handler in Data Flow sample (C++ and C#) for an example  
 HRESULT Refine(EMeshRefineType type)      Makes the mesh more smooth and dense. See MeshOps sample 
 HRESULT SmoothLaplacian(int steps)      Applies Laplacian Smoothing steps times to the mesh.  See MeshOps sample 
 |