 |
PK_BODY_identify_general |
|
PK_ERROR_code_t PK_BODY_identify_general
(
--- received arguments ---
PK_BODY_t body, --- body to search
const PK_BODY_identify_general_o_t *options, --- options
--- returned arguments ---
PK_identify_general_r_t *const results --- identify results
)
This function identifies characteristics of a general body which require it to
be of type PK_BODY_type_general_c.
Specific Errors:
PK_ERROR_not_general (MILD) body is not a general body
In each case a token and associated topological entity are returned. The
possible returns are as follows :
'type' | 'topol' | meaning
---------------------------------------------------------------------
PK_general_nm_edge_c | edge | edge is non-manifold
PK_general_nm_vertex_c | vertex | vertex is non-manifold
PK_general_opposed_faces_c | edge | edge has two faces with
| | opposite normals
PK_general_solid_internal_c | face | face has solid regions on
| | both sides
PK_general_mixed_dimension_c | region | Body has components of
| | different dimension
PK_general_wire_in_solid_c | edge | Wire-frame edge is inside
| a solid region
The dimension of a component is the highest dimension present, so a component
with only wires is dimension one, one with sheets and wires is dimension two
and so on. In the case that PK_general_mixed_dimension_c is returned then the
corresponding region is a void region of the body separating different
dimension components.
The function works from higher dimension down and may not return lower
dimension characteristics associated with a higher dimension general condition
- so for example an internal face dividing a solid cube into two would be
returned, but its edges would not be returned as non-manifold edges.
If the function returns no general characteristics, i.e. n_general is zero,
then the body does not have to be general and a call to
PK_BODY_make_manifold_bodies will set it to be of the correct manifold type.