 |
PK_BODY_offset_o_t |
|
struct PK_BODY_offset_o_s
{
int o_t_version; --- version number of option structure
PK_LOGICAL_t allow_disjoint; --- whether disjoint body can be
--- produced (PK_LOGICAL_false)
PK_check_fa_fa_t check_fa_fa; --- check for face-face inconsistencies
--- (PK_check_fa_fa_yes_c)
int n_offset_faces; --- number of elements in 'offset_faces'
--- and 'offset_values' (0)
const PK_FACE_t *offset_faces; --- faces to be offset by a different
--- value than the function value (NULL)
const double *offset_values; --- offset values for corresponding
--- faces in 'offset_faces' array (NULL)
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)
PK_offset_step_t offset_step; --- whether to create a step offset
--- (PK_offset_step_no_c)
PK_LOGICAL_t ortho_vx_split; --- Split laminar vertices during offset
--- orthogonal to surface geometry
--- (PK_LOGICAL_false) [NF]
PK_offset_track_del_t
track_del; --- How to track deleted faces
--- (PK_offset_track_del_no_c)
PK_EDGE_offset_blend_t
blend_edges; --- Offset edges as blend faces
--- (PK_EDGE_offset_blend_no_c) [PF]
double blend_radius; --- Radius of blend faces created if
--- 'blend_edges' is a non-default
--- value (0.0)
PK_FACE_grow_t grow; --- controls which faces to grow
--- when repairing clashes
--- (PK_FACE_grow_update_c) [PF]
PK_VERTEX_limit_t vertex_limit; --- How to constrain the maximum
--- tolerance required by each vertex
--- (PK_VERTEX_limit_no_c)
PK_EDGE_limit_t edge_limit; --- How to constrain the maximum
--- tolerance required by each edge
--- (PK_EDGE_limit_no_c)
PK_local_ops_update_t
update; --- update flag
--- (PK_local_ops_update_default_c)
};
typedef struct PK_BODY_offset_o_s PK_BODY_offset_o_t;
This structure contains optional controls for PK_BODY_offset_2
Used in:
PK_BODY_offset_2
Description of fields:
'allow_disjoint' If this flag is set to PK_LOGICAL_true, and if the
resulting body is split by the operation, all
the disjoint components of that body will be preserved
within a single body. If this flag is set to
PK_LOGICAL_false, only one disjoint part of the body
will be returned.
The default value is PK_LOGICAL_false.
'check_fa_fa' Check for face-face inconsistencies. Permitted values
are:
PK_check_fa_fa_yes_c
PK_check_fa_fa_no_c
The default value is PK_check_fa_fa_yes_c.
'n_offset_faces' Length of 'offset_faces' and 'offset_values' arrays.
The default value is 0.
'offset_faces' The array of faces which are to be offset by a value
different to that specified via the function arguments.
Every face in this array must be matched with a
corresponding value in the 'offset_value' array.
The default value is NULL.
'offset_values' The array of specific face offset values. Every value
in this array is associated with the corresponding
face in the 'offset_faces' array.
The same rules apply to these offset values as the
'offset' parameter specified in the function argument
list. A zero value is allowed.
The default value is NULL.
'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 body.
o As 'new_items', a list of repaired faces that
exist on the resultant offset body.
If 'offset_method' is set to
PK_offset_method_sx_trim_c, then no report will be
returned.
The default value is PK_LOGICAL_false.
'fix_degens' Controls when to repair degeneracies on surfaces. If
set to PK_fix_degens_offset_c, this option improves the
reliability when offsetting surfaces with degeneracies,
by modifying the surfaces in the regions near the
degeneracies. Note that PK_fix_degens_all_c may not be
used for this option.
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
surface, followed by the corresponding faces on the
resultant offset 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.
The default value is PK_LOGICAL_false.
'offset_step' A "boundary edge" is an edge between a face which is
being offset and one which is not 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 not. If this
option is set to PK_offset_step_all_c then side faces
will be created along any smooth boundary edges. 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.
'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.
'track_del' Offsetting a face can cause it to be entirely deleted
on the offset body. This option controls how such a
face is tracked in 'track_records' as an element of
PK_TOPOL_track_delete_c. Permitted values are:
PK_offset_track_del_no_c
PK_offset_track_del_sx_repair_c
The default value is PK_offset_track_del_no_c.
'blend_edges' Offset edge with blending method. The default
value is: PK_EDGE_offset_blend_no_c indicating
that no blending is to be performed.
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 and equal to the specified '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' The blend radius to use when 'blend_edges' is a
non-default value.
'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.
'vertex_limit' Specify how to constrain the maximum tolerance
required by each vertex so that undesired large vertex
tolerances can be avoided in the result.
The permitted values are:
PK_VERTEX_limit_no_c
PK_VERTEX_limit_report_c
PK_VERTEX_limit_yes_c
'edge_limit' Specify how to constrain the maximum tolerance
required by each edge so that undesired large edge
tolerances can be avoided in the result.
The permitted values are:
PK_EDGE_limit_no_c
PK_EDGE_limit_report_c
PK_EDGE_limit_yes_c
'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