PK_FACE_make_solid_bodies   


PK_ERROR_code_t          PK_FACE_make_solid_bodies
(
--- 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             local_check,      --- whether to perform local check

--- returned arguments ---
int               *const n_bodies,
PK_BODY_t        **const bodies,           --- created solid bodies
PK_local_check_t **const check_results     --- results of local check
)


This function creates solid bodies from a collection of faces


Specific Errors:
    PK_ERROR_wire_body              (MILD) unable to make solid from wire body
    PK_ERROR_dont_make_solid        (MILD) can't make solid from given faces
    PK_ERROR_non_manifold           (MILD) can't heal wound with non-manifold
                                           boundary
    PK_ERROR_not_in_same_part       (MILD) faces not all from same body
    PK_ERROR_general_body           (MILD) faces come from general body
    PK_ERROR_not_implemented        (MILD) heal_action not implemented


All of the given faces, which must belong to the same body, are copied into one
or more new bodies.  A new body is created from each set of connected faces.
If a 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_child_c  faces around the hole are extended until
                                    they cover the hole
    PK_FACE_heal_grow_from_parent_c grow the faces the parent had around the
                                    hole until they cover it

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.
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.