 |
PK_FACE_fix_mesh_defects |
|
PK_ERROR_code_t PK_FACE_fix_mesh_defects
(
--- received arguments ---
int n_faces, --- number of faces
const PK_FACE_t faces[], --- array of faces to process
const PK_FACE_fix_mesh_defects_o_t *options, --- options
--- returned arguments ---
PK_ENTITY_track_r_t *const tracking, --- tracking
PK_FACE_fix_mesh_defects_r_t *const results --- results
)
This function attempts to repair meshes attached to the given faces.
Specific Errors:
PK_ERROR_unsuitable_entity Some of the faces in 'faces' don't have
facet geometry.
(MILD)
PK_ERROR_wrong_entity Some of the faces in 'faces' are rubber.
(MILD)
PK_ERROR_non_manifold Some of the faces in 'faces' are connected
by a non-manifold edge.
(MILD)
PK_ERROR_wrong_entity_in_array The input faces are not from same body.
(MILD)
PK_ERROR_not_connected The input faces do not form a single edge-
connected set.
(MILD)
PK_ERROR_missing_geom Either an edge or a vertex is rubber.
(MILD)
PK_ERROR_cant_fix_defects Failed to fix face set.
(SERIOUS)
This function fixes defects on meshes of the supplied faces, keeping the
body watertight as necessary.
The 'faces' must all have facet geometries, form a single edge-connected
set, and be connected by manifold edges.
Note that faces adjacent to 'faces' may be affected.
Degenerate and flat facets, as well as slits at laminar edges, and
foldovers in the interior of the faces are repaired. These repairs are
performed to session precision, or to 'max_deviation' if supplied. Self-
intersections are repaired, unless they cross or touch an edge.
No attempts are made to resolve invalidities of type
PK_FACE_state_bad_face_face_c.
Tracking information
The 'tracking' structure contains track records of operations performed on
the topologies.
For any face whose mesh was repaired, there is a tracking record of type
PK_ENTITY_track_derive_c where the original entities are the face and the
original mesh, and the product entity is the repaired mesh.
For any face which was deleted, there is a tracking record of type
PK_ENTITY_track_delete_c where the original entity is that face.
For any edge that resulted from gluing two edges, there is a tracking
record of type PK_ENTITY_track_derive_c where the original entities are
the two edges involved, and the product entity is the resulting edge.
For any edge that was split from an existing edge, there is a tracking
record of type PK_ENTITY_track_derive_c where the original entity is the
original edge, and the product entity is the new edge.