PK_FACE_taper   


PK_ERROR_code_t           PK_FACE_taper
(
--- received arguments ---
int                       n_faces,        --- number of target faces (>0)
const PK_FACE_t           faces[],        --- faces to be drafted
const PK_ENTITY_t         references[],   --- reference entities
PK_VECTOR1_t              direction,      --- taper direction
double                    angle,          --- taper angle
double                    tolerance,      --- max. tol. for applying surfaces
const PK_FACE_taper_o_t  *options,        --- options

--- returned arguments ---
PK_TOPOL_track_r_t *const tracking,       --- tracking information
PK_TOPOL_local_r_t *const results         --- status information
)


This function applies tapering to the given faces by replacing their
geometry with taper surfaces.

NOTE : This function supersedes PK_FACE_install_surfs_isocline.


Specific Errors:
    PK_ERROR_wrong_entity_in_array  (MILD) given faces are not from same body
    PK_ERROR_general_body           (MILD) general bodies not supported



Introduction
Taper (or isocline) surfaces are specified by a direction and an angle.
For each face in faces a taper surface is defined by a reference
entity. For more details on taper surfaces refer to the
Definitions of Isocline Curves and Surfaces section of the
Functional Description.

The reference entity may be of classes:

   o PK_CLASS_edge: A taper surface is defined through the curve of the
     edge between the vertices of the edge (if it has any).

   o PK_CLASS_face: The taper surface(s) to be used for the face in
     faces is to be that (those) defined for this reference face.

   o PK_CLASS_surf: A taper surface is defined through the curve of
     intersection between the face's surface and the reference surface.
     A reference surface can also be used in association with step reference
     edges to produce Step Tapering.

A face may appear more than once in faces.  The effect of this is that
the face will be split so as to satisfy the separate constraints.

In the case of Step Tapering, no face-splitting occurs; the step reference
edges which lie on the reference surface will produce no step faces,
the other face-related step reference edges will each produce a step face.
The step reference edges are passed in through the controls in the options
structure.
There are two types of step reference edges, the tapered edges and
the normal edges :
   o tapered edges produce step faces tapered at an angle which is greater
     or equal to the specified taper angle (they therefore satisfy the taper
     condition).
   o normal edges produce step faces normal (perpendicular) to the original
     relevant taper face (they do not necessarily satisfy the taper condition).

If a face appears in references then it must also appear in faces.

The function may, at times, have to use approximate geometry.
For such cases, tolerance specifies an upper bound on the distance by which
a point on the actual geometry may deviate from its ideal position.
While the function will usually satisfy this constraint, it is not guaranteed.

User options
The PK_FACE_taper_o_t structure contains user control options. See its
documentation for details.

Tracking
The PK_TOPOL_track_t structure contains topology tracking information on
the operation. In the case of this function, two types of tracking information
records may be returned :
1)  PK_TOPOL_track_create_c, to report newly created tapered faces (or faces
    deriving from them). These new faces will have the relevant initial taper
    face and eventually the relevant reference edge as original topologies.
    In a Step Tapering context, the step faces will also be reported
    in records of this type.
2)  PK_TOPOL_track_derive_c, to report faces deriving from existing ones,
    through any combination of splitting and merging.

Error handling
If this function returns PK_ERROR_no_errors, the result of the operation
will be indicated by the value of the status field of the results
structure. When this value is not PK_local_status_ok_c or
PK_local_status_nocheck_c, it indicates an operation failure and an array
of entities involved in this failure is returned through the field
error_entities of the results structure, when possible.
For more information regarding the failure status code and the error_entities,
refer to the PK documentation of the PK_TOPOL_local_r_t structure.