TWEFAC   

Equivalent PK functions: PK_FACE_transform

TWEFAC ( faces, transf, state, ifail )
======================================

  Transform geometry of faces

Receives:
  KI_tag_list_entity       *faces          --- face(s) to be transformed
  KI_tag_list_transform    *transf         --- list of transforms
                                           --- (move and/or rotate only)

Returns:
  KI_cod_rtlo              *state          --- state of the body
                                           ---   RTLOOK => Valid
                                           ---   RTLONG => Negated
                                           ---   RTLOSX => Self-Intersecting
  KI_cod_error             *ifail          --- failure code

Specific errors:
  KI_cant_do_tweak          Tweak cannot be performed
                            Transform cannot be applied to a rubber face
  KI_unsuitable_entity      Mixed body
  KI_general_body           General bodies not supported
  KI_list_wrong_length      Incorrect number of transforms for faces
  KI_duplicate_list_item    Face appears twice in argument list
  KI_not_in_same_part       All faces are not from the same part
  KI_wrong_transf           Transform is wrong type
  KI_wrong_entity           Faces is not of expected type

Description:
  The surfaces of the faces are modified by the transformations and the
  curves and points of their edges and vertices are recalculated.

  Where edges or faces (sharing a vertex or edge at the boundary of the faces to
  be transformed) have geometry which is inextendable, it may not be possible to
  recalculate vertices or edges. This is because the curve or surface does not
  intersect the transformed surface. With such edges which have a user defined
  tolerance this is likely to occur since SP-curves are inextendable.

  In general this procedure may give rise to self-intersecting object
  boundaries which could cause unpredictable errors later.

  If local checking is on, (see SEINTP and OUINTP) consistency checks will be
  made on newly created topological and geometrical entities, and the state
  of the body returned. A state of RTLOOK indicates the body is valid. A state
  of RTLONG indicates that the result body was originally "inside out" but has
  been negated, and is now "positive" (has positive volume) and valid. A state
  of RTLOSX indicates the body is self-intersecting and further modelling
  operations on it may fail. It is the responsibility of the calling routine to
  make any necessary reparation.

  If the interface parameter for local checking is switched off, the state
  returned will be RTLOOK regardless.

  A self-intersecting body can be returned even if the ifail is zero.

  The arguments to the routine allow the user to perform the
  transformation in a number of ways. These are as follows :-

  one face, one transform
  e.g. f1 -> tr1

  list of faces, one transform
  e.g. (f1 f2 f3) -> tr1

  list of faces, list of transforms, the length of the list
  of transforms being either equal to the length of the list
  of faces, or being a list of length one
  e.g. (f1 f2 f3) -> (tr1 tr2 tr3)
  or   (f1 f2 f3) -> (tr1)

  list of lists of faces, one transform
  e.g. ( (f1 f2 f3) (f4 f5) ) -> tr1

  list of lists of faces, list of transforms, the length of
  the list of transforms being either equal to the length
  of the list of the lists of faces, or being a list of
  length one
  e.g. ( (f1 f2 f3) (f4 f5) ) -> (tr1 tr2)
  or   ( (f1 f2 f3) (f4 f5) ) -> (tr1)

  This is not supported for general bodies.