PK_blend_constraint_t   

struct PK_blend_constraint_s
    {
    PK_EDGE_array_t     cliff_edges;       --- cliff edges
    PK_EDGE_array_t     tangent_edges;     --- tangent holdline edges
    PK_EDGE_array_t     conic_edges;       --- conic holdline edges
    PK_EDGE_array_t     inv_tangent_edges; --- inverse tangent holdline edges
    PK_EDGE_array_t     inv_conic_edges;   --- inverse conic holdline edges
    PK_PLANE_t          limit_1;           --- first limit plane
                                           --- (PK_ENTITY_null)
    PK_PLANE_t          limit_2;           --- second limit plane
                                           --- (PK_ENTITY_null)
    int                 n_caps;            --- number of caps (0)
    const PK_ENTITY_t  *caps;              --- entities for capping
                                           --- blend (NULL)
    const PK_LOGICAL_t *reverse_cap;       --- whether cap orientation
                                           --- should be reversed (NULL)
    PK_LOGICAL_t        localise_limit_planes;
                                           --- whether limit planes should
                                           --- trim blend only once
                                           --- (PK_LOGICAL_false)
    PK_TOPOL_array_t    limit_topols;      --- limit faces/fins
    };
typedef struct PK_blend_constraint_s PK_blend_constraint_t;




This structure records a set of blend constraints.

Used in:

PK_FACE_make_blend_o_t


                    Blend Constraint Options:

 'cliff_edges'    Blend is constrained by cliff edges.
                  An array of edge tags is given.
                  The blend will be constrained to be cliffedge blend in the
                  region of the given edges.

 'tangent_edges'  Blend is constrained by tangent hold lines.
                  An array of edge tags is given.
                  The blend will be constrained to be a tangent
                  hold line blend in the region of the given edges.
                  For constant and variable radius rolling ball blends
                  the blend need not be constrained by these edges. If the
                  blend is a variable radius rolling ball blend, the left
                  and right ranges of the law curve must be equal.

 'conic_edges'    Blend is constrained by conic hold lines.
                  An array of edge tags is given.
                  The blend will be constrained to be a conic hold line
                  blend in the region of the given edges.
                  For constant and variable radius rolling ball blends
                  blend need not be constrained by these edges.  If the
                  blend is a curvature continuous blend then 'cliff_edges'
                  and 'tangent_edges' must not be set, and the number of edge
                  tags in the array must be at least two.

 'inv_tangent_edges'
                  Blend is constrained by inverted tangent hold lines.
                  An array of edge tags is given.
                  The blend will be constrained to be a tangent
                  hold line blend in the region of the given edges.
                  For constant and variable radius rolling ball blends
                  the blend need not be constrained by these edges. If the
                  blend is a variable radius rolling ball blend, the left
                  and right ranges of the law curve must be equal.

 'inv_conic_edges'
                  Blend is constrained by inverted conic hold lines.
                  An array of edge tags is given.
                  The blend will be constrained to be a conic hold line
                  blend in the region of the given edges.
                  For constant and variable radius rolling ball blends
                  blend need not be constrained by these edges.  If the
                  blend is a curvature continuous blend then 'cliff_edges'
                  and 'tangent_edges' must not be set, and the number of edge
                  tags in the array must be at least two.

 'limit_1'
 'limit_2'        Limit Planes.
                  One or two planes may be specified.
                  The blend will be trimmed to end in a constant parameter
                  line determined by a plane. The blend will lie on the
                  positive side of the plane.

 'n_caps'         The number of capping entities.

 'caps'           A list of entities which will be used to stop and cap
                  the blend.
                  Currently, Parasolid will handle entities of class
                  PK_CLASS_face and PK_CLASS_plane. If the entity is a
                  PK_FACE_t, then it must belong to one of the bodies
                  to which the walls belong.

 'reverse_cap'    A list of flags which specify which side of each cap will be
                  the exterior of the cap. If `reverse_cap[j]' is
                  PK_LOGICAL_false, then the algorithm will trim away the
                  portion of the blend on the side of `cap[j]' towards which
                  the cap's normal points.

 'localise_limit_planes'
                  A logical which determines the behaviour of limit planes
                  used to trim the blend in case the limit plane intersects
                  the blend in more than one location. If the value is
                  PK_LOGICAL_true, a limit plane will trim the blend in only
                  one location, the one that is closest to the limit plane's
                  location vector (i.e. `basis_set.location' in PK_PLANE_sf_t).
                  If the value is PK_LOGICAL_false, all intersections between a
                  limit plane and the blend will be considered, and the face
                  blend algorithm will determine the most appropriate result.

 'limit_topols'   An array of faces and/or fins which will be used to stop the
                  blend. If the blend encounters a face or fin from this array,
                  it will stop and be trimmed to end in a constant parameter
                  line at that point.

This structure contains the topology which will constrain the blend.
All of the PK_EDGE_array_t fields will have their lengths set to zero
by the options structure macro. These options are turned on by setting
the length non-zero.

For further details on the use of these options please refer to the Face-Face
Blending Chapter of the Parasolid Functional Description.