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.