PK_BODY_boolean_o_t   


struct PK_BODY_boolean_o_s
    {
    int                   o_t_version;     --- version number
    PK_boolean_function_t function;        --- which boolean operation
                                           --- (PK_boolean_unite_c)
    const PK_boolean_config_o_t
                         *configuration;
    const PK_boolean_match_o_t
                         *matched_region;
    PK_LOGICAL_t          merge_imprinted; --- (PK_LOGICAL_false)
    PK_LOGICAL_t          prune_in_solid;  --- (PK_LOGICAL_false)
    PK_LOGICAL_t          prune_in_void;   --- (PK_LOGICAL_false)
    PK_boolean_fence_t    fence;           --- (PK_boolean_fence_none_c)
    PK_LOGICAL_t          allow_disjoint;  --- (PK_LOGICAL_false)
    PK_LOGICAL_t          selective_merge; --- (PK_LOGICAL_false)
    PK_boolean_check_fa_t check_fa;        --- (PK_boolean_check_fa_yes_c)
    double                default_tol;     --- (1.0E-5)
    double                max_tol;         --- (0.0)
    PK_LOGICAL_t          tracking;        --- (PK_LOGICAL_false)
    PK_LOGICAL_t          merge_attributes;--- (PK_LOGICAL_false)
    PK_LOGICAL_t          keep_target_edges;  --- (PK_LOGICAL_false)
    };
typedef struct PK_BODY_boolean_o_s PK_BODY_boolean_o_t;




This option structure is supplied to a boolean operation for bodies.


Description of fields:



function               Indicates whether a 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.


matched_region         Describes matched regions between the target and tool
                         bodies.


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.


prune_in_solid         Prune solid regions of the result. Any faces,
                         edges or vertices in the result body which are
                         completely surrounded by solid regions will
                         be deleted.


prune_in_void          Prune void regions of the result. Any faces, edges
                         or vertices in the result body which are completely
                         surrounded by void regions will be deleted, so long
                         as the result body contains some pieces of a higher
                         dimension (for example, a sheet face will only be
                         deleted if the result body contains at least one
                         solid region).


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


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.


selective_merge        If this is set to PK_LOGICAL_true, the merge phase
                         will avoid mergeing 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.


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 PK_boolean_check_fa_yes_c.
                         If the face checking is switched off, the boolean
                         operation may produce an invalid body without
                         raising an error. However, in some cases, if face
                         checking is switched on the performance of the
                         boolean operation may be reduced.

                         NOTE: This option is inoperative for PK_BODY_boolean.


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.


tracking               Not currently in use.


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. A subtract operation will never result in
                         merge events.


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.