PK_FACE_delete   


PK_ERROR_code_t          PK_FACE_delete
(
--- received arguments ---
int                      n_faces,          --- number of faces
const PK_FACE_t          faces[],          --- faces
PK_FACE_heal_t           heal_action,      --- method for healing wounds
PK_LOGICAL_t             loops_independent,--- whether to heal loops
                                           --- independently
PK_LOGICAL_t             local_check,      --- whether to perform local check

--- returned arguments ---
int               *const n_bodies,         --- number of bodies
PK_BODY_t        **const bodies,           --- remaining bodies
PK_local_check_t **const check_results     --- result of local check
)


This function deletes the given faces from a solid or sheet body and repairs
any resulting holes.


Specific Errors:
    PK_ERROR_wire_body              (MILD) unable to delete faces from wire
                                    body
    PK_ERROR_non_manifold           (SERIOUS) can't heal wound with
                                    non-manifold boundary
    PK_ERROR_wrong_entity_in_array  (MILD )faces not all from same body
    PK_ERROR_general_body           (SERIOUS ) faces come from general body
    PK_ERROR_all_faces_in_body      (MILD) can not delete all faces in a body
    PK_ERROR_cant_heal_wound        (SERIOUS) can't heal wound - impossible
                                    geometry
    PK_ERROR_not_implemented        (MILD) heal_action not implemented


All of the given faces, which must belong to the same body, are deleted from
that body.  If the resulting body does not have a complete boundary, then any
holes are treated as wounds which are healed as specified by heal_action.
This may take the values:

    PK_FACE_heal_no_c               don't heal wounds - leave rubber faces
    PK_FACE_heal_cap_c              find a surface in which all edges of a hole
                                    lie and attach this to a face covering the
                                    hole
    PK_FACE_heal_grow_from_parent_c grow the faces the parent had around the
                                    hole until they cover it
    PK_FACE_heal_shrink_c           if extending faces does not yield a
                                    solution, then shrinking the faces is tried

The local_check argument specifies whether checks on newly created
topological and geometrical entities are to be performed, and the
check_results argument returns the result of such checks on each body.
check_results may take the values:

    PK_local_check_no_c             local checking not performed either because
                                    local_check was PK_LOGICAL_false or
                                    heal_action was PK_FACE_heal_no_c
    PK_local_check_ok_c             body passes local checks
    PK_local_check_negated_c        as initially created, body was inside out
                                    but it has been negated and is now valid
    PK_local_check_failed_c         body fails local checks - it is
                                    self-intersecting

Rubber faces can not be grown to heal other wounds.

This function will not operate on faces from a general body.

If loops_independent is set to PK_LOGICAL_true, then each closed loop around
a face or group of faces is healed independently.  Otherwise loops are healed
together.  Healing loops independently can result in a fragmented body.

The faces may not form the shell of a sheet body, or the outer shell of a solid
body, but may form an inner shell of a solid body, in which case the shell is
deleted.