PK_FACE_change   

PK_ERROR_code_t              PK_FACE_change
(
--- received arguments ---
int                          n_faces,         --- number of faces
const PK_FACE_t              faces[],         --- faces to change
const int                    mapping[],       --- face-operation mapping
int                          n_operations,    --- number of operations
PK_FACE_change_t             operations[],    --- change operations to apply
                                              --- [PF]
double                       tolerance,       --- tolerance
const PK_FACE_change_o_t    *options,         --- options [PF]

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


This function changes the given faces by applying the related given operation
to each of them.
This function combines the features of : PK_FACE_offset_2, PK_FACE_taper,
PK_FACE_transform_2, PK_FACE_replace_surfs_3 and some of PK_FACE_make_blend.

This function offers partial support for facet geometry [PF]


Specific Errors:
    PK_ERROR_wrong_entity_in_array (MILD)    given topols are not from same
                                             body
    PK_ERROR_unsuitable_topology   (MILD)    laminar reference edge(s) for
                                             normal method taper
    PK_ERROR_bad_tolerance         (MILD)    proposed tolerance is too small
    PK_ERROR_bad_angle             (MILD)    inconsistent taper angles
                                             specified for multi angle taper
    PK_ERROR_duplicate_array_item  (MILD)    duplication in faces array
    PK_ERROR_wrong_transf          (MILD)    transform type is not compatible
                                             with transform step face option
    PK_ERROR_not_in_same_partition (MILD)    faces and replacement orphan
                                             geometry not in same partition
    PK_ERROR_laminar_edge          (MILD)    face to be replaced in a patch
                                             operation has a laminar edge and
                                             the face to be replaced isn't part
                                             of patch data associated with the
                                             patch operation
    PK_ERROR_not_on_surface        (MILD)    geometry of given edges is not
                                             coincident with geometry of faces
    PK_ERROR_bad_combination       (MILD)    a mixture of facet and classic
                                             geometry has been supplied
    PK_ERROR_wrong_surface         (MILD)    the surface of a face in a radiate
                                             operation does not have an axis of
                                             rotation
    PK_ERROR_non_manifold          (SERIOUS) 'faces' are not locally manifold
                                             and 'edge_geom_data' has not been
                                             supplied for non-manifold edges
                                             that are to be modified which have
                                             more than 2 surfaces belonging to
                                             their adjacent faces.
    PK_ERROR_evaluator_failed      (SERIOUS) user-supplied evaluator failed, or
                                             failed to evaluate user-supplied
                                             expression
    PK_ERROR_failed_to_bend        (SERIOUS) bend operation failed
    PK_ERROR_failed_to_blend       (SERIOUS) blend operation failed
    PK_ERROR_failed_to_deform      (SERIOUS) deform operation failed
    PK_ERROR_failed_to_offset      (SERIOUS) offset operation failed
    PK_ERROR_failed_to_radiate     (SERIOUS) radiate operation failed
    PK_ERROR_failed_to_replace     (SERIOUS) replace face operation failed
    PK_ERROR_failed_to_taper       (SERIOUS) taper operation failed
    PK_ERROR_failed_to_transform   (SERIOUS) transform operation failed
    PK_ERROR_failed_to_change      (SERIOUS) a fault was generated and the
                                             results have been output to the
                                             Parasolid report.




Introduction
See also Local Ops: Generic Face Editing for more information.

To each face in 'faces' is applied the associated operation from 'operations'.
The face/operation association is realised through the 'mapping' array,
parallel to the 'faces' array. It contains the indexes of the operations to
apply to the faces.
For a face of index i_fa in 'faces', its associated operation is :
        operations[mapping[i_fa]]

An operation is defined by its type, its parameters and its eventual specific
options.
The operation types, their parameters and their specific options are passed
to the function using the 'operations' array of PK_FACE_change_t types.

See Specifying operations for more information.

If the faces belong to a general body, non-manifold edges can be modified,
provided either
*the geometry for them has been explicitly supplied via 'edge_geom_data' or
*there are no more than 2 unique surfaces belonging to their adjacent faces.
The operation cannot cause topology change along non-manifold edges of the
body.

User options
The PK_FACE_change_o_t structure contains user control options. See
its documentation for detail.

Tracking
The PK_TOPOL_track_t structure contains topology tracking information on
the operation. See its documentation for details.

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.