PK_BODY_identify_details_o_t   

struct PK_BODY_identify_details_o_s
    {
    int                    o_t_version;       --- version number of opt struct
    PK_double_constraint_t hole_cyl_radius;   --- radius constraint for
                                              --- cylindrical holes
                                              --- ( PK_comparison_never_c
                                              ---   ( 0.0 0.0 )
                                              --- )
    PK_hole_blended_t      hole_blended;      --- whether to include blend
                                              --- faces in hole details
                                              --- ( PK_hole_blended_no_c )
    PK_double_constraint_t hole_blend_radius; --- radius constraint for blends
                                              --- in holes
                                              --- ( PK_comparison_never_c
                                              ---   ( 0.0 0.0 )
                                              --- )
    PK_hole_update_t       hole_update;       --- update version
                                              --- ( PK_hole_update_default_c )
    PK_hole_const_rad_t    hole_const_rad;    --- whether holes must have a
                                              --- constant radius component
                                              --- ( PK_hole_const_rad_no_c )
    PK_hole_ortho_t        hole_ortho;        --- whether hole components must
                                              --- be orthogonal to hole axis
                                              --- ( PK_hole_ortho_no_c )
    PK_detail_perforated_t hole_perforated;   --- whether holes can be
                                              --- perforated
                                              --- ( PK_detail_perforated_no_c )
    PK_detail_open_t       hole_open;         --- whether holes can be open
                                              --- ( PK_detail_open_no_c )
    double                 tolerance;         --- distance tolerance
                                              --- ( 1.0e-8 )
    double                 angle_tolerance;   --- angle tolerance ( radians )
                                              --- ( 1.0e-11 )
    };

typedef struct PK_BODY_identify_details_o_s PK_BODY_identify_details_o_t;



This structure provides options for PK_BODY_identify_details


Specific Errors:
    PK_ERROR_bad_option_data        'hole_perforated' is set to
                                    PK_detail_perforated_yes_c
                                    and 'hole_ortho' is set to
                                    PK_hole_ortho_no_c, or 'hole_open'
                                    is set to PK_detail_open_yes_c and
                                    'hole_perforated' is set to
                                    PK_detail_perforated_no_c (MILD)

Used in:

PK_BODY_identify_details


It has the following fields:

'hole_cyl_radius'                  a double constraint specifying which
                                   cylindrical holes will be identified.
                                   The default will never identify any.

See Constraining the radius of a cylindrical hole for more
information.

'hole_blended'                     a token indicating whether blend faces
                                   may be included in hole details

                                   See Finding holes with blends
                                   for more information.

'hole_blend_radius'                a double constraint further restricting the
                                   radii of blends that may be included in
                                   holes

                                   See Finding holes with blends
                                   for more information.

'hole_update'                      enables earlier versions of the hole
                                   identification algorithm if required for
                                   updating parts created in earlier versions.

'hole_const_rad'                   a token indicating whether or not holes must
                                   contain at least one constant radius
                                   component.

'hole_ortho'                       a token indicating whether or not it is a
                                   requirement that components of holes that do
                                   not themselves have surfaces which are
                                   uniquely spun about the hole axis must be
                                   orthogonal to the hole axis.

'hole_perforated'                  a token indicating whether or not holes
                                   can be perforated, i.e. contain inner
                                   boundaries of convex edges. See
                                   here for more information.

'hole_open'                        a token indicating whether or not holes
                                   can be open, i.e. contain spun or zero-
                                   depth facesets that are not closed rings.

'tolerance'                        a 3 space distance tolerance.

'angle_tolerance'                  an angle tolerance in radians.


Identification of a cylindrical hole is triggered by a face with the following
properties:

 - the face has a surface
 - the surface is a spun surface
 - the face normal points inwards
 - the surface is a ruled surface
 - either the face is bounded by two loops of type PK_LOOP_type_winding_c, or
   it is bounded by one loop of type PK_LOOP_type_inner_sing_c and one loop of
   type PK_LOOP_type_outer_c
 - each loop satisfies the 'hole_cyl_radius' constraint

Cylindrical holes may be closed by a face whose surface is any ruled surface
(in particular a plane or cone).  They may also be closed by a blend face (in
particular with a spherical surface), provided that it satisfies the
'hole_blend_radius' constraint.  Cylindrical holes may include other faces
bounded by two loops whose surfaces are ruled surfaces.  Thus countersinks
and counterbores can be included in a cylindrical hole.

Hole components with spun surfaces may only be considered to belong to the same
hole if their axes are co-axial.  To be co-axial, the axes of two components
must separate by no further than 'tolerance' within the hole, and must be
parallel to within 'angle_tolerance'.

For a hole component to be considered to be of constant radius, then the radii
at each end of it must not differ by more than 'tolerance'.

For a hole component to be considered to be orthogonal to the hole axis, the
component must have a planar surface whose normal is parallel to the hole
axis to within 'angle_tolerance'.

If 'hole_perforated' is PK_detail_perforated_yes_c then 'hole_ortho' must
be PK_hole_ortho_yes_c. PK_BODY_identify_details will then use an alternative
algorithm that can identify a greater range of holes, but has the restriction
that there must not be concave edges around the periphery of the hole.

If 'hole_open' is PK_detail_open_yes_c then 'hole_perforated' must be
PK_detail_perforated_yes_c.