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.