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