PK_FACE_offset_2   

PK_ERROR_code_t           PK_FACE_offset_2
(
--- received arguments ---
int                       n_faces,         --- number of faces > 0
const PK_FACE_t           faces[],         --- faces to offset
const double              offsets[],       --- offset for each face
double                    tolerance,       --- tolerance
const PK_FACE_offset_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 offsets faces of a solid or sheet body.

NOTE : This function supersedes PK_FACE_offset.

This function offers partial support for facet geometry [PF]


Specific Errors:
    PK_ERROR_cant_offset           (SERIOUS) offsetting failure
    PK_ERROR_non_manifold          (SERIOUS) 'faces' are not locally manifold
    PK_ERROR_bad_tolerance         (MILD)    proposed edge tolerance is too
                                             small
    PK_ERROR_unsuitable_entity     (MILD)    body is not a sheet or solid body
    PK_ERROR_wrong_entity_in_array (MILD)    given faces are not from same body
    PK_ERROR_not_implemented       (MILD)    a supplied enum value in the
                                             options structure is not
                                             implemented for this function
    PK_ERROR_distance_too_large    (MILD)    One or more offsets is
                                             larger than the size box.




Introduction
Each face in 'faces' is offset by the corresponding distance in 'offsets'.
A positive offset indicates an offset outwards (i.e. in the direction of the
face normal) and a negative offset an offset inwards.

Under some circumstances the function may need to replace exact geometry by
tolerant geometry. For instance, in the case of a sheet body some edge
geometry at the boundary may have to be approximated by SP curves in order
to generate a boundary curve on the offset sheet. In all such situations the
new geometry will have a tolerance less than or equal to the tolerance
supplied through the 'tolerance' argument.

The faces can belong to a general body, so long as they are locally manifold.
The offset cannot cause the faces to clash with non-manifold regions of the
body.

See Offsetting for more information.

User options
The PK_FACE_offset_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. This tracking information only includes information
for faces, and does not include any information about new edges. In
the case of this function, only tracking information records of the
type PK_TOPOL_track_derive_c may be returned, if faces have been split
or merged during the operation.

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.