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.