 |
PK_BODY_fix_blends_o_t |
|
struct PK_BODY_fix_blends_o_s
{
int o_t_version; --- version number of option
--- structure
PK_LOGICAL_t local_check; --- whether to perform local
--- checking ( PK_LOGICAL_false )
PK_LOGICAL_t vx_twin; --- return vertex tag for vertex
--- blend ( PK_LOGICAL_false )
PK_blend_local_check_t checks; --- which local checks to perform
PK_blend_setback_data_t
setback_data; --- data defining any setbacks [NF]
PK_blend_transfer_topol_t
transfer; --- whether to move topology to
--- blend
--- (PK_blend_transfer_topol_no_c)
--- [NF]
PK_blend_fix_propagate_t
propagate; --- whether to propagate
--- blend edges [PF]
PK_blend_vx_blend_data_t
vx_blend_data; --- data defining any vertex
--- blends [NF]
PK_blend_y_blend_data_t
y_blend_data; --- data defining any y-shaped
--- vertex blends [NF]
PK_LOGICAL_t preserve_notch; --- retain notch shape
--- (PK_LOGICAL_false)
PK_blend_edge_update_t update; --- update flag
--- (PK_blend_edge_update_default_c)
--- [NF]
double tolerance; --- maximum allowed tolerance for
--- blend
--- (1.0e-05)
PK_blend_set_tol_t set_tol; --- controls when a tolerance is
--- applied to the blend
--- (PK_blend_set_tol_yes_c)
PK_blend_repair_su_X_t repair_su_X; --- whether to attempt to repair
--- self-intersecting surfaces
--- (PK_blend_repair_su_X_no_c)
PK_blend_output_sheet_t
output_sheet; --- whether to create a blend
--- sheet body
--- (PK_blend_output_sheet_no_c)
PK_blend_inside_tight_t
inside_tight; --- whether to blend on the inside
--- of tightly curved faces
--- (PK_blend_inside_tight_blends_c)
PK_blend_vx_order_data_t
vx_order_data; --- order to apply blends at
--- vertices with edges of
--- different convexity [NF]
PK_blend_setback_shape_data_t
setback_shape_data;
--- whether to add collar
--- faces to setback vertex
--- patches
--- (PK_blend_setback_collar_all_c,
--- 0, NULL, NULL) [PF]
PK_blend_ov_smooth_t ov_smooth; --- allow smooth overlap between
--- non-adjacent blends
--- (PK_blend_ov_smooth_no_c) [NF]
PK_blend_ov_notch_t ov_notch; --- allow notch overlap between
--- non-adjacent blends
--- (PK_blend_ov_notch_yes_c) [PF]
PK_blend_order_t ov_order; --- order to apply non-adjacent
--- blends that overlap each other
---(PK_blend_order_convex_concave_c)
--- [NF]
PK_blend_repair_fa_X_t repair_fa_X; --- whether to attempt to repair
--- self-intersecting faces
--- (PK_blend_repair_fa_X_no_c) [NF]
int n_explicit_cliff_edges;
--- number of explicit cliffs
--- defined ( 0 ) [NF]
PK_EDGE_t *explicit_cliff_edges;
--- list of edges with explicitly
--- defined cliffing behaviour.
--- ( NULL ) [NF]
PK_blend_ov_exp_cliff_t
*explicit_cliff_edges_type;
--- explicitly defined cliffing
--- behaviour of the corresponding
--- edges in explicit_cliff_edges.
--- ( NULL ) [NF]
PK_PARTITION_t partition; --- a partition
--- ( PK_PARTITION_null )
PK_blend_cap_data_t cap_data; --- controls how a blend will be
--- capped [NF]
PK_blend_tolerance_t improve_tolerance;
--- controls the tolerance setting
--- of new edges
--- (PK_blend_tolerance_standard_c)
PK_blend_track_type_t tracking_type; --- controls the type of tracking
--- data returned associated with
--- the topology and geometry that
--- has generated the blend faces
--- (PK_blend_track_type_basic_c)
PK_blend_laminar_trim_t laminar_trim; --- controls how the blend will be
--- trimmed when the end of the
--- blend meets a laminar edge of a
--- sheet body.
--- (PK_blend_laminar_trim_edges_c)
--- [NF]
PK_blend_limit_data_t limit_data; --- data defining any limits [PF]
PK_TOPOL_array_t limit_topols; --- limit faces/fins [NF]
PK_blend_limit_patch_t *limit_topols_patch;
--- controls whether to try
--- patching the blend beyond
--- the supplied limit topols [NF]
const PK_TOPOL_array_t *limit_topols_unders;
--- controls whether the supplied
--- limit topols should only limit
--- blends that are between the
--- specified underlying topologies
--- [NF]
PK_blend_suggest_limit_t suggest_limit;--- controls whether or not
--- suggested limit data is returned
--- after edge blend failure
--- (PK_blend_suggest_limit_no_c)
PK_blend_report_repaired_t
report; --- whether to report any repaired
--- blend faces in the Parasolid
--- report stream containing a
--- record of type
--- PK_REPORT_record_type_1_c.
--- (PK_blend_report_repaired_no_c)
PK_extension_shape_t extension_shape;
--- Dictates the type of extension
--- to use on underlying surfaces of
--- faces. Note that only linear and
--- soft extensions are valid for
--- this option.
--- (PK_extension_shape_linear_c)
PK_blend_report_extended_t
report_extended;
--- whether to report any chamfer
--- faces that are extended
--- outside of their natural width
--- in the Parasolid report stream.
--- (PK_blend_report_extended_no_c)
};
typedef struct PK_BODY_fix_blends_o_s PK_BODY_fix_blends_o_t;
Holds optional controls for fixing blends on a body.
Used in:
PK_BODY_fix_blends
The option structure defines options applicable to fixing blends on a body.
Description of fields:
'local_check' The 'local_check' flag and the 'checks' data structure are
'checks' used to control the amount of checking during the blending
operation:
If 'local_check' is set to PK_LOGICAL_true, then
'checks' will be ignored, and the level of local checking
will be:
No surface self-intersection checks will be performed
Face checks will be performed
Face-face inconsistency checks will be performed.
If 'local_check' is set to PK_LOGICAL_false, then the
amount of local checking will be determined by 'checks'.
If the 'local_check' flag is set to PK_LOGICAL_false and
a self-intersecting surface or a face-face inconsistency
is detected during a local check specified by the
application, then 'fault' returned by PK_BODY_fix_blends
will be set accordingly, 'fault_edge' will be set to
PK_ENTITY_null and 'fault_topol' will be set to one of the
invalid faces. The blend will have been attached.
The faces of all self-intersecting surfaces requested for
detection are returned in a report of type
PK_REPORT_1_blend_faces_sx_c.
'vx_twin' The option 'vx_twin' is used to request that the
integer in 'topols' returned by PK_BODY_fix_blends be the
(dead) tag of the appropriate
vertex for those blend faces which are generated
from vertices rather than the (dead) tag of an edge.
(default is PK_LOGICAL_false). See
Tag of originating vertex for more information.
'setback_data'
'setback_shape_data'
The options 'setback_data' and 'setback_shape_data' are
used to control the shape of the blend where three or
more blends meet at a vertex. If any blends to be fixed
have a cross-section shape of PK_blend_xs_shape_chamfer_c
then setback blends are not allowed.
'transfer' The option 'transfer' is used to select whether any
topology in the region which has been completely overlapped
by the blend will be transferred into the blend faces or
whether it will be deleted. See
Preserving overlapped topology for more
information.
'propagate' The option 'propagate' controls the amount of propagation
that can be performed during the blend fixing operation.
Note that propagation must be turned off for facet
geometry.
'vx_blend_data' The option 'vx_blend_data' is used to define the shape of
the blend where blending past sharp edges of opposite
convexity to the blend. If any blends to be fixed have a
cross-section shape of PK_blend_xs_shape_g2_c or
PK_blend_xs_shape_chamfer_c, vertex blending is not
allowed: the option's 'vertex_blend' field must be
PK_LOGICAL_false.
'y_blend_data' The option 'y_blend_data' is used to define the shape of
the blend where two blends on adjacent edge of opposite
convexity meet. If any blends to be fixed have a
cross-section shape of PK_blend_xs_shape_chamfer_c, y
blends are not allowed: the option's 'y_blend' field must
be PK_LOGICAL_false.
'preserve_notch' The option 'preserve_notch' only has an effect when a
sheet body is being blended. If it is set to
PK_LOGICAL_false, PK_BODY_fix_blends will make
a simple curve within the blend surface to bridge a laminar
notch. If this option is set to PK_LOGICAL_true, the shape
of the notch is projected normally onto the blend surface
to bridge the notch gap. If a solid body is being blended
this option has no effect and is ignored.
See Preserving notch shape for more information.
'update' The default value allows applications to take advantage of
the latest enhancements to the blending algorithm. To
maintain consistency when rebuilding models created in a
previous version of Parasolid, a non-default value should
be specified.
See Update control for more information.
'tolerance' The options 'set_tol' and 'tolerance' control whether a
'set_tol' tolerance may be applied to the blend.
'set_tol' must be set to PK_blend_set_tol_no_c for facet
geometry.
'repair_su_X' The option 'repair_su_X' controls whether or not Parasolid
will attempt to repair blend surfaces that are
self-intersecting. It only has an effect on conic rolling
ball blends. Parasolid will create suitable faces to patch
the self-intersecting regions. This option will only
attempt to repair blends that are self-intersecting due to
an underlying surface of the blend being too tightly
curved to support the blend if the 'inside_tight' option
is set to PK_blend_inside_tight_faces_c or
PK_blend_inside_tight_partial_c.
If 'repair_su_X' is set to any value other than
'PK_blend_repair_su_x_no_c', then the faces of all
self-intersecting surfaces that could not be repaired are
returned in a report of type PK_REPORT_1_blend_faces_sx_c.
See Repairing self-intersecting blends for more
information.
'output_sheet' The option 'output_sheet' controls whether the blend
should be attached or created as a separate sheet body.
If the 'output_sheet' option is set to
PK_blend_output_sheet_on_fail_c, the blend sheet body
(possibly disjoint) produced may not remain consistent over
different builds of Parasolid. Future improvements to
blending functionality may result in failing blends
succeeding. Thus, application updates should not depend
upon a blend failing and producing a blend sheet body.
'inside_tight' The option 'inside_tight' controls whether blends will be
created on the inside of faces that have a smaller radius
of curvature than the blend. Switching this option on also
enables cliff-edge overflows on the inside of cliff-edges
that are more tightly curved than the blend radius. This
option will only apply to blends set by using
PK_EDGE_set_blend_constant, or conic blends set via
PK_EDGE_set_blend_chain. The values
PK_blend_inside_tight_faces_c or
PK_blend_inside_tight_partial_c may only be supplied if the
'repair_su_X' option is set to PK_blend_repair_su_X_yes_c
or PK_blend_repair_su_X_report_c. In the latter case any
blend faces created on too tightly curved faces will be
returned as repaired. The value
PK_blend_inside_tight_no_c is not currently implemented for
PK_BODY_fix_blends and should not be supplied.
See Creating blends inside tight corners for
more information.
'vx_order_data' The option 'vx_order_data' controls the order in which
blends are applied at vertices with edges of different
convexity.
'ov_smooth' The options 'ov_smooth', 'ov_notch' and 'ov_order' control
'ov_notch' the result returned when two blends on edges that do not
'ov_order' share a common vertex overlap with each other. The
combination PK_blend_ov_smooth_yes_c and
PK_blend_ov_notch_yes_c is not currently implemented and
should not be supplied. The option 'ov_order' must be set
to either PK_blend_order_concave_convex_c or
PK_blend_order_convex_concave_c. If any blends to be fixed
have a cross-section shape of PK_blend_xs_shape_chamfer_c
then 'ov_smooth' must be set to PK_blend_ov_smooth_no_c.
Note that PK_blend_ov_notch_yes_c is not implemented for
blends on facet geometry.
'repair_fa_X' The option 'repair_fa_X' controls whether or not Parasolid
will attempt to repair blend faces that are
self-intersecting.
'explicit_cliff_edges'
'explicit_cliff_edges_type'
The options 'explicit_cliff_edges' and
'explicit_cliff_edges_type' are used together to
explicitly define cliffing behaviour upon the edges
contained in the list of edges 'explicit_cliff_edges'.
For every element in 'explicit_cliff_edges' there should
be a corresponding element in the list
'explicit_cliff_edges_type'. The elements of
'explicit_cliff_edges_type' are of type
PK_blend_ov_exp_cliff_t and can take the value
PK_blend_ov_exp_cliff_no_c or PK_blend_ov_exp_cliff_yes_c.
PK_blend_ov_exp_cliff_no_c specifies that regardless of
all other options cliffing should not occur upon the
associated edge. PK_blend_ov_exp_cliff_yes_c specifies that
cliffing should occur upon the edge overriding the
behaviour specified by other options. If any blends to be
fixed have a cross-section shape of
PK_blend_xs_shape_chamfer_c, then explicit cliffs must not
be supplied.
'partition' An optional user-supplied partition may be supplied in
'partition'. If a partition is supplied and the blend
options specify the blend result is to be returned as
sheets, rather than attached to the body being blended,
then those resultant sheets will be placed within this
user-supplied partition. Default behaviour assumes no
partition supplied ( PK_PARTITION_null ) and any resultant
sheets are placed in the partition associated with the
body being blended.
'cap_data' Specifies user-defined controls for how the blend should
be capped. See the documentation for PK_blend_cap_data_t
for more information.
'improve_tolerance' The option 'improve_tolerance' controls some changes to
the blending algorithm which help to reduce the tolerance
on newly created topology. If this option is set to
PK_blend_tolerance_standard_c (the default) these
changes are disabled.
'tracking_type' Determines the tracking information that is returned
regarding the underlying topologies and geometries used
to create a blend. See PK_BODY_fix_blends for details.
This option can only be set to
PK_blend_track_type_unders_c if the option 'vx_twin'
is set to PK_LOGICAL_true. If 'vx_twin' is not set
appropriately PK_ERROR_bad_combination will be returned.
'laminar_trim' This option allows the user to control the trimming
behaviour of a blend created on a laminar edge of a
sheet body. The user can choose between trimming the blend
so that it is continuous with both underlying surfaces,
or trimming it along a continuous parameter line so that it
joins up continuously with the longer underlying surface
only.
'limit_data' The option 'limit_data' provides a means of constraining
the blend by applying limits.
'limit_topols' An array of faces and/or fins which will be used to stop
the blend. If the blend encounters a face or fin from this
array, it will stop and be trimmed to end in a
constant parameter line at that point.
'limit_topols_patch'
If supplied, this should be an array of the same length
as 'limit_topols'. Each element in this array specifies
whether to try patching the blend beyond the corresponding
limit topology specified in the 'limit_topols' array.
'limit_topols_unders'
If supplied, this should be an array of the same length
as 'limit_topols'. Each element in this array is an array
of topologies which specifies whether the corresponding
limit topology should only limit blends that are blends
between the specified underlying topologies.
Each topology array in the 'limit_topols_unders' should be
either of length zero or length two. If the array is of
length two then the array should contain a pair of faces;
the limit topology will only limit blends that are between
that pair of underlying faces. If the array is of length
zero then the corresponding limit topology will limit all
blend faces that meet the limit topology.
Underlying topologies may only be supplied for limit
topologies of class PK_CLASS_fin; if the limit topology is
not of class PK_CLASS_fin then the corresponding entry in
'limit_topols_unders' should be an array of length zero.
If 'limit_topols_unders' is not supplied then the blend
will stop at any entry in 'limit_topols' that the blend
meets.
'suggest_limit' This option allows the user to control whether they wish
the suggested limit data to be returned as a report should
an edge blend failure occur. Future improvements to
blending functionality may result in failing blends
succeeding. Thus, application updates should not depend
upon a blend failing and returning a certain set of
suggested limits. This option will not return limits
on facet geometry.
'report' Whether to report any repaired blend faces in the
Parasolid report stream. Any records will be of type
PK_REPORT_record_type_1_c and will have a status of
PK_REPORT_1_rep_sx_faces_c or PK_REPORT_1_rep_G2_faces_c.
In the first case the report will list those blend faces
created by repairing self-intersections.
In the second, the blend_faces reported are those from
G2 blends which have been modified to preserve continuity
when crossing G2-discontinuous edges.
( PK_blend_report_repaired_no_c )
'extension_shape' This option controls how underlying classic surfaces of
faces and classic curves of certain edges are extended for
G2 blends. If the surfaces/curves are extended linearly,
then blends built on the extension may have a C1
discontinuity on the boundary. Setting this option to
PK_extension_shape_soft_c avoids this, but may require
surfaces of faces to be extended as a result. Any edges
given as cliff edges that bound one of these faces may
also need their curves softly extended.
The surfaces/curves whose soft extension are used to
construct the blend and whether they have been
permanently extended, will be reported in a
PK_REPORT_3_geom_extended_c report. Any surfaces/curves
that could not be extended or already contain
discontinuities will also be reported in a
PK_REPORT_3_blend_x_g1_c report.
All edge blends set on the body must have a cross section
shape of either PK_blend_xs_shape_g2_c or non-circular
conic when the option is set to PK_extension_shape_soft_c,
otherwise the error PK_ERROR_bad_combination will be
raised.
( PK_extension_shape_linear_c )
'report_extended' Whether to report any chamfer faces that are
extended outside of their natural width in the
Parasolid report stream. Any records will be of type
PK_REPORT_record_type_3_c and will have a status of
PK_REPORT_3_chamfer_extended_c.
( PK_blend_report_extended_no_c )
Generated on: Fri, 04 Oct 2024 12:16:53 GMT