 |
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.