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

This function does not support facet geometry [NF]


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


The topologies of the given 'faces', which must belong to the same body, plus
all their geometry and attributes are copied into a new solid body or bodies.
A new body is created from each set of connected faces.

If any of the copied topological entities are contained within groups, then
these groups plus their attributes are copied into the appropriate new
solid body or bodies.

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.

See Local Ops: Creating New Solids from Faces and
Making a body from solid topology for more information.