PK_FACE_change_blend_o_t   

struct PK_FACE_change_blend_o_s
    {
    int                     o_t_version;    --- version number of option
                                            --- structure
    PK_blend_xs_shape_t     xs_shape;       --- cross-section shape
                                            --- (PK_blend_xs_shape_conic_c)
    double                  radius;         --- radius of blend when reapplied
                                            --- (0.0)
    int                     n_unders;       --- number of underlying faces of
                                            --- the blend (0)
    const PK_ENTITY_t      *unders;         --- faces used to define the blend
                                            --- (NULL)
    const PK_blend_orientation_t
                           *orientations;   --- which side of each of the
                                            --- unders the blend lies (NULL)
    const double           *ranges;         --- ranges on each of the unders
                                            --- (NULL)
    PK_blend_ov_smooth_t    ov_smooth;      --- control smooth overflow
                                            --- behaviour
                                            --- (PK_blend_ov_smooth_diff_c)
    };
typedef struct PK_FACE_change_blend_o_s PK_FACE_change_blend_o_t;


This structure contains blend-specific optional controls for PK_FACE_change.


Specific Errors:
    PK_ERROR_not_implemented        (MILD)    PK_blend_ov_smooth_no_c is not a
                                              supported value for 'ov_smooth'.
                                              PK_blend_orientation_unknown_c is
                                              not a supported value for
                                              'orientations'.
                                              PK_blend_xs_shape_unset_c and
                                              PK_blend_xs_shape_g2_c are not
                                              supported values for 'xs_shape'.
                                              'xs_shape' set to

    PK_ERROR_wrong_entity           (MILD)    An element of 'unders' is not of
                                              type PK_FACE_t.

    PK_ERROR_wrong_number_entities  (MILD)    Wrong number of 'n_unders'
                                              supplied, 'n_unders' should be
                                              set to either be 0, 2 or 3.

    PK_ERROR_not_in_same_body       (MILD)    'xs_shape' is set to
                                              PK_blend_xs_shape_chamfer_c and
                                              an element of 'unders' does not
                                              belong to the same body as the
                                              faces in the 'faces' array.
                                              'xs_shape' is set to
                                              PK_blend_xs_shape_blend_c and
                                              more than one member of 'unders'
                                              belongs to a different body from
                                              that which the faces in the
                                              'faces' array belong to.

    PK_ERROR_bad_combination        (MILD)    'n_unders' > 0 and no 'unders'
                                              have been supplied.
                                              'n_unders' = 2 and no
                                              'orientations' have been
                                              supplied.
                                              'n_unders' = 2 and neither
                                              'radius' nor 'ranges' have
                                              been supplied.
                                              'n_unders' = 3 and 'radius' not
                                              set to 0.0, 'ranges' not set to
                                              NULL or 'orientations' not set to
                                              NULL.
                                              'xs_shape' set to
                                              PK_blend_xs_shape_chamfer_c but
                                              no 'unders' have been supplied.
                                              'xs_shape' set to
                                              PK_blend_xs_shape_chamfer_c and
                                              'radius' not set to 0.0.
                                              'xs_shape' set to
                                              PK_blend_xs_shape_conic_c and
                                              'ranges' not set to NULL.

    PK_ERROR_bad_combination        (SERIOUS) 'n_unders' = 3 and not all
                                              members of 'unders' are being
                                              reapplied as blends/chamfers with
                                              their 'xs_shape' set to same
                                              value as 'xs_shape'.

    PK_ERROR_mutual_dependency      (MILD)    Mutual dependency between faces
                                              being reapplied as chamfers or
                                              blends with supplied `unders`,
                                              one of the 'unders' of
                                              a given face is itself being
                                              reaplied as a chamfer or a blend
                                              with supplied `unders` and has
                                              the given face as one of its
                                              'unders'.

    PK_ERROR_unsupported_operation  (SERIOUS) PK_blend_xs_shape_chamfer_c but
                                              no analytic chamfer solution
                                              exists

Used in:

PK_FACE_change_opts_t


Description of fields:



'xs_shape'       Controls the cross-section shape of blend, allowing the blend
                 to be reapplied as either a constant radius rolling ball
                 blend or a chamfer.

                 Permitted values are:

                   PK_blend_xs_shape_conic_c (default)
                   PK_blend_xs_shape_chamfer_c

                 Note: currently it is only possible to produce chamfers with
                 analytic surfaces.

'radius'         The value in 'radius' defines the blend radius to be used when
                 applying the blend and must take a value greater than or equal
                 to zero.  If 'radius' is set to 0.0 (the default), the radius
                 of the blend when reapplied will be the same as that of the
                 original blend.

                 If 'xs_shape' is set to PK_blend_xs_shape_chamfer_c this
                 value is ignored.

'n_unders'       The number of underlying faces of the blend that are supplied.
                 If set to 0 (the default) then PK_FACE_identify_blends should
                 identify the face as a blend and suitable unders and
                 orientations will be determined for it. Otherwise an
                 appropriate blend between the supplied 'unders' will be
                 constructed.

'unders'         The underlying faces of the blend.

'orientations'   An array of length 'n_unders' which determines which side of
                 the corresponding 'unders' the blend lies.
                 Permitted values are:

                   PK_blend_orientation_before_c  the blend lies in the
                                                  direction of the
                                                  corresponding 'unders' normal

                   PK_blend_orientation_behind_c  the blend lies in the
                                                  direction opposite to the
                                                  corresponding 'unders' normal

'ranges'         An array of length 'n_unders' which determines the chamfer
                 range on each of the corresponding 'unders'.

'ov_smooth'      Controls the behaviour for smooth overflows. A notch solution
                 will be produced when smooth overflow is not allowed.
                 Permitted values are:

                   PK_blend_ov_smooth_diff_c      only allow smooth overflow
                                                  for different convexities

                   PK_blend_ov_smooth_any_c       allow smooth overflow for
                                                  any convexities

                 The default value is PK_blend_ov_smooth_diff_c.


When reapplying a face that can be identified as a blend by
PK_FACE_identify_blends with 'xs_shape' set to PK_blend_xs_shape_conic_c there
is no need to specify the 'unders', 'orientations' or 'ranges'.  It is only
necessary to specify a 'radius' if the blend is to be reapplied with a radius
different from that of the original blend.

If reapplying a face that cannot be identified as a blend or reapplying a face
as a chamfer 'n_unders' should be set to 2 and it is necessary to supply
'unders', 'orientations' and either a 'radius' if 'xs_shape' is set to
PK_blend_xs_shape_conic_c or 'ranges' if 'xs_shape' is set to
PK_blend_xs_shape_chamfer_c.

If reapplying a branch face that cannot be identified as a blend or reapplying
a branch face as a chamfer 'n_unders' should be set to 3 and it is necessary
to supply 'unders'.  The 'orientations', 'ranges' and 'radius' fields should
not be specified and this information will be determined from the 'unders'.
If 'xs_shape' is set to PK_blend_xs_shape_conic_c then all of the 'unders'
should be being reapplied as blends.  If 'xs_shape' is set to
PK_blend_xs_shape_chamfer_c all of the 'unders' should be being reapplied as
chamfers.