BLECVR ( edge, npts, points, values, nprops, props, pvals, blends, nblend,
===========================================================================
ifail )
=======
Define a variable radius blend.
Receives:
KI_tag_edge *edge --- edge to be blended
KI_int_nitems *npts --- number of data points
KI_vec_position points [npts] --- data points
double values [npts*3] --- data values
<KI_int_nitems> *nprops --- number of blend properties
KI_cod_blec props[nprops] --- array of blend properties
<KI_tag_list> pvals[nprops] --- array of tags of data lists
Returns:
KI_tag_list_edge *blends --- list of edges to which blends
--- have been attached
int *nblend --- number of edges to which blends
--- have been attached
KI_cod_error *ifail --- failure code
Specific errors:
KI_bad_blend_param blend parameter out of range
illegal blend property
KI_general_body general body
Description:
Attaches a variable radius blend with the given parameters to an edge. Any
existing attribute is replaced by one with the given parameters.
'npts' is the number of data points on the edge at which the blend ranges and
rho value are defined. 'points' is an array containing the positions of the
data points and 'values' is an array of the associated values. These must be
given in the order: range of blend off left face at first point, range of
blend off right face at first point, rho value at first point, then the values
for subsequent points in the same order. All ranges must be greater than twice
the maximum tolerance of the edge and its associated vertices.
NOTE that currently The two ranges must be equal and the rho value zero
at each data point.
'props' consists of an array of blend property tokens, of length 'nprops', and
'pvals' consists of a parallel array of tags of lists of values - for several
properties this can be a null tag.
BLECTL set tolerance
associated value in pvals: real list containing tolerance.
Sets the tolerance for the blended edge. The default tolerance is
1000 * modeller resolution.
BLECCR circular crossection
associated value in pvals: null tag.
Forces the blend to have circular crossection at all points.The two
ranges must be equal and the rho value zero at each data point.
This property is currently default behaviour and does not need to be set.
BLECLI linear radius variation
associated value in pvals: null tag.
Causes the blend ranges to vary naturally. The default behaviour is for the
range variation to be constrained in such a way as to ensure that they
would meet other blends smoothly at the vertices.
BLECPR propagate flag
associated value in pvals: null tag.
Blend will be propagated over tangent edges, or past other unfixed blends
if the resultant combination of blends at a vertex would be invalid, and
blending the third edge results in a valid combination. The propagation
will consist of exact rolling ball blends.
Note that if a blend does propagate, and you wish to remove the resulting
blend attributes, BLEREM will need to be passed the tags of the edges
propagated on to as well as that of the original edge.
Default behaviour is no propagation.
BLECDF draw and fix flag
associated value in pvals: null tag.
Causes the blend to be ignored by BLEFIX, BLECHK and RRVIND, which will
all treat the edge as unblended.
Note that that an unfixed blend will only be drawn in RRVIND if
RRVIND has been called with option RROPUB, and this property is not set.
There are also some tokens relating to overflow behaviour.
The default overflow behaviour of a blend is as follows;
When fixing a blend, it is possible that the blend as defined by its basic
parameters would lie outside the faces adjacent to the edge being blended. If
this is so, the blend must 'overflow'.
If the configuration allows us, we do this by 'smoothly overflowing' and
creating a blend one of whose underlying faces is the one it has overflowed
onto.
If the configuration is unsuitable for this, we try to 'cliff overflow' -
that is replace the appropriate section of the blend by a cliffedge blend
running along the appropriate edges.
If the configuration is unsuitable for this as well, we will then 'notch
overflow' - that is, merely trim the blend by the other faces in the region,
leaving its surface geometry unchanged. If the configuration is unsuitable
for this as well, the blend will not fix.
By default neither cliffedge or smooth overflows will occur when the edge being
overflowed is of the same convexity as the edge being blended.
By default also, cliffedge overflows will not occur at the ends of blends,
except where they meet another blend smoothly.
Overflow Type Prevent Allow when Same Convexity Allow at End
---------------------------------------------------------------------------
SMOOTH | BLECNS | BLECSM | * |
CLIFFEDGE | BLECNC | BLECSC | BLECEC |
NOTCH | BLECNN | * | * |
---------------------------------------------------------------------------
A * means that this behaviour is always possible.
All these tokens have an associated value in pvals of a null tag.
Note that while any combination of these tokens is allowed the preventative
tokens will, of course, negate the effects of the other overflow tokens.
For further explanation, and examples, of the use of these tokens, please
refer to the blending section of the manual.
A successful result will produce a new blend attribute. It will return the tag
of the edge(s) to which the blend attribute is attached.
See BLEFIX for making the blends a part of the topology.
This function is not supported for edges on general bodies.