 |
PK_FACE_boolean_o_t |
|
struct PK_FACE_boolean_o_s
{
int o_t_version; --- version number
PK_boolean_function_t function; --- boolean operation
--- (PK_boolean_unite_c)
const PK_boolean_config_o_t
*configuration; --- target and tool
--- configuration (NULL) [PF]
const PK_boolean_region_select_o_t
*select_region; --- region selection (NULL)
const PK_boolean_match_o_t
*matched_region; --- regions to match (NULL)
PK_imprint_face_list_t
extend_face_list; --- whether to use additional
--- target/tool faces
--- (PK_imprint_face_list_no_c)
PK_LOGICAL_t stop_self_intersection;
--- prevent self intersections
--- (PK_LOGICAL_false)
PK_LOGICAL_t tracking; --- include tracking
--- (PK_LOGICAL_false)
PK_LOGICAL_t merge_imprinted; --- merge imprinted edges where
--- possible
--- (PK_LOGICAL_false)
PK_boolean_fence_t fence; --- fencing options
--- (PK_boolean_fence_none_c)
PK_LOGICAL_t allow_disjoint; --- allow disjoint body
--- (PK_LOGICAL_false)
PK_LOGICAL_t selective_merge; --- selective merge
--- (PK_LOGICAL_false)
PK_boolean_check_fa_t check_fa; --- face check options
--- (PK_boolean_check_fa_yes_c)
double default_tol; --- default tolerance
--- (1.0E-5)
double max_tol; --- max tolerance
--- (0.0)
PK_LOGICAL_t merge_attributes; --- merge attributes
--- (PK_LOGICAL_false)
PK_LOGICAL_t keep_target_edges;--- handle coi edges
--- (PK_LOGICAL_false)
PK_imprint_complete_t imprint_complete_targ;
--- whether to complete
--- imprint on target faces
--- (PK_imprint_complete_no_c)
PK_imprint_complete_t imprint_complete_tool;
--- whether to complete
--- imprint on tool faces
--- (PK_imprint_complete_no_c)
PK_boolean_material_t target_material_side;
--- material side of target
--- (PK_boolean_material_default_c)
PK_boolean_material_t tool_material_side;
--- material side of tool
--- (PK_boolean_material_default_c)
PK_boolean_prefer_t resulting_body_type;
--- the preferred type of the
--- resulting body
---(PK_boolean_prefer_original_c)
PK_LOGICAL_t limit_target_faces;
--- the boundary of the target face
--- set limits the faces to be
--- deleted when trimming
--- (PK_LOGICAL_false)
PK_boolean_no_effect_t
flag_no_effect; --- level of reporting of
--- boolean operations where
--- there has been no effect upon
--- the target body.
--- (PK_boolean_no_effect_basic_c)
PK_LOGICAL_t limit_tool_faces;
--- the boundary of the tool face
--- set limits the faces to be
--- deleted when trimming
--- (PK_LOGICAL_false)
PK_boolean_track_type_t
tracking_type; --- level of tracking reporting
--- for boolean operations.
--- (PK_boolean_track_type_basic_c)
const PK_FACE_overflow_data_o_t
*target_face_overflow;
--- how to process overflow from
--- target body onto tool body at
--- laminar edge of target body.
--- (NULL) [NF]
const PK_FACE_overflow_data_o_t
*tool_face_overflow;
--- how to process overflow from
--- tool body onto target body at
--- laminar edge of tool body.
--- (NULL) [NF]
PK_boolean_update_t update; --- update switch
--- ( PK_boolean_update_default_c )
};
typedef struct PK_FACE_boolean_o_s PK_FACE_boolean_o_t;
This option structure is supplied to a face boolean.
Used in:
PK_FACE_boolean
PK_FACE_boolean_2
PK_FACE_instance_tools
See also here for more information.
Description of fields:
'function' Indicates whether an intersect, unite or subtract
operation is to be performed, permitted values
are
PK_boolean_intersect_c
PK_boolean_subtract_c
PK_boolean_unite_c
'configuration' Describes the configuration of target and tool
bodies.
See PK_boolean_config_o_t and #Optimizing boolean
operations#DOC0097# for more information.
'select_region' Used to identify regions of the tool and/or target to
include or exclude in the result. This is ignored by
PK_FACE_instance_tools in cases of more than one
instance, except if all of the 'configuration'
options are set to true.
See Select regions in boolean operations
for more information.
'matched_region' Describes matched regions between the target and tool
bodies.
See PK_boolean_match_o_t and here for more
information.
'extend_face_list' A face boolean receives a subset of the faces of a
target/tool body. If the imprinting of the boolean
results in incomplete loops of imprinted edges, the
face list of the target or tool may be extended so
that additional faces will be intersected with the
tool or target. Additional faces can be added on to
the tool or the target or on to both the tool and
the target as specified.
See here for more information.
'stop_self_intersection' Stop self intersection, after imprinting, tool faces
which will survive the boolean are then compared
against all faces of the target body.
'tracking' Request additional topological data on the result
of the boolean, this is specific to the function
being called.
'merge_imprinted' Merge all mergeable imprinted edges created and/or
located by the boolean operation. Note that an
existing edge can be considered an imprinted edge
if it forms part of the intersection between faces
from the target and tool.
'fence' To determine which resultant bodies are returned when
performing solid/sheet (trimming) or sheet/solid
(punching) boolean operations.
Permitted values are :
PK_boolean_fence_front_c
PK_boolean_fence_back_c
PK_boolean_fence_none_c
See Effect of the fence option for more
information.
'allow_disjoint' If this option is set to PK_LOGICAL_true, the result
of the boolean will be a single body which may contain
disjoint manifold components.
This option is ignored when a solid target and sheet
tool body are specified for a subtract operation and
the 'fence' option is specified with a value of
PK_boolean_fence_none_c, the 'target_material_side'
and 'tool_material_side' options are set to
PK_boolean_material_default_c and the
'resulting_body_type' option is set to
PK_boolean_prefer_original_c.
'selective_merge' If this is set to PK_LOGICAL_true, the merge phase
will avoid merging imprinted edges that existed
and were mergeable before the start of the boolean.
This flag has no effect if 'merge_imprinted' is not
set to PK_LOGICAL_true.
See Effect of merge options for more
information.
'check_fa' The value of this determines if face checking is
performed during the operation, permitted values
are :
PK_boolean_check_fa_no_c
PK_boolean_check_fa_yes_c
The default is set to 'PK_boolean_check_fa_yes_c'
and it is strongly advised not to change this value.
If the face checking is switched off, the boolean
operation may produce an invalid body without
raising an error.
'default_tol' The default tolerance to which the boolean
operation, if it has to, may approximate entities
or assume that entities are coincident. This value
should be set to a value that is related to the
tolerance to which the application is creating
approximations.
If this field is set to zero (0.0), it is assumed
that the decision to set tolerances on entities is
being left to the modeller.
'max_tol' This value specifies the maximum tolerance which may
be applied to any entity involved in the boolean
operation.
If this field is set to zero (0.0), the default, then
it assumed that no upper limit has been set on the
tolerance of any entity.
If the field is not set to zero (0.0), then it must be
set to a value that is greater than the value of the
'default_tol' field.
'merge_attributes' If this is set to PK_LOGICAL_true, then any situation
in which two coincident faces are combined to result
in a face in a result body, will be treated as a
'merge' event from the point of view of attribute
processing and attribute callbacks. If it is set to
PK_LOGICAL_false, which is the default, then such a
situation will be treated as the deletion of one of
the faces.
'keep_target_edges' This option controls which edge survives when a
target edge and a tool edge coincide in a boolean. If
both faces adjacent to the tool edge survive, then the
tool edge will also survive. Otherwise, the result
depends on the setting of the option:
PK_LOGICAL_true:
The target edge survives, unless the target edge
is a new edge imprinted during the boolean, and
the tool edge is an original edge - in this case,
the tool edge survives.
PK_LOGICAL_false (the default):
The older edge (i.e. the one with the smaller tag)
survives.
This option only has an effect if general topology
is disabled. If it is enabled, then the target edge
will always survive, even if it is a newly imprinted
edge.
'imprint_complete_targ' This option controls whether to complete the imprint
on the target faces so that the end vertices of the
imprint lie on any edge or laminar edge of the target
faces. This imprint completion is carried out during
the imprinting phase of the boolean algorithm
(described in PK_BODY_boolean_2).
If this is set to PK_imprint_complete_no_c (the
default) the imprint is not completed. Otherwise the
incomplete imprint is completed by intersecting the
target faces with a plane orthogonal to the target at
the end vertices of the incomplete imprint.
Depending on the value of this option, the imprint
will be completed along the direction of this plane
until it either:
- meets any edge belonging to the target faces
(PK_imprint_complete_edge_c), or
- meets any laminar edge belonging to the target
faces (PK_imprint_complete_laminar_c), or
- reaches the boundary of the list of input faces
provided, or if 'extend_face_list' is set, the
boundary of the extended list of faces
(PK_imprint_complete_faceset_c)
Both the target and tool bodies must be manifold sheet
bodies.
A complete imprint that self-intersects will be
trimmed at the point of self-intersection.
Imprint completion on the target faces will only
occur from laminar edges of the tool.
Restriction: The orientation of the plane is currently
restricted to that which would be produced by
PK_imprint_extend_tangent_c.
See here for more information.
'imprint_complete_tool' This option controls whether to complete the imprint
on the tool faces in a manner similar to that
described for 'imprint_complete_targ' above.
See here for more information.
'target_material_side' This option allows the material side of the target
faces to be specified when determining which faces
survive the given Boolean.
PK_boolean_material_inside_c:
All faces are treated as if their face normals
point away from solid material.
This allows a sheet body to be treated locally as
the boundary of a solid; treatment of faces from
solid bodies will be unchanged.
PK_boolean_material_none_c:
All faces are treated as if they have no solid
material on either side.
This allows a solid body to be treated locally as
a sheet; treatment of faces from sheet bodies will
be unchanged.
PK_boolean_material_outside_c:
All faces are treated as if their face normals
point into solid material.
This allows a sheet body to be treated locally as
the boundary of a solid; solid bodies will be
negated.
PK_boolean_material_default_c (the default):
Faces from solid bodies have normals pointing away
from solid material; faces from sheet bodies will
have material on neither side.
This option is only supported if general topology is
disabled.
See here for more information.
'tool_material_side' This option allows the material side of the tool
faces to be specified when determining which faces
survive the given Boolean.
PK_boolean_material_inside_c:
All faces are treated as if their face normals
point away from solid material.
This allows a sheet body to be treated locally as
the boundary of a solid; treatment of faces from
solid bodies will be unchanged.
PK_boolean_material_none_c:
All faces are treated as if they have no solid
material on either side.
This allows a solid body to be treated locally as
a sheet; treatment of faces from sheet bodies will
be unchanged.
PK_boolean_material_outside_c:
All faces are treated as if their face normals
point into solid material.
This allows a sheet body to be treated locally as
the boundary of a solid; solid bodies will be
negated.
PK_boolean_material_default_c (the default):
Faces from solid bodies have normals pointing away
from solid material; faces from sheet bodies will
have material on neither side.
This option is only supported if general topology is
disabled.
See here for more information.
'resulting_body_type' This option allows the preferred type of the
resulting body to be indicated. Only the
following values are allowed:
PK_boolean_prefer_solid_c:
If possible the results of the Boolean operation
will be solid bodies. The result will only be
made solid if all shells in the result are closed.
PK_boolean_prefer_sheet_c:
If possible the results of the Boolean operation
will be sheet bodies. The result may contain
several components, if 'allow_disjoint' is set to
PK_LOGICAL_false then the components will be
split out into separate bodies.
PK_boolean_prefer_original_c (the default):
The resulting bodies will be of the same type as
the target body. If it is not possible to return
a body of the desired type an appropriate error
will be returned.
See here for more information.
If the 'fence' option is not PK_boolean_fence_none_c
this option must be set to
PK_boolean_prefer_original_c.
'limit_target_faces' This option limits the faces to be deleted. It
is particularly useful when the operation is a
trim of the target.
PK_LOGICAL_true:
The boundary of the target face set is used to
complete the imprint and limits the face set
to be deleted. It should be noted that the
target face set will include faces added by any
requested face list extension during the initial
phase of imprinting.
PK_LOGICAL_false (the default):
No limits are imposed upon the region to be
deleted.
This option can only be used with a limited
set of operations.
For more information, see here.
'flag_no_effect' This option allows the user to specify that if it is
possible to determine that the original target body
is unaffected by the tools, the returned token
will be PK_boolean_result_no_effect_c, in
preference to PK_boolean_result_success_c.
PK_boolean_no_effect_basic_c:
(Default).
PK_boolean_result_no_effect_c is returned in
the same cases as V16.1 and earlier.
PK_boolean_no_effect_advanced_c:
Return PK_boolean_result_no_effect_c in
preference to PK_boolean_result_success_c,
whenever possible to determine with certainty
that the target is unchanged by the tools.
This option considers a body is unchanged when
all the following conditions apply:
- the body occupies the same area/volume
- no additional topology or geometry has been
imprinted
- the body type is unchanged.
'limit_tool_faces' This option limits the faces to be deleted.
PK_LOGICAL_true:
The boundary of the tool face set is used to
complete the imprint and limits the face set
to be deleted. It should be noted that the tool
face set will include faces added by any
requested face list extension during the
initial phase of imprinting.
PK_LOGICAL_false (the default):
No limits are imposed upon the region to be
deleted.
This option can only be used with a limited
set of operations.
For more information, see here.
'tracking_type' This option allows the user to specify the level
of information they wish tracking records to
contain. The levels of tracking available are:
PK_boolean_track_type_basic_c:
(Default).
Tracking records are compatible with v17.1
and earlier. Tracking records associated with
edges generated by imprint completion contain
information regarding the original topology
upon which they are imprinted only.
PK_boolean_track_type_comp_c:
Returns enhanced information regarding edges
generated by imprint completion. Tracking
records for edges generated by imprint
completion contain information regarding the
original topology upon which they are
imprinted; additionally implied information
regarding the topology on the other body is
included. This is the topology on the other body
which caused the imprint from which completion
is occurring.
'target_face_overflow' This option allows the user to specify the method
of overflowing the imprint from the target body onto
the tool body when overflowing a laminar edge of the
target body and overflow imprinting is chosen.
This option is only supported if
'imprint_complete_tool' is set to
PK_imprint_complete_no_c.
'tool_face_overflow' This option allows the user to specify the method
of overflowing the imprint from the tool body onto
the target body when overflowing a laminar edge of
the tool body and overflow imprinting is chosen.
This option is only supported if
'imprint_complete_targ' is set to
PK_imprint_complete_no_c.
'update' The default value allows applications to take
advantage of the latest enhancements to the boolean
algorithm. To maintain consistency when rebuilding
models created in a previous version of Parasolid, a
non-default value should be specified.
(PK_boolean_update_default_c)
Restrictions:
The following options are not currently implemented for
PK_FACE_instance_tools:
'select_region'
'target_material_side'
'tool_material_side'
'resulting_body_type'
'limit_target_faces'
'limit_tool_faces'
'target_face_overflow'
'tool_face_overflow'
The 'tool_material_side' option must be set to PK_boolean_material_default_c
if the tool faces are not all from the same body.