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.