PK_BODY_thicken_o_t   

struct PK_BODY_thicken_o_s
    {
    int                     o_t_version;    --- version number
    int                     n_faces;        --- number of non-default faces
                                            --- (0)
    const PK_FACE_t        *faces;          --- faces without default offsets
                                            --- (NULL)
    const double           *front_offsets;  --- front offsets
                                            --- (NULL)
    const double           *back_offsets;   --- back offsets
                                            --- (NULL)
    PK_check_fa_fa_t        check_fa_fa;    --- check for face-face
                                            --- (PK_check_fa_fa_yes_c)
    PK_thicken_method_t     method;         --- thickening method
                                            --- (PK_thicken_method_offset_c )
                                            --- [NF]
    PK_VECTOR1_t            punch_dir;      --- punch direction
                                            --- (zero vector) [NF]
    PK_offset_method_t      offset_method;  --- offset method
                                            --- (PK_offset_method_sx_trim_c )
    PK_LOGICAL_t            report_sx;      --- whether to report faces that
                                            --- have been repaired to remove
                                            --- self-intersections
                                            --- (PK_LOGICAL_false)
    PK_fix_degens_t         fix_degens;     --- control on repairing surface
                                            --- degeneracies
                                            --- (PK_fix_degens_no_c)
    PK_LOGICAL_t            report_fix_degens;
                                            --- whether to report faces that
                                            --- have been modified by
                                            --- the 'fix_degens' option
                                            --- (PK_LOGICAL_false)
    int                     n_edges;        --- number of edges with user
                                            --- supplied side surfaces
                                            --- (0) [NF]
    const PK_EDGE_t        *edges;          --- edges with user supplied side
                                            --- surfaces
                                            --- (NULL) [NF]
    int                     n_surfaces;     --- number of user supplied side
                                            --- surfaces
                                            --- (0) [NF]
    const PK_SURF_t        *surfaces;       --- user supplied side surfaces
                                            --- (NULL) [NF]
    PK_EDGE_offset_blend_t  blend_edges;    --- Offset edges as blend faces
                                            --- (PK_EDGE_offset_blend_no_c)
                                            --- [PF]
    double                  blend_radius;   --- Radius of resulting blends.
                                            --- (0.0)
    PK_LOGICAL_t            ortho_vx_split; --- Split laminar vertices
                                            --- during offset orthogonal to
                                            --- surface geometry.
                                            --- (PK_LOGICAL_false) [NF]
    PK_local_ops_update_t   update;         --- update flag
                                            --- (PK_local_ops_update_default_c)
    PK_offset_step_t        offset_step;    --- whether to create a step
                                            --- offset
                                            --- (PK_offset_step_no_c)
    int                     n_pierce_faces; --- number of faces in
                                            --- 'pierce_faces'
                                            --- (0)
    const PK_FACE_t        *pierce_faces;   --- faces to be pierced
                                            --- (not offset)
                                            --- (NULL)
    PK_FACE_grow_t          grow;           --- controls which faces to grow
                                            --- when repairing clashes
                                            --- (PK_FACE_grow_update_c) [PF]
    };

typedef struct PK_BODY_thicken_o_s PK_BODY_thicken_o_t;



This option structure allows individual faces to be given offsets different
from the defaults, and controls what checking is performed.

See Thickening options for more information.

Used in:

PK_BODY_thicken_2
PK_BODY_thicken_3


Description of fields:

'n_faces'           Length of 'faces', 'front_offsets' and `back_offsets
                    arrays.

'faces'             Array of length 'n_faces', containing faces with
                    non-default offsets.

'front_offsets'     Array of length 'n_faces', of front offsets in
                    correspondence to the face array.

'back_offsets'      Array of length 'n_faces', of back offsets in
                    correspondence to the faces array.

'check_fa_fa'       Check for face-face inconsistencies. Permitted values
                    are:
                        PK_check_fa_fa_yes_c
                        PK_check_fa_fa_no_c

'method'            Thickening method. Permitted values are:
                        PK_thicken_method_offset_c: The side surfaces are
                        created by ruling the side edges along the
                        direction of the surfaces normals.
                        PK_thicken_method_punch_c: The side surfaces are
                        created by sweeping the side edges along an user
                        supplied punch direction.
                    The default value is: PK_thicken_method_offset_c.

'punch_dir'         Vector of the punch direction. This must be set if
                    'method' is PK_thicken_method_punch_c, and otherwise is
                    ignored.
                    The default value is a zero vector.
                    See the introduction to thickening for more
                    information.

'offset_method'     The method used for repairing self-intersections
                    caused by offsetting surfaces in the body.

                    Note that, for facet geometry, there is only one
                    method for repairing self-intersections, so this
                    option is ignored for facet geometry.

                    The default value is PK_offset_method_sx_trim_c.
                    See Removing self-intersections for more
                    information.

'report_sx'         If this is set to PK_LOGICAL_true, then a report will be
                    returned in the Parasolid report stream containing a record
                    of type PK_REPORT_record_type_1_c. This record will have a
                    status of PK_REPORT_1_fa_sx_repair_c and will contain
                    information on faces that have been repaired in order to
                    remove self-intersections. The report will contain faces
                    that have been repaired by the method of b-surface
                    patching, as specified by setting 'offset_method' to a
                    value other than PK_offset_method_sx_trim_c. The faces will
                    be returned as followed:
                      o As 'old_items', a list of repaired faces that existed
                        on the original sheet body.
                      o As 'new_items', a list of repaired faces that exist on
                        the resultant thickened body.
                    If 'offset_method' is set to PK_offset_method_sx_trim_c,
                    then no report will be returned. This option may not be
                    used with PK_BODY_thicken_2.
                    The default value is PK_LOGICAL_false.

'fix_degens'        Controls when to repair degeneracies on surfaces. If set to
                    a value other than PK_fix_degens_no_c, this option improves
                    the reliability when offsetting surfaces with degeneracies,
                    by modifying the surfaces in the regions near the
                    degeneracies. If called from PK_BODY_thicken_2, this option
                    must be set to PK_fix_degens_no_c.
                    The default value is PK_fix_degens_no_c.

'report_fix_degens' If this is set to PK_LOGICAL_true, then information will
                    be returned in the Parasolid report stream about surfaces
                    that have been repaired in order to improve the reliability
                    of offsetting degenerate surfaces, as specified by the
                    option 'fix_degens'. Each record will be of type
                    PK_REPORT_record_type_1_c and will have a status of
                    PK_REPORT_1_fa_fix_degens_c. It will contain:
                      o As 'old_items', a set of faces on the original body,
                        followed by the original surface that they share, which
                        was repaired. In the case where the original surface
                        was an offset surface, this is followed by the
                        underlying b-surface.
                      o As 'new_items', the corresponding repaired b-surface,
                        followed by the corresponding offset surfaces, followed
                        by the corresponding faces on the resultant thickened
                        body that the surfaces belong to.
                    If 'fix_degens' is set to PK_fix_degens_no_c, or no
                    surfaces are repaired, then no reports of this type will be
                    returned. This option may not be used with
                    PK_BODY_thicken_2.
                    The default value is PK_LOGICAL_false.

'n_edges'           The length of the 'edges' array.

'edges'             Array of length 'n_edges' containing the laminar edges
                    of the sheet body for which side surfaces have been
                    provided in 'surfaces'.

'n_surfaces'        The length of the 'surfaces' array. If 'n_surfaces' is
                    greater than zero then user supplied side surfacing will
                    be used for all laminar edges of the sheet body.
                    If 'n_surfaces' is equal to one then 'n_edges' must be
                    zero and the single surface will be used for all laminar
                    edges.
                    If `n_surfaces is greater than one then it must be equal
                    to 'n_edges'.

'surfaces'          Array of length 'n_surfaces', contains side surfaces to be
                    used when thickening. If more than one side surface is
                    supplied then the correspondence between the edges of the
                    sheet body and the surfaces supplied is given by the
                    ordering of the 'edges' and 'surfaces' arrays.

'blend_edges'       Advanced offset edge with blending method.
                    The default value is: PK_EDGE_offset_blend_no_c indicating
                    that no blending is to be performed.

                    Advanced offset edge blending effectively combines two
                    operations in one. The result being the same as that
                    obtained by first offsetting the edge and then blending
                    the offset edge.

                    Edges will be blended subject to the following conditions.

                    o The edge lies between two non-rubber faces.
                    o The offsets applied to each face are equal in magnitude
                      to one another and equal to the next field 'blend_radius'
                    o The faces are both offset to the same side of the
                      original sheet.
                    o The edge convexity matches the one indicated by
                      'blend_edges'.

                    For the purpose of this option 'convexity' refers to
                    the 'visual' convexity  of the original edge when viewed
                    from the side of the original faces on which the offset
                    faces lie. There is no direct dependence on face normal
                    direction but an indirect dependence in that the 'side' of
                    the original face on which an offset face lies depends
                    on face normal direction and the sign of the offset
                    distance applied to that face.

                    Note that the value PK_EDGE_offset_blend_convex_c
                    is not supported for mixed edges.

'blend_radius'      Advanced offset edge with blending will apply blends of
                    this radius to edges that satisfy the requirements
                    indicated in the above description of 'blend_edges'.

'ortho_vx_split'    Offsetting some laminar vertices will require the vertex
                    to split into two vertices.  The default position of the
                    new vertex is trimmed back along one of its laminar edges.
                    If 'ortho_vx_split' is PK_LOGICAL_true, the new vertex
                    will be trimmed orthogonal to the face of the other
                    laminar edge.

'update'            The default value allows applications to take advantage
                    of the latest enhancements of the generic algorithms
                    supporting Parasolid local operations functions. To
                    maintain consistency when rebuilding models created in a
                    previous version of Parasolid, a non-default value should
                    be specified.

                    The default value is PK_local_ops_update_default_c

'offset_step'       A "boundary edge" is an edge between a face which is
                    being offset and one which is pierced or between two faces
                    being offset different distances. If this option is set
                    to PK_offset_step_pierce_c then side faces will be
                    created along any smooth boundary edges between a face
                    which is being offset and one which is pierced. If this
                    option is set to PK_offset_step_all_c then side faces
                    will be created along any smooth boundary edges.
                    If this option is set to PK_offset_step_site_c
                    then side faces will be created for all smooth
                    boundary edges but side faces will not be created if
                    site faces can be grown instead. Site faces with facet
                    geometry will not be grown.

                    This option has no effect on the result if there are no
                    smooth boundary edges.

                    The default value is PK_offset_step_no_c.
                    See here for more information.

'n_pierce_faces'    Length of 'pierce_faces' array. The default value is 0.

'pierce_faces'      The array of faces which are not to be offset. Pierced
                    faces are removed from the thickened body. The removal
                    of the pierced faces may result in a disjoint solid
                    body. The default value is NULL.

'grow'              While repairing clashing features, there are
                    situations in which it is necessary for faces to be
                    grown.  This option controls which feature's faces
                    will be grown.

                    Permitted values are:
                         PK_FACE_grow_update_c
                         PK_FACE_grow_auto_c
                         PK_FACE_grow_moving_c
                         PK_FACE_grow_fixed_c
                         PK_FACE_grow_no_c
                         PK_FACE_grow_fail_c

                    Note that the value PK_FACE_grow_update_c is not supported
                    for facet geometry.

                    The default value is PK_FACE_grow_update_c, which
                    should be used for updating v20.0 and earlier models.