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.