PK_BODY_subtract_bodies   

PK_ERROR_code_t      PK_BODY_subtract_bodies
(
--- received arguments ---
PK_BODY_t                  target,    --- Body to receive message
int                        n_tools,   --- Number of tool bodies
const PK_BODY_t            tools[],   --- Tool bodies

--- returned arguments ---
int                 *const n_bodies,  --- Number of resultant bodies
PK_BODY_t          **const bodies     --- Resultant bodies
)


This function performs a boolean subtract operation between the target
body and the list of tool bodies.


Specific Errors:

    PK_ERROR_contradictory_request      Bad combination of options or
                                        data for type of boolean
    PK_ERROR_same_tool_and_target       Tool body is also target body
    PK_ERROR_missing_geom               Target or tool has incomplete
                                        geometry
    PK_ERROR_wire_body                  Tool is a wire body
    PK_ERROR_duplicate_tools            Duplication in list of tool bodies
    PK_ERROR_instanced_tools            Instanced tool bodies
    PK_ERROR_mixed_sheets_solids        Mixture of sheet and solid
                                        tool bodies
    PK_ERROR_cant_unite_solid_sheet     Attempt to unite solid and sheet
    PK_ERROR_opposed_sheets             Attempt to unite opposed sheets
    PK_ERROR_cant_intsc_solid_sheet     Cannot intersect solid target with
                                        sheet tool bodies
    PK_ERROR_t_sheet                    Operation would result in a T-sheet
    PK_ERROR_non_manifold               Non-manifold result
    PK_ERROR_boolean_failure            Inconsistent arguments, or
                                        internal error
    PK_ERROR_general_body               Target or tool is general body





A boolean subtract operation between the target body and the tool bodies
is performed. The target body is modified and the tool bodies are deleted,
unless the target is a wire body and generalised topology is disabled in the
session; in this case the tools are not modified. The resulting body or
bodies replace the target, and are returned in an array.

The target may be a wire body but the tools may not. If the target is a wire
body the tools must either all be solids or all be sheets.

This function will accept general bodies in 'target' or 'tools' only if
generalised topology is enabled.

Refer to the PK_BODY_boolean_2 documentation for a more detailed
description of booleans.