 |
PK_TOPOL_delete_redundant_2_o_t |
|
struct PK_TOPOL_delete_redundant_2_o_s
{
int o_t_version; --- version number of options
--- structure
PK_TOPOL_dimension_t max_topol_dimension; --- controls which topologies or
--- sub-topologies of the input
--- may be regarded as redundant
--- (PK_TOPOL_dimension_any_c)
PK_redundant_merge_t scope; --- controls the scope of the
--- search for redundant topology
--- (PK_redundant_merge_on_c)
PK_continuity_t facet_geom_continuity; --- level of geometric continuity
--- between adjacent facet
--- geometries that is necessary
--- for topology to be considered
--- redundant
--- (PK_continuity_g0_c)
PK_LOGICAL_t have_vertex_angle; --- whether a 'vertex_angle'
--- value has been supplied
--- (PK_LOGICAL_false)
double vertex_angle; --- angle used to decide whether
--- a vertex between two polyline
--- edges is smooth.
int n_protected_topols; --- number of protected topologies
--- (0)
const PK_TOPOL_t *protected_topols; --- protected topology array
--- (NULL)
};
typedef struct PK_TOPOL_delete_redundant_2_o_s
PK_TOPOL_delete_redundant_2_o_t;
Holds optional controls for removing redundant topologies.
Specific Errors:
PK_ERROR_bad_angle occurs when 'have_vertex_angle' is set
to PK_LOGICAL_true and the value supplied
for the 'vertex_angle' is either negative
or strictly larger than pi. (MILD)
Used in:
PK_TOPOL_delete_redundant_2
max_topol_dimension : Specifies what type of topologies should be considered
for redundancy. A maximum dimension of
PK_TOPOL_dimension_0_c will consider vertices only;
one of PK_TOPOL_dimension_1_c will consider edges or
vertices. A maximum dimension of
PK_TOPOL_dimension_any_c will consider all topologies
of dimensionality equal to or less than the the
dimensionality of the supplied 'topols'; this is the
default. The 'max_topol_dimension' must not be higher
than the dimension of the supplied 'topols'.
scope : Specifies how the (sub)topologies forming the external
boundaries to the input topological set are treated.
facet_geom_continuity : The level of geometric continuity between adjacent
facet geometries that is necessary for topology to
be considered redundant. It can take the values:
o PK_continuity_g0_c
All manifold non-laminar edges between, or wire
edges in, faces with mesh surfaces are considered
redundant. Similarly all manifold vertices between,
or on, edges with pline curves are considered
redundant unless there are more than two
non-redundant edges meeting at them. This is the
default.
o PK_continuity_g1_c
An edge on a facet body will be considered
redundant only if the mvertices lying along it
will not become sharp when the edge is removed.
A vertex between two polyline edges is considered
for redundancy only if either edge belongs to the
g1 edge chain of the other (this can be tested
by calling PK_EDGE_find_g1_edges with its
'tolerance' set to the same value as the desired
'vertex_angle').
Leaving 'facet_geom_continuity' at its default of
PK_continuity_g0_c is not usually advisable, as it
will remove all non-laminar manifold topology from
facet bodies, typically resulting in a single face
body with a single mesh surface. This can sometimes
have a detrimental impact on the performance of
subsequent modelling operations.
have_vertex_angle : Whether a 'vertex_angle' has been supplied.
vertex_angle : The angle to which the 'tolerance' should be set in
PK_EDGE_find_g1_edges in order to determine whether
a vertex between two polyline edges will be considered
for redundancy. Increasing the 'vertex_angle' will
typically increase the number of vertices which are
considered redundant.
n_protected_topols : Number of protected topologies.
protected_topols : Protected topology array. These topologies and their
sub-topologies will not be deleted.