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