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