PK_FACE_make_blend_o_t   

struct PK_FACE_make_blend_o_s
    {
    int                      o_t_version;  --- version number of options
    PK_blend_trim_t          trim;         --- blend trimming option
                                           --- (PK_blend_trim_to_walls_c)
    PK_blend_walls_t         walls;        --- wall trimming option
                                           --- (PK_blend_walls_attach_c)
    PK_blend_shape_t         shape;        --- shape of blend
    PK_blend_constraint_t    constraints;  --- constraints on blend
    PK_blend_rib_control_t   rib_control;  --- blend section requests
    double                   tolerance;    --- tolerance (1.0e-05)
    PK_LOGICAL_t             have_help_point;
                                           --- whether help point is provided
                                           --- (PK_LOGICAL_false)
    PK_VECTOR_t              help_point;   --- help point
    PK_LOGICAL_t             multiple;     --- create multiple blend sheets
                                           --- (PK_LOGICAL_false)
    PK_blend_propagate_t     propagate;    --- whether to propagate
                                           --- (PK_blend_propagate_no_c)
    PK_LOGICAL_t             notch;        --- enable blends to notch
                                           --- (PK_LOGICAL_false)
    PK_LOGICAL_t             local_check;  --- whether local checks required
                                           --- (PK_LOGICAL_false)
    PK_blend_local_check_t   checks;       --- which local checks to perform
    PK_blend_update_t        update;       --- disable changes for updates
                                           --- (PK_blend_update_default_c)
    PK_SURF_t                user_surface; --- user supplied blend surface
                                           --- (PK_ENTITY_null)
    PK_blend_repair_su_X_t   repair_su_X;  --- whether to attempt to repair
                                           --- self-intersecting surfaces
                                           --- (PK_blend_repair_su_X_no_c)
    PK_blend_inside_tight_t  inside_tight; --- blend on the inside of tightly
                                           --- curved faces
                                           --- (PK_blend_inside_tight_no_c)
    PK_LOGICAL_t             have_propagation_angle;
                                           --- 'propagation_angle' is
                                           --- provided
                                           --- (PK_LOGICAL_false)
    double                   propagation_angle;
                                           --- maximum angular tolerance
                                           --- for propagation
    PK_blend_repair_fa_X_t   repair_fa_X;  --- whether to attempt to repair
                                           --- self-intersecting faces
                                           --- (PK_blend_repair_fa_X_no_c)
    PK_PARTITION_t           partition;    ---  a partition
                                           --- (PK_PARTITION_null)
    PK_blend_prevent_sharp_t prevent_sharp;--- whether to attempt to prevent
                                           --- sharp edges between blend
                                           --- faces
                                           --- (PK_blend_prevent_sharp_no_c)
    PK_blend_track_edges_t   track_edges;  --- whether to provide laminar
                                           --- edge tracking when result is
                                           --- a sheet body
                                           --- (PK_blend_track_edges_no_c)
    PK_blend_tolerance_t     improve_tolerance;
                                           --- controls the tolerance
                                           --- setting of new edges
                                           --- (PK_blend_tolerance_standard_c)
    PK_blend_run_out_t       run_out;      --- whether to stop the blend when
                                           --- the angle subtended by the blend
                                           --- is equal to the specified
                                           --- 'run_out_angle'.
                                           --- (PK_blend_run_out_no_c)
    double                   run_out_angle;--- the angle of normals used for
                                           --- stopping the blend (0.1 radians)
    PK_blend_report_repaired_t
                             report;       --- whether to report any repaired
                                           --- blend faces in the Parasolid
                                           --- report stream containing a
                                           --- record of type
                                           --- PK_REPORT_record_type_1_c.
                                           --- (PK_blend_report_repaired_no_c)

    PK_extension_shape_t     extension_shape;
                                           --- Dictates the type of extension
                                           --- to use on underlying surfaces of
                                           --- faces. Note that only linear and
                                           --- soft extensions are valid for
                                           --- this option.
                                           --- (PK_extension_shape_linear_c)
    PK_blend_use_master_faces_t
                             master_faces;
                                           --- Controls whether to use master
                                           --- faces.
                                           ---(PK_blend_use_master_faces_yes_c)

    PK_imprint_complete_t    imprint_complete;
                                           --- Whether to complete the
                                           --- boundary of the blend to remove
                                           --- excess face material when
                                           --- blending between sheet bodies.
                                           --- (PK_imprint_complete_no_c)
    };

typedef struct PK_FACE_make_blend_o_s PK_FACE_make_blend_o_t;



This structure contains options for face face blending.

Used in:

PK_FACE_make_blend


The PK_FACE_make_blend_o_t contains the following options:



                        Trimming Options.

 'trim'  Indicates how the blend is to be trimmed. See documentation of
         PK_blend_trim_t. The default is PK_blend_trim_to_walls_c.

 'walls' Determines if and how the blend sheets are attached to the defining
         walls. See documentation of PK_blend_walls_t. The default is
         PK_blend_walls_attach_c.

If either of the walls defining the blend is from a solid body, and 'walls'
is set to PK_blend_walls_attach_c, then 'trim' must be either
PK_blend_trim_short_c or PK_blend_trim_to_walls_c, and the blend must not be
wire-face.

For wire-face blends 'trim' must be PK_blend_trim_short_c and 'walls' must
be either PK_blend_walls_trim_no_c, PK_blend_walls_preview_c or
PK_blend_walls_attach_c.

If either of these conditions is not satisfied, the call to PK_FACE_make_blend
will return the fault code PK_fxf_fault_inconsistent_c.

See Trimming face-face blends for more information.



                        Blend Shape Options:

See PK_blend_shape_t for details of the controls used to define the shape
of the blend.


                        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 or disc blends
                  the blend need not be constrained by these edges. If the
                  blend is a variable radius rolling ball or disc 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.

See Constraining a blend locally using blend size for more
information.

 '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 or disc blends
                  the blend need not be constrained by these edges. If the
                  blend is a variable radius rolling ball or disc 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.

See Inverting cliffedges and holdlines for more information.

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

See Trimming blend to a plane for more information.

For a wire-face blend all edges in 'cliff_edges' must be from the wire body.
'tangent_edges', 'conic_edges', 'inv_tangent_edges' and 'inv_conic_edges'
must not be supplied.



                        Blend Rib Controls.

 'output_rib'       Control how ribs are produced.
                    This token controls under what circumstances face-face
                    blending will produce ribs.  The default is to not
                    output ribs.

 'group_rib'        Control how to group the ribs produced.
                    Grouping controls how the limit on the number of ribs
                    is applied.  This token defines whether the ribs are
                    grouped by blend face, or by the intervals along the
                    'parameter' curve defined by 'interval_parms',
                    or not at all (default).

 'max_n_ribs'       Limit on number of ribs produced per group.
                    The number of ribs produced in each group will be no
                    greater than this number. The default value is zero,
                    for which no ribs will be produced.

 'n_interval_parms' Number of 'interval_parms' supplied.
                    Default is zero.

 'interval_parms'   Interval parameters.
                    These are used to divide the 'parameter' curve into
                    intervals for grouping ribs.  They should have values
                    in the parameter range of the curve.

For wire-face blends these options must be left at their default value.

See Specifying when to produce ribs for more information.


                        Control Options.

 'tolerance'       A tolerance is associated with this blend.

 'have_help_point' Whether a help point is provided

 'help_point'      Help point provided.
                   A vector, which will be used to differentiate between
                   multiple alternative possible blends between the walls.
                   If there is a blend which passes
                   close to the help point, it will be the one created.
                   The 'help_point' can be used in conjunction with
                   the 'output_rib' field of the 'rib_control' structure to
                   request that a rib is returned at the vector
                   provided in 'help_point'.

 'multiple'        Create multiple blends sheets.
                   PK_FACE_make_blend will only create one blend unless
                   this option is set to PK_LOGICAL_true.

                   See Dealing with multiple solutions for more
                   information.

 'propagate'       Propagate blends.
                   If this token is given the blends will be allowed
                   to propagate past smooth edges beyond the provided walls.

                   See Propagating blends for more information.

 'notch'           End Overflow
                   If this options is set to PK_LOGICAL_true the blend will
                   be allowed to extend past notches, whether in the middle
                   or at the end of the blend.

                   See Blend notches for more information.

 'local_check'     If this option is set to 'PK_LOGICAL_true', then
                   'checks' will be ignored, and the level of local checking
                   will be:

                        Surface self-intersection checks on all surfaces
                        except B-surfaces will be performed
                        Face checks will be performed
                        Face-face inconsistency checks will be perfomed.

                   If this option is set to 'PK_LOGICAL_false',
                   then the amount of local checking will
                   be determined by 'checks'.

 'checks'          Controls the amount of checking required. Ignored unless
                   'local_check' is set to 'PK_LOGICAL_false'. The faces of all
                   self-intersecting surfaces requested for detection are
                   returned in a report of type PK_REPORT_1_blend_faces_sx_c.

                   See Checking face-face blends for more
                   information.

 'update'          This option allows the disabling of some changes to the
                   blending algorithms for rebuild purposes.

                   See Options for more information.

 'user_surface'    This option allows users to users to supply a blend surface
                   to the face-face blending algorithm. The surface must be
                   within tolerance of the faces being blended. Parasolid
                   will attempt to use a given surface as a blend surface even
                   if this appears to be inconsistent with the 'left_sense' and
                   `right sense' arguments.

                   See User-supplied surfaces for more information.

 'repair_su_X'     This option controls whether or not Parasolid will attempt
                   to repair blend surfaces that are self-intersecting. It
                   only has an effect on constant radius rolling ball blends.
                   Parasolid will create suitable faces to patch the
                   self-intersecting regions. This option will only attempt to
                   repair blends that are self-intersecting due to an
                   underlying surface of the blend being too tightly curved to
                   support the blend if the 'inside_tight' option is set to
                   PK_blend_inside_tight_faces_c or
                   PK_blend_inside_tight_partial_c

                   If 'repair_su_X' is set to any value other than
                   'PK_blend_repair_su_x_no_c', then the faces of all
                   self-intersecting surfaces that could not be repaired are
                   returned in a report of type PK_REPORT_1_blend_faces_sx_c.

                   See Repairing self-intersecting blends for more
                   information.

 'inside_tight'    This option controls whether blends will be created on
                   the inside of faces that have a smaller radius of
                   curvature than the blend being created. Switching
                   this option on also enables blends on the inside of
                   cliff-edges that are more tightly curved than the
                   blend radius.

                   This option may only be used with constant or
                   variable radius rolling ball blends without conic
                   or tangent edges.  In the variable radius case the
                   option must be either PK_blend_inside_tight_no_c or
                   PK_blend_inside_tight_blends_c.

                   This option may also only be used for blends with conic
                   or g2 cross-section shape; it may not be used for blends
                   with chamfer  cross-section shape.

                   The values PK_blend_inside_tight_faces_c or
                   PK_blend_inside_tight_partial_c may only be supplied if the
                   'repair_su_X' option is set to PK_blend_repair_su_X_yes_c
                   or PK_blend_repair_su_X_report_c.  In the latter case any
                   blend faces created on too tightly curved faces will be
                   returned as repaired.
                   See here for more information.

 'have_propagation_angle'
                   If this option is set to PK_LOGICAL_true then a
                   'propagation_angle' has been provided and this will be used
                   to control propagation past sharp edges.

 'propagation_angle'
                   The maximal angle in radians at which propagation past sharp
                   edges is allowed.
                   It is used whenever 'have_propagation_angle' is set to
                   PK_LOGICAL_true.

 'repair_fa_X'     This option controls whether or not Parasolid will attempt
                   to repair blend faces that are self-intersecting.

 'partition'       An optional user-supplied partition. If a partition is
                   supplied and the blend options specify the blend result
                   is to be returned as sheets, rather than attached to the
                   left-hand body being blended, then those resultant
                   sheets will be placed within this user-supplied partition.
                   If any ribs are requested via the 'rib_control' structure
                   they will also be placed in the user-supplied
                   partition.
                   Default behaviour assumes no partition supplied
                   ( PK_PARTITION_null ) and any resultant sheets or ribs are
                   placed in the partition associated with the left-hand
                   body being blended.

 'prevent_sharp'   This option controls whether Parasolid will attempt to
                   prevent sharp edges between blend faces.  These can occur
                   for variable radius blends when passing a G2 discontinuity
                   in the faces that are being blended, or when the radius
                   definition of a blend changes sharply e.g. when a blend
                   becomes constrained by a tangent holdline.

                   This option may only be changed from its default value
                   ( PK_blend_prevent_sharp_no_c ) if the following are all
                   satisified by the blend:
                    - it is a rolling-ball blend with a circular or G2
                      ( PK_blend_xs_shape_g2_c ) cross-section shape; AND
                    - it has a constant radius, variable radius, constant
                      width, variable width or a tangent holdline; AND
                    - it is without conic holdline edges.

  'track_edges'
                   Whether to provide additional tracking information
                   associated with laminar edges when the blend result is a
                   sheet body. The default provides no tracking associated
                   with the laminar edges ( PK_blend_track_edges_no_c ).
                   Setting this option to PK_blend_track_edges_laminar_c
                   will request additional tracking information. This
                   additional information will be returned within the return
                   structure and will usually describe the underlying
                   coincident edge and/or face upon the original body.

   'improve_tolerance'
                   Whether to use new, improved tolerance handling
                   which reduces the tolerance of the newly created
                   edges. The default provides the old behaviour
                   ( PK_blend_tolerance_standard_c ).
                   To get the new behaviour use
                   PK_blend_tolerance_improved_c.

   'run_out'
                   Whether to stop the blend when the angle subtended by the
                   blend is equal to the specified 'run_out_angle'.
                   Should not be used together with wire-face blends, ribs or
                   user_surface.
                   ( PK_blend_run_out_no_c ).

   'run_out_angle'
                   The angle in radians to be used if PK_blend_run_out_angle_c
                   is specified. The default value is 0.1.
                   The angle must be greater then 0 and less then pi.

    'report'
                   Whether to report any repaired blend faces in the
                   Parasolid report stream. Any records will be of type
                   PK_REPORT_record_type_1_c and will have a status of
                   PK_REPORT_1_rep_sx_faces_c or PK_REPORT_1_rep_G2_faces_c.
                   In the first case the report will list those blend faces
                   created by repairing self-intersections.
                   In the second, the blend_faces reported are those from
                   G2 blends which have been modified to preserve continuity
                   when crossing G2-discontinuous edges.
                   ( PK_blend_report_repaired_no_c )

   'extension_shape'
                   This option controls how underlying surfaces of faces and
                   curves of certain edges are extended for G2 blends. If the
                   surfaces/curves are extended linearly, then blends built on
                   the extension may have a C1 discontinuity on the boundary.
                   Setting this option to PK_extension_shape_soft_c avoids
                   this, but may require surfaces of faces to be extended as a
                   result. Any edges given in 'constraints' that bound one of
                   these faces may also need their curves softly extended.

                   The surfaces/curves whose soft extension was used to
                   construct the blend, as well as whether they have been
                   permanently extended, will be reported in a
                   PK_REPORT_3_geom_extended_c report. Any surfaces/curves that
                   could not be extended or already contains discontinuities
                   will also be reported in a PK_REPORT_3_blend_x_g1_c report.
                   This option may only be set to PK_extension_shape_soft_c
                   if 'xs_shape' in 'shape' is set to PK_blend_xs_shape_g2_c,
                   or the blend is a non-circular conic blend.

                   A non-circular conic blend can be achieved by setting
                   'xs_shape' in 'shape' to PK_blend_xs_shape_conic_c and
                   by setting either:
                   - 'rho_const' in 'shape'
                   - 'rho' in 'shape'
                   -  an unequal 'range1_const' and 'range2_const' in 'shape'
                   - 'range1' and 'range2' in 'shape' with different
                      law curves
                   -  or by providing conic holdlines in both walls and
                      ensuring that the blend contact points are defined only
                      by the holdlines. This can be done by not setting any of
                      the radius or range options in 'shape'.

                   ( PK_extension_shape_linear_c )

   'master_faces'
                   This option controls whether to use master faces.

                   If the value of the option is the default
                   PK_blend_use_master_faces_yes_c then only those blends are
                   created where the blend goes through the first
                   face of either wall (master face).

                   If the option is set to PK_blend_use_master_faces_no_c
                   then all blends which pass through any pair of faces
                   from the left wall and right wall are considered.
                   In this case if 'multiple' is PK_LOGICAL_true then
                   'have_help_point' must be PK_LOGICAL_false and all the
                   blends will be created. If 'multiple' is PK_LOGICAL_false
                   then 'have_help_point' must be PK_LOGICAL_true and only
                   the blend closest to the help point will be created.

                   PK_blend_use_master_faces_no_c is implemented only for
                   constant radius rolling ball blends without cliff and
                   holdline edges.

    'imprint_complete'
                   When the blend is trimmed so that, on one side, the blend
                   meets a laminar edge ( usually via the 'trim' option or
                   stopping topology ) this option can be used to control how
                   to complete the blend boundary on the longer face. The
                   completed edges are used to trim off excess material. This
                   option can only be used if set to either the default or
                   PK_imprint_complete_laminar_c - the other values are not
                   implemented in blending. If one or more of the bodies being
                   blended are solid bodies, PK_fxf_fault_inconsistent_c
                   will be returned.
                  ( PK_imprint_complete_no_c )


For wire-face blends the 'user_surface', 'repair_su_X', 'inside_tight',
'have_propagation_angle', 'repair_fa_X' and 'prevent_sharp' options must not
be changed from their default.