RRVIND   

Equivalent PK functions: PK_GEOM_render_line
PK_TOPOL_render_line

RRVIND ( nopts, iopts, optdta, entys, transf, ifail )
=====================================================

  Generate view independent rendering data.

Receives:
 <KI_int_nitems>           *nopts          --- number of options in 'iopts'
  KI_cod_rrop               iopts[nopts]   --- rendering options
 <KI_tag_list_dbl>          optdta[nopts]  --- option data lists
  KI_tag_list_entity       *entys          --- entities to render
 <KI_tag_list_<transform>> *transf         --- entity transforms

Returns:
  KI_cod_error             *ifail          --- failure indicator

Specific errors:
  KI_missing_geom           A topological entity has no associated geometry
  KI_abort_from_go          Rendering aborted by GO
  KI_wrong_transf           Unsuitable transform
  KI_not_same_length        Entity and transform lists are of different lengths
  KI_wrong_entity_in_list   Entity is not a part, face, edge or geometry.
  KI_bad_option_data        Option data incorrect for specified options

Description:
  RRVIND outputs, through the Graphical Output interface (GO), data for a
  picture of the entities which is independent of the viewing angle and
  distance.

  RRVIND can render assemblies, bodies, faces, edges, B-Curves
  and B-Surfaces, foreign geometry and offsets of B-surfaces and foreign
  geometry.

  Transforms may only contain translation and rotation components.  Reflections,
  scales and shears are not allowed.

  The data output is selected by options in 'iopts'. For some options the output
  is further controlled by data in a real list whose tag is passed in the
  corresponding entry in 'optdta'. If no data is required for an option a null
  tag should be passed.

  Options accepted are:-

      Option                   Contents of option data
      ===================================================================
      RROPED: EDge-data        none
      RROPTR: TRansform        none
      RROPSM: SMooth-edges     none
      RROPIE: Internal Edge    none
      RROPPC: B-Curve (Bezier) none
      RROPNC: B-Curve (Nurbs)  none
      RROPPH: Planar-Hatch     (1) Planar hatch spacing in model units
                               (2,3,4) Normal direction of hatch planes
                               (5,6,7) Plane coordinate (omissible)
      RROPRH: Radial-Hatch     (1) Hatch spacing in radians around 'spine'
                               (2) Hatch spacing in model units along 'spine'
                               (3) Hatch spacing in radians about centre
      RROPPA: PAra-Hatch       (1) Hatch spacing along u
                               (2) Hatch spacing along v
      RROPUB: Unfixed-Blends   (1) Rendering style:-
                                   1 => Draw as specified in model
                                   2 => Draw blend boundaries
                                   3 => Draw blend boundaries and rib lines
                               (2) Rib spacing in model units
                                   (only required for style 3)
      RROPCT: Curve Tolerance  (1) Chord tolerance in model units
                               (2) Maximum chord length in model units
                               (3) Angular tolerance in radians
      RROPVP: ViewPort         (1,2,3) Centre of viewport in model coordinates
                               (4,5,6)    1st axis of viewport in model
                                          coordinates
                               (7,8,9)    2nd axis
                               (10,11,12) 3rd axis
                               (13) Length of viewport along 1st axis in model
                                    units
                               (14) Length along 2nd axis
                               (15) Length along 3rd axis


  When rendering B-Curves and surfaces, only the following options
  are relevant:-

      RROPTR, RROPPC, RROPNC, RROPPA and RROPCT.

      The default for these types is to render the boundary, for a surface, and
      the curve for a curve. Therefore, in contrast to the other entity types,
      output will be generated even in the absence of any accompanying options.

  Option RROPED causes output of data for edges in the model.

  Option RROPTR is required if any of the entities is to be rendered in a
  transformed position (e.g. as part of an assembly). If it is not specified,
  the contents of 'transf' are ignored, and entities are rendered in their
  local coordinate system.

  Option RROPSM causes the output data for an edge to specify whether or not
  the edge is 'smooth' (i.e. the faces have the same tangent surface at the
  edge); the calling program may then choose to omit smooth edges from the
  final drawing. If RROPSM is not specified, the smoothness parameter is
  returned "unknown" for all edges.

  Option RROPIE causes the output data for an edge to specify whether or not
  the edge is internal to a surface; i.e. the faces on either side of the edge
  lie on the same surface. This will be the case if the edge is an internal one
  between patches on a B-Surface, or is mergeable. The calling program
  may then choose to omit internal edges from the final drawing.
  If RROPIE is not specified, the internal edge parameter will be "unknown"
  for all edges.

  Option RROPPC causes the data for a B-Curve (type TYCUPA) to be
  output in Bezier form.

  Option RROPNC causes the data for a B-Curve (type TYCUPA) to be
  output in NURBS format.

  The default, if neither RROPPC or RROPNC is selected, is to output
  the data for B-Curves as a poly-line. These options both apply to
  derived B-Curves as well. For example, hatch and boundary lines on
  B-Surfaces.

  Note that at most one of RROPPC and RROPNC may be selected.

  Option RROPPH causes planar hatch lines to be output. If no option data is
  given faces which have a planar hatching attribute set will be hatched as
  specified by that attribute. If a hatch specification is given in the option
  data all faces not otherwise hatched by use of the RROPRH and RROPPA options
  will be hatched according to that specification.

  Option RROPRH causes radial hatch lines to be output for faces with standard
  curved surfaces (cylindrical, conical, spherical, toroidal) or blending
  surfaces. If no option data is given those faces which have a radial hatching
  attribute set will be hatched as specified by that attribute. If a hatching
  specification is given in the option data all faces with standard curved
  surfaces or blending surfaces will be hatched according to that
  specification.

  The values given in the option data are interpreted according to the type
  of surface to which they are applied as follows:

      Cylindrical and Conical surfaces:
         The first value controls the spacing of straight hatch lines running
         along the surface parallel to the axis. Such lines would be generated
         by a plane rotating in steps about the axis by the given angle.
         This angle must be in the range 0 to two pi.

         The second value controls the spacing of circular hatch lines running
         around the surface perpendicular to the axis. Such lines would be
         generated by a plane stepping along the axis by the given distance.

         The third value is not significant.

      Spherical surfaces:
         The hatching of spherical surfaces is related to an axis passing
         through the centre of the surface and parallel to the Z axis.

         The first value controls the spacing of the 'longitudinal' hatch
         lines, as would be generated by a plane rotating by the given angle
         about the axis of the surface. This angle must be in the range 0 to
         two pi.

         The third value controls the spacing of the 'latitudinal' hatch lines,
         as would be generated by a cone (apex at centre of surface, axis
         parallel to surface axis) whose half angle is incremented by the given
         value. This value must be in the range 0 to two pi.

         The second value is not significant.

      Torus:
         The first value controls the spacing of circular hatch lines centered
         on the axis of the torus, as would be generated by a cone (axis
         parallel to torus axis, passing through spine of torus) whose half
         angle is incremented by the given value. This value must be in the
         range 0 to two pi.

         The second and third values control the spacing of circular hatch
         lines centered on the spine of the torus, as would be generated by a
         plane rotating about the axis of the torus. The second value specifies
         a distance along the spine whereas the third value specifies an angle
         about the axis. If both second and third values are given the second
         value is ignored. If a third value is given, it must be in the range
         0 to two pi.

      Edge-Blend surfaces:
         The second value controls the spacing of 'circular' hatch lines running
         around the surface perpendicular to its spine. These are equivalent to
         the circles generated by this value for cylindrical surfaces. Such
         lines would be generated by a plane stepping along the surface spine
         by the given distance.

         The first and third values are not significant.

  Option RROPPA causes parametric hatch lines to be output, which correspond
  to the locus of points of constant parameter value on the surface. The lines
  may be output on faces with any type of underlying surface, though
  longitudinal hatch lines on rolling ball blends ( i.e. lines of constant v
  parameter ) are not supported.

  If no option data is given, only those faces which have a hatching
  attribute set will be hatched as specified by that attribute. If a
  hatching specification is given in the option data, all faces will be
  hatched according to that specification. Two values are required for the
  option data: the first corresponds to the u parameter spacing, and
  the second the spacing in v. Both values must be positive, and should lie
  within the parameter range for the surface, which can be output using ENSUPA.

  In both the RROPRH and RROPPA options the hatch lines generated are controlled
  by two significant values for any given surface. If either value is zero hatch
  lines are not generated for that case. If both values are non-zero the face is
  cross hatched.

  Option RROPUB is required if rendering is to take account of unfixed blending
  surfaces; by default these are ignored. If RROPUB is specified with no option
  data, unfixed blends will be rendered according to the attributes held in the
  model; alternatively, option data can be used to specify how rendering is to
  be done.

  The edges of faces adjacent to the unfixed blend will be clipped to the blend
  boundaries but hatch lines on such faces are not affected.

  This option is ignored for general bodies, however - i.e. unfixed blends on
  general bodies are not rendered.

  Option RROPCT controls the representation of B-curves as polylines. A curved
  edge is approximated by a number of straight lines called chords. The first
  value in the option data is a chord tolerance. This is an upper bound on
  the distance from each chord to the curve it is approximating. The second
  value is a chord limit. This is an upper bound on the length of a chord
  used in the approximation of a curved edge. The third value is an angular
  tolerance. This limits the angular error between a curve and a chord used
  in its approximation. This is an upper bound on the sum of the two angles
  formed between the chord and the curve tangent at each chord end. If this
  option is not specified a default angular tolerance is used.

  If the option RROPVP is supplied then the system will attempt only to render
  those bodies/faces which are inside or partly inside the viewport supplied.

  The viewport is a cuboid region of model space and should be supplied in the
  option data as a real list consisting of a centre, three axes, and lengths in
  model units along these axes. The axes must be orthogonal but need not be
  normalised.

  While all faces that are inside or partly inside the viewport will be
  rendered, no attempt is made to trim the output to the boundaries of the
  viewport, and bodies or faces lying entirely outside, but close to it may be
  rendered.