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.

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 section, 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

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 section (queried form ISection), frame of the
section is the recommended value for the parameter. All other parameters and behaviour
are
analogous to the Extract() method above

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

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