PK_EDGE_set_blend_chain   

PK_ERROR_code_t                    PK_EDGE_set_blend_chain
(
--- received arguments ---
int                                n_edges,         --- no. of edges to blend
const PK_EDGE_t                    edges[],         --- edges to be blended
const PK_EDGE_set_blend_chain_o_t *options,         --- options structure
                                                    --- [PF]

--- returned arguments ---
int                         *const n_blend_edges,   --- no. edges with blend
PK_EDGE_t                  **const blend_edges,     --- edges with blend set
int                         *const n_primary_fins,  --- no. of fins on the
                                                    --- primary side
PK_FIN_t                   **const primary_fins     --- fins on primary side
                                                    --- of blend
)


This function sets a blend defined over an entire chain of edges.

This function offers partial support for facet geometry [PF]


Specific Errors:

    PK_ERROR_bad_blend_param      illegal combination of blend properties
                                  and/or parameters.
                                  (MILD)

    PK_ERROR_bad_blend_rho_type   attempted to specify a 'rho_type' other than
                                  PK_blend_rho_type_absolute_c in conjunction
                                  with a curvature-continuous blend.
                                  (MILD)

    PK_ERROR_bad_end_points       positions for blend parameters not given
                                  at the start and/or end of an open chain,
                                  or more than one parameter located at the
                                  start/end of an open chain.
                                  (MILD)

    PK_ERROR_bad_orientation      specification of 'primary_fins' is absent
                                  where it is needed, or inconsistent.
                                  (MILD)

    PK_ERROR_bad_fin              a member of 'mitre_fins' does not lie on the
                                  edges in the chain; or does not end at the
                                  position indicated by its corresponding entry
                                  in 'mitre_fins_indices', or there is only
                                  one set of blend parameters given at that
                                  position; or there is a duplicate element in
                                  'mitre_fins' or 'mitre_fins_indices'.
                                  (MILD)

    PK_ERROR_bad_index            an index in 'mitre_fins_indices' or
                                  'clamp_indices' is out of range (i.e.
                                  < 0 or >= n_positions).
                                  (MILD)

    PK_ERROR_bad_position         a member of 'positions' occurs more than
                                  once within an edge, or more than twice at a
                                  vertex, or twice at a vertex with
                                  insufficient data in 'mitre_fins'.
                                  (MILD)

    PK_ERROR_bad_tolerance        specified tolerance is too tight.
                                  (MILD)

    PK_ERROR_general_body         at least one edge or vertex on the chain
                                  is non-manifold.
                                  (MILD)

    PK_ERROR_laminar_edge         at least one edge is laminar.
                                  (MILD)

    PK_ERROR_illegal_cliff        attempted to specify 'ov_cliff' other than
                                  PK_blend_ov_cliff_no_c, or 'ov_cliff_end'
                                  other than PK_blend_ov_cliff_end_no_c,
                                  in conjunction with a curvature-continuous
                                  blend.
                                  (MILD)

    PK_ERROR_insufficient_points  fewer than 2 positions for blend parameters
                                  have been supplied.
                                  (MILD)

    PK_ERROR_not_on_edge          one or more of 'positions' does not lie on
                                  the edges in the chain.
                                  (MILD)

    PK_ERROR_unsuitable_topology  supplied 'edges' don't satisfy chain
                                  topological requirements (disjoint or
                                  >= 3 edges in the chain share a vertex)
                                  (MILD)



Sets a blend on the given chain of edges. The blend is defined over the chain,
using the parameters specified in the options. Any existing blend attribute on
any of 'edges' is removed by this function. Furthermore, if any of 'edges' is
already part of a blend chain set by an earlier call to this function, the
blends set on that entire chain will be removed first.

The edges in 'edges' designate the chain to be blended. The following
requirements apply to the elements of this array:

 1. They should form a single, connected chain in the topology of the
    model. A closed chain is allowed.
 2. No more than two members may meet at a common vertex (i.e., no trees).

The parameters defining the shape of the blend and how this varies along the
chain are set in 'options'.

A successful result will produce a group containing the chain of edges.
Attributes for the blend chain will be attached to that group and the edges in
the chain. The edges in the chain will be returned in 'blend_edges'.

The returned argument 'primary_fins' contains a list of all the fins on the
edges of the chain lying on the primary side of the blend. These are propagated
from those supplied in the 'primary_fins' option. If that particular option
is not set, 'primary_fins' is returned empty. When using the 'primary_fins'
option, applications should store the returned 'primary_fins' (typically as
(edge, face) pairs), and pass them back in as the 'primary_fins' option to
ensure robustness when later updating the part.

See PK_BODY_fix_blends for making the blends a part of the topology.

Blends can be created on general bodies, so long as the portion of the body in
the neighbourhood of the blend is locally manifold.