PK_ERROR_code_t PK_FACE_make_blend
(
--- received arguments ---
int n_left_wall_faces, --- number of faces in
--- left wall
const PK_FACE_t left_wall_faces[], --- faces in left wall
int n_right_wall_faces, --- number of faces in
--- right wall
const PK_FACE_t right_wall_faces[], --- faces in right wall
PK_LOGICAL_t left_sense, --- blend direction
--- from left wall
PK_LOGICAL_t right_sense, --- blend direction
--- from right wall
const PK_FACE_make_blend_o_t *options, --- options structure
--- returned arguments ---
int *const n_sheet_bodies, --- number of sheet bodies
--- created
PK_BODY_t **const sheet_bodies, --- sheet bodies
int *const n_blend_faces, --- number of blend faces
--- created
PK_FACE_t **const blend_faces, --- blend faces
PK_TOPOL_array_t **const unders, --- underlying topology
--- of each blend face
PK_blend_rib_r_t *const ribs, --- ribs returned (if any)
PK_fxf_error_t *const fault --- fault found (if any)
)
This function makes a blend of the given faces.
Specific Errors:
PK_ERROR_not_in_same_partition faces are not all in the same partition
PK_ERROR_fxf_blend_failed could not create blends
This function creates one or more blends between the two sets of faces
provided. The user specifies whether the blend will be attached to the
bodies involved or returned as a separate sheet body. The user may also
specify whether cross sections of the surfaces, "ribs", are returned
instead of or as well as blends. For further details see the "Face-face
Blending" chapter of 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.
The two walls do not need to lie in the same body. If the blend does not
contact either the first face in left_wall_faces or the first face in
right_wall_faces (or both), then PK_FACE_make_blend will fail.
Please also refer to the Parasolid Functional Description Chapter
Face-face Blending, Master Faces section.
left_sense a logical determining which side of left_wall_faces
the blend lies. The blend lies in the direction of the
face normals if left_sense is false.
right_sense a logical determining which side of right_wall_faces
the blend lies. The blend lies in the direction of the
face normals if right_sense is false.
Further options can be supplied to the function in the PK_FACE_make_blend_o_t
option structure.
If PK_FACE_make_blend has successfully created a blend, then:
sheet_bodies will consist of an array of all new blend sheet bodies created,
or nil if the blend has been attached.
face_blends will consist of an array of n_blends blend faces.
unders will consist of a parallel array of n_blends integers
which contain the ( possibly dead ) tags of the underlying
topology used to determine the equivalent blend face in
blend_faces. Each array will consist of the tag of the
face in the left wall, then the tag of the face in the
right wall, then any other data that determined the geometry
of the blend face, such as a cliff edge or tangent hold line.
ribs consists of PK_blend_rib_r_t structure containing the fields:
n_ribs the number of curves and points in the ribs array (may be 0)
rib_indices an array of integers uniquely identifying each rib
rib_parms an array of parameters of each rib, with values
in the range of the parameter curve
ribs an array of curves and points which are cross sections of the
blend surfaces
fault consists of PK_fxf_error_t structure containing the fields:
fault a success status token of type PK_fxf_fault_t
n_topols the number of topological entities associated with the fault
topols an array of topological entities associated with the fault
n_points the number of vectors associated with the fault
points an array of vectors associated with the fault
n_dists the number of distance values associated with the fault
dists an array of distance values associated with the fault
The possible returns are
PK_fxf_fault_no_fault_c The requested blend succeeded.
PK_fxf_fault_sheet_c The blend has not been attached,
nor have the walls been trimmed
but blend sheet bodies have been created.
This token is only returned if
PK_FACE_make_blend was called with walls set to
PK_blend_walls_both_c or PK_blend_walls_attach_c
represents a partial success.
The associated data is a vector in points
and topological tags in topols
These indicate the region where the blend could
not be attached.
PK_fxf_fault_unknown_c The blend could not be created.
PK_fxf_fault_insufficient_c The user has supplied insufficient data
to define a blend.
PK_fxf_fault_inconsistent_c The user has supplied inconsistent data.
PK_fxf_fault_wall_c The user has supplied an invalid wall of faces.
The associated data in topols is the invalid
array of faces.
PK_fxf_fault_range_c The user has supplied an invalid range
definition.
PK_fxf_fault_thl_c The user has supplied invalid tangent hold
line data.
The associated value in topols is the invalid
tangent hold line data.
PK_fxf_fault_cliff_c The user has supplied invalid cliff edge data.
The associated value in topols is the invalid
cliff edge data.
PK_fxf_fault_curved_c A face in a wall is too tightly curved
for the blend to fit.
The associated value in topols is the face in
question.
PK_fxf_fault_small_c A blend range is too small.
The associated value in dists is the suggested
larger range for the blend.
PK_fxf_fault_large_c A blend range is too large.
The associated value in dists is the suggested
smaller range for the blend.
PK_fxf_fault_left_c left_sense is incorrect.
PK_fxf_fault_right_c right_sense is incorrect.
PK_fxf_fault_both_c Both left_sense and right_sense are
incorrect.
PK_fxf_fault_sheet_clash_c The blend sheet(s) intersect one another
and hence could not be attached.
The associated data is a vector in points
and topological tags in topols
These indicate which sheet(s) clashed
and the point at which they clashed.
PK_fxf_fault_wall_clash_c The blend, which has been attached,
has combined two bodies and has
produced a face-face inconsistency elsewhere
in the model.
The associated value in topols is an array
containing the tags of a pair of clashing faces.
PK_fxf_fault_face_face_c The blend,which has been attached,
has caused a face-face inconsistency.
The associated value in topols is an array
containing the tags of a pair of clashing faces.
PK_fxf_fault_self_int_c The blend contains face(s) with self
intersecting geometry.
The associated value in topols is an array
containing the tags of the blend faces with
self-intersecting surfaces.
PK_fxf_fault_rho_value_c The user has supplied invalid rho values
in the rho law function.
PK_fxf_fault_asymmetric_c The user has supplied asymmetric ranges
which are inconsistent with the underlying
geometry.
PK_fxf_fault_chl_c The user has supplied invalid conic hold
line data.
The associated value in topols is the invalid
conic hold line data.
PK_fxf_fault_bad_spine_c The user has supplied an invalid parameter spine.
An associated value may be returned in
points, representing a point where the spine
is unsuitable.
PK_fxf_fault_bad_ribs_c The user has supplied invalid rib controls.