PK_FACE_attach_surfs   


PK_ERROR_code_t    PK_FACE_attach_surfs
(
--- received arguments ---
int                n_faces,     --- number of faces
const PK_FACE_t    faces[],     --- faces to have surfaces attached
const PK_SURF_t    surfs[],     --- surfaces to be attached to faces
const PK_LOGICAL_t senses[]     --- face senses
)


This function attaches surfaces to faces.


Specific Errors:
    PK_ERROR_has_parent          surf is already attached
    PK_ERROR_bad_shared_dep       attempt to illegally share a dependant
                                  of surf
    PK_ERROR_bad_shared_entity    attempt to illegally share surf
    PK_ERROR_geom_not_needed     face already owns geometry
    PK_ERROR_inconsistent_geom    inconsistent geometry
    PK_ERROR_invalid_geometry     geometry does not pass checks


The arrays faces, surfs and senses are all of the length n_faces.
All the faces must belong to the same body.

If `senses[i]' is PK_LOGICAL_true then the face normal will point in the
direction of the surface normal.  If `senses[i]' is PK_LOGICAL_false then the
face normal will point in the opposite direction to the surface normal.

A surface may occur more than once in surfs and if this
is the case then the surface will be shared, providing the sharing is
legal.

PK_FACE_attach_surfs will not copy any surfaces, thus attachments are
further restricted by constraints on the sharing of geometry:

    o No surface may belong to a different body.

    o An orphan surface may be attached to a face as long as it has no
      dependents attached to topology and it has no dependents shared with
      any other orphan entity.

The surface must be capable of passing Parasolid's geometry checking.

The self intersection check is only performed if the appropriate interface
parameter is set.