 |
PK_FACE_make_3_face_blend |
|
PK_ERROR_code_t PK_FACE_make_3_face_blend
(
--- received arguments ---
int n_left_wall_faces, --- number of faces
--- in left wall
const PK_FACE_t left_wall_faces[], --- left wall faces
int n_right_wall_faces, --- number of faces
--- in right wall
const PK_FACE_t right_wall_faces[], --- right wall faces
int n_centre_wall_faces, --- number of faces
--- in centre wall
const PK_FACE_t centre_wall_faces[], --- centre wall faces
PK_BODY_t guide, --- wire body for
--- blend planes
const PK_FACE_make_3_face_blend_o_t *options, --- options structure
--- returned arguments ---
PK_FACE_make_3_face_blend_r_t *const results, --- results of blend
PK_TOPOL_track_r_t *const tracking --- tracking
)
This function makes a three-face blend from the given faces.
This function does not support facet geometry [NF]
Specific Errors:
PK_ERROR_not_in_same_partition Faces are not all in the same partition
(MILD)
PK_ERROR_bad_type Guide is not a wire body (MILD)
PK_ERROR_bad_partition User supplied partition is invalid (MILD)
PK_ERROR_bad_combination User supplied options are incompatible
(MILD)
PK_ERROR_failed_to_blend Could not create blend (SERIOUS)
PK_ERROR_general_body General body (MILD)
PK_ERROR_instanced_body The faces in the left and right walls are
from different bodies, and the right wall
faces belong to a body that is instanced
(MILD)
PK_ERROR_facet_geometry The faces in one of the walls are from a
body with facet geometry (MILD)
This function creates one or more blends between the three sets of faces
provided. For further details see Three-face Blending in the
Functional Description.
The function receives:
'left_wall_faces' An array of the faces which make up the left wall.
These faces must all lie in the same shell of the same
body.
'right_wall_faces' An array of the faces which make up the right wall.
These faces must all lie in the same shell of the same
body.
'centre_wall_faces' An array of the faces which make up the centre wall.
These faces must all lie in the same shell of the same
body.
'guide' A wire body defining the cross-section planes of the
blend. This must be a manifold connected wire that is
G1 continuous and contains no tolerant vertices.
The three walls may be faces from either sheet or solid bodies.
If the left body is solid, the faces of the right wall must also lie in that
body. If the right body is solid, the faces in the left wall must also lie
in that body.
Three face blending does not support general bodies, if any of the supplied
wall faces are associated with general bodies the PK_ERROR_general_body
error will be reported.
If the left and right walls lie in different bodies and if 'walls' is set to
'PK_blend_walls_attach_c' or 'PK_blend_walls_solid_c', their bodies will
be combined, with the body containing the 'left_wall_faces' being
considered the target body. The body of the 'right_wall_faces' may be negated
before combining, if necessary to achieve a consistent result.
The blend must pass through at least one of the master faces of the
supplied walls, where the master face of each wall is the first face supplied.
Further options can be supplied to the function in the
PK_FACE_make_3_face_blend_o_t option structure.
If PK_FACE_make_3_face_blend has successfully created a blend or has not
failed with a serious error, then:
'results' will consist of a PK_FACE_make_3_face_blend_r_t structure
containing a token indicating the status of the blending
operation, the orientations used, and information associated
with any failure of the blending operation.
'tracking' will contain topology tracking information of type
PK_TOPOL_track_create_c, reporting blend faces created
and the ( possibly dead ) tags of the originating topology.
In general this will be the tags of the left, right and
centre wall faces and any other data that determined the
geometry of the blend face.
For capping faces the array will contain the tag/tags
of the appropriate original entities from which they
were derived. For capping faces derived from
user-supplied limiting topology/geometry the array will
contain the tag of the relevant user-supplied entity.
For capping faces the array may contain faces, edges,
planes or fins. Fins will be returned when they have
been supplied in the user-supplied 'limits' array and the
capping face has arisen from using them to stop the blend.
For each limit or capping entity, two capping faces may be
created. To distinguish between them in addition to the
tag of the entity, a tag of a face from the corresponding
side and a tag of a face from the centre wall are added.
If the result is a sheet body and the field 'track_edges'
is set to PK_blend_track_edges_laminar_c in the options
structure, additional tracking information will be
returned associated with the laminar edges of the sheet
body. For laminar edges the array may contain faces,
edges or planes.