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 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     Cant 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,
except in the case where the target is a wire body. 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, and in this case the tools
must all be solids.

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.