PK_FACE_transform   


PK_ERROR_code_t         PK_FACE_transform
(
--- received arguments ---
int                     n_faces,       --- number of faces
const PK_FACE_t         faces[],       --- faces
const PK_TRANSF_t       transfs[],     --- face transformations
double                  tolerance,     --- tolerance for replacement geometry
PK_LOGICAL_t            local_check,   --- whether to perform local check

--- returned arguments ---
int              *const n_replaces,    --- number of replaced geometry
PK_GEOM_t       **const replaces,      --- replaced geometry (optional)
PK_LOGICAL_t    **const exact,         --- whether replaced geometry is exact
                                       --- (optional)
PK_local_check_t *const check_result   --- result of local check
)


This function transforms the given faces by the given transformations.


Specific Errors:
    PK_ERROR_tool_faces_many_bodies   faces do not belong to a single body



All geometry of the given faces is replaced by geometry which is
derived from the original geometry by transforming it through the
given transformation.

Replacement surfaces for the faces will satisfy the first possible
of the following list of criteria :

 1 - be of the same class as the original geometry,
 2 - be exactly coincident with the transformation of the original
     geometry,
 3 - not deviate by more than the given tolerance from the
     transformation of the original geometry.

Replacement curves for edges will satisfy the same criteria in order
of precedence unless the curve lies on an edge which is at the junction
of faces, of which at least one of the attached surfaces has been
approximated (criterion 3), in which case, the edge curve will be
re-computed as the intersection of the face surfaces.

The original geometry of topological entities that acquire new
geometry as a result of this operation will be deleted.



Returned Geometry

All of the new surfaces of faces may be returned in replaces. Each
element in the exact array indicate whether the surface is an exact
transformation (criterion 1 or 2), or an approximation (criterion 3).

replaces is optional. If it is set to NULL then only the number of
new surfaces will be returned (in n_replaces).

exact is optional.  It may only be non-NULL if replaces is non_NULL.


Returned Check Status

If local checking is on, consistency checks will be made on newly
created topological and geometrical entities, and the result of
the local check on the body returned via check_result :

 o PK_local_check_ok_c       indicates the body is valid.

 o PK_local_check_no_c       indicates that local checking is
                             switched off.

 o PK_local_check_failed_c   indicates the body is invalid and
                             further modelling operations on it
                             may fail. It is the responsibility
                             of the calling routine to make any
                             necessary reparation.