<functions>
#AQL functions
################################################################################
"current_copy_number"
function  : Interface for current status of copy and duplication actions
            for use in variable_rule, which modifies vectors_on_curve. 
            Get number of currently treated copy.
parameter : -
result    : integer

"current_copy_max_number"
function  : Interface for current status of copy and duplication actions
            for use in variable_rule, which modifies vectors_on_curve. 
            Get total number of copies.
parameter : -
result    : integer

"current_copy_length"
function  : Interface for current status of copy and duplication actions
            for use in variable_rule, which modifies vectors_on_curve. 
            Get length on curve for currently treated copy.
parameter : -
result    : real
example   : set parameter 'dy' for vector_on_curve by variable_rule
            rule: a * 5 * sin (10 * current_copy_length()) / current_copy_number()
            will create an oscillation relative to the curve.

"current_copy_angle_abs"
function  : Interface for current status of copy and duplication actions
            for use in variable_rule, which modifies vectors_on_curve. 
            Get absolute angle of curve for currently treated copy.
parameter : -
result    : real

"current_copy_angle_rel"
function  : Interface for current status of copy and duplication actions
            for use in variable_rule, which modifies vectors_on_curve. 
            Get angle relative to start_angle for currently treated copy.
parameter : -
result    : real

################################################################################
<type attributes>
"Bea_object"
.  "color"
               "integer"
               "Color of object (index)"
.  "rgb"
               "group"
               "Color of object (rgb value)"
.  "colorname"
               "string"
               "Name of the object's color"

"D2con_cir_rec"
.  "arc"
               "boolean"
               "'true' in case of arc"
.  "astart"
               "real"
               "Only in case of arc: starting angle of the arc"
.  "axes"
               "boolean"
               "'true' if axes have to be drawn"
.  "centre"
               "coord_type"
               "Centre of circle"
.  "d3_x1"
               "real"
               "Only in case of arc: x-coord of the start point (3D)"
.  "d3_x2"
               "real"
               "only in case of arc: x-coord of the mid point (3D)"
.  "d3_x3"
               "real"
               "Only in case of arc: x-coord of the end point (3D)"
.  "d3_xc"
               "real"
               "x-coordinate of the circle/arc's center (3D)"
.  "d3_y1"
               "real"
               "Only in case of arc: y-coord of the start point (3D)"
.  "d3_y2"
               "real"
               "Only in case of arc: y-coord of the mid point (3D)"
.  "d3_y3"
               "real"
               "Only in case of arc: y-coord of the endpoint (3D)"
.  "d3_yc"
               "real"
               "y-coordinate of the circle/arc's center (3D)"
.  "d3_z1"
               "real"
               "Only in case of arc: z-coord of the first point (3D)"
.  "d3_z2"
               "real"
               "Only in case of arc: z-coord of the mid point (3D)"
.  "d3_z3"
               "real"
               "Only in case of arc: z-coord of the endpoint (3D)"
.  "d3_zc"
               "real"
               "z-coordinate of the circle/arc's center (3D)"
.  "length"
               "real"
               "Only in case of arc: length of the arc"
.  "pt1"
               "coord_type"
               "{x1 y1}; the first  point of the circle/arc"
.  "pt2"
               "coord_type"
               "{x2 y2}; Mid point of the circle/arc"
.  "pt3"
               "coord_type"
               "{x3 y3}; End point of the circle/arc"
.  "r"
               "real"
               "Radius of the circle/arc"
.  "sector"
               "real"
               "Only if an arc: sectorangle of the arc"
.  "segments"
               "group"
               "Coordinates of approximating polygon {{x, y},..}"
.  "segments_inverted"
               "group"
               "Coordinates of inverted polygon  {{x, y},...}"
.  "spec"
               "styletype_rec"
               "As required for creation"
.  "style"
               "integer"
               "1=solid; 2=dashed; 3=dashdotted; 4=dashdotdotted;"
               "5=dotted; 6=broken;"
.  "thickness"
               "real"
               "0.18; 0.25; 0.35; 0.5; 0.7"
               "In Create mode, for compatibility only:"
               "1=thin; 2=middle; 3=thick"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "x1"
               "real"
               "Only in case of arc: x-coordinate of the start point"
.  "x2"
               "real"
               "Only in case of arc: x-coordinate of the mid point"
.  "x3"
               "real"
               "Only in case of arc: x-coordinate of the end point"
.  "xc"
               "real"
               "x-coordinate of the circle/arc's center"
.  "y1"
               "real"
               "Only in case of arc: y-coordinate of the start point"
.  "y2"
               "real"
               "Only in case of arc: y-coordinate of the mid point"
.  "y3"
               "real"
               "Only in case of arc: y-coordinate of the end point"
.  "yc"
               "real"
               "y-coordinate of the circle/arc's center"
.  "z"
               "real"
               "z-coordinate"


"D2con_contour_rec"
.  "list"
               "group"
               "List of all contour elements (cont_elem_type)"
.  "parts"
               "group"
               "List of all contour parts (cont_part_type)"
.  "parts_sorted"
               "group"
               "Contour parts after sorting of contour elements"
.  "selfintersect"
               "boolean"
               "'true' if contour is self-intersecting"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "z"
               "real"
               "z-coordinate"

"D2con_copy_rec"
.  "angle"
               "real"
               "Angle of roation"
.  "cos"
               "real"
               "Cosine of angle of roation"
.  "d3_delta_x"
               "real"
               "x component of translation = d3_x2 - d3_x1 (3D)"
.  "d3_delta_y"
               "real"
               "y component of translation = d3_y2 - d3_y1 (3D)"
.  "d3_delta_z"
               "real"
               "z component of translation = d3_z2 - d3_z1 (3D)"
.  "d3_x1"
               "real"
               "x-coordinate of begin point of translation vector (3D)"
.  "d3_x2"
               "real"
               "x-coordinate of end point of translation vector (3D)"
.  "d3_xm1"
               "real"
               "x-coordinate of begin point of mirrorline (3D)"
.  "d3_xm2"
               "real"
               "x-coordinate of end point of mirrorline and"
               "  center of rotation (3D)"
.  "d3_y1"
               "real"
               "y-coordinate of begin point of translation vector (3D)"
.  "d3_y2"
               "real"
               "y-coordinate of end point of translation vector (3D)"
.  "d3_ym1"
               "real"
               "y-coordinate of begin point of mirrorline (3D)"
.  "d3_ym2"
               "real"
               "y-coordinate of end point of mirrorline and"
               "  center of rotation (3D)"
.  "d3_z1"
               "real"
               "z-coordinate of begin point of translation vector (3D)"
.  "d3_z2"
               "real"
               "z-coordinate of end point of translation vector (3D)"
.  "d3_zm1"
               "real"
               "z-coordinate of begin point of mirrorline (3D)"
.  "d3_zm2"
               "real"
               "z-coordinate of endpoint of mirrorline and"
               "  center of rotation (3D)"
.  "delta_x"
               "real"
               "x-component of translation = x2-x1"
.  "delta_y"
               "real"
               "y-component of translation = y2-y1"
.  "mirror_l"
               "boolean"
               "'true' if mirror around a line"
.  "mirror_p"
               "boolean"
               "'true' if mirror around a point"
.  "r1"
               "world_rec"
               "Start coordinate system"
.  "r2"
               "world_rec"
               "End coordinate system"
.  "rotation"
               "boolean"
               "'true' if with rotation"
.  "sin"
               "real"
               "Sine of roation angle "
.  "translation"
               "boolean"
               "'true' if with translation"
.  "x1"
               "real"
               "x-coordinate of begin point of translation vector"
.  "x2"
               "real"
               "x-coordinate of end point of translation vector"
.  "xm1"
               "real"
               "x-coordinate of begin point of mirrorline"
.  "xm2"
               "real"
               "x-coordinate of end point of mirrorline and"
               "  center of rotation"
.  "y1"
               "real"
               "In case of translation: y-coordinate of begin point of"
               "translation vector"
.  "y2"
               "real"
               "In case of translation: y-coordinate of end point of"
               "translation vector"
.  "ym1"
               "real"
               "y-coordinate of begin point of mirrorline"
.  "ym2"
               "real"
               "y-coordinate of end point of mirrorline and"
               "  center of rotation"

"D2con_doubleboolean"

"D2con_ellips_rec"
.  "angle"
               "real"
               "Angle of the first axis of the ellips/arc"
.  "arc"
               "boolean"
               "'true' in case of arc"
.  "astart"
               "real"
               "Start angle of the arc"
.  "ax1"
               "real"
               "Length of the first axis"
.  "ax2"
               "real"
               "Length of the second axis"
.  "centre"
               "group"
               "Center of the ellips/arc  {xc yc}"
.  "d3_x1"
               "real"
               "Only in case of arc: x-coord of the start point (3D)"
.  "d3_x3"
               "real"
               "Only in case of arc: x-coord of the end point (3D)"
.  "d3_xc"
               "real"
               "x-coordinate of the ellips/arc's center (3D)"
.  "d3_y1"
               "real"
               "Only in case of arc: y-coord of the start point (3D)"
.  "d3_y3"
               "real"
               "Only in case of arc: y-coord of the end point (3D)"
.  "d3_yc"
               "real"
               "y-coordinate of the ellips/arc's center (3D)"
.  "d3_z1"
               "real"
               "Only in case of arc: z-coord of the start point (3D)"
.  "d3_z3"
               "real"
               "Only in case of arc: z-coord of the end point (3D)"
.  "d3_zc"
               "real"
               "z-coordinate of the ellips/arc's center (3D)"
.  "length"
               "real"
               "Length of the ellipse/arc"
.  "pt1"
               "coord_type"
               "{x1 y1}; Start point of the arc"
.  "pt3"
               "coord_type"
               "{x3 y3}; End point of the arc"
.  "sector"
               "real"
               "Only in case of arc: Sector angle"
.  "segments"
               "group"
               "Coordinates of approximating polygon {{x, y},..}"
.  "segments_inverted"
               "group"
               "Coordinates of inverted polygon  {{x, y},...}"
.  "spec"
               "styletype_rec"
               "As required for create"
.  "style"
               "integer"
               "1=solid; 2=dashed; 3=dashdotted; 4=dashdotdotted;"
               "5=dotted; 6=broken;"
.  "thickness"
               "real"
               "0.18; 0.25; 0.35; 0.5; 0.7"
               "In Create mode, for compatibility only:"
               "1=thin; 2=middle; 3=thick"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "x1"
               "real"
               "Only in case of arc: x-coord of the start point"
.  "x3"
               "real"
               "Only in case of arc: x-coord of the end point"
.  "xc"
               "real"
               "x-coordinate of the ellips/arc's center"
.  "y1"
               "real"
               "Only in case of arc: y-coord of the start point"
.  "y3"
               "real"
               "Only in case of arc: y-coord of the end point"
.  "yc"
               "real"
               "the y of the center of the ellips/arc"
.  "z"
               "real"
               "z-coordinate"

"D2con_line_rec"
.  "angle"
               "real"
               "Angle of the line"
.  "ax"
               "real"
               "Equation: ax * x + by * y + ct  = 0 (-1.0 <= ax <= 1.0)"
.  "by"
               "real"
               "Equation: ax * x + by * y + ct  = 0 (-1.0 <= by <= 1.0)"
.  "constr_type"
               "string"
               ""not_limited", "is_limited", "is_midline""
.  "ct"
               "real"
               "Equation : ax * x + by * y + ct  = 0"
.  "d3_x1"
               "real"
               "x-coordinate of the first  endpoint of the line (3D)"
.  "d3_x2"
               "real"
               "x-coordinate of the second endpoint of the line (3D)"
.  "d3_y1"
               "real"
               "y-coordinate of the first  endpoint of the line (3D)"
.  "d3_y2"
               "real"
               "y-coordinate of the second endpoint of the line (3D)"
.  "d3_z1"
               "real"
               "z-coordinate of the first  endpoint of the line (3D)"
.  "d3_z2"
               "real"
               "z-coordinate of the second endpoint of the line (3D)"
.  "length"
               "real"
               "distance between (x1,y1) and (x2,y2)"
.  "pt1"
               "coord_type"
               "First  endpoint of the line"
.  "pt2"
               "coord_type"
               "Second endpoint of the line"
.  "spec"
               "styletype_rec"
               "As required for creation"
.  "style"
               "integer"
               "1=solid; 2=dashed; 3=dashdotted; 4=dashdotdotted;"
               "5=dotted; 6=broken"
.  "thickness"
               "real"
               "0.18; 0.25; 0.35; 0.5; 0.7"
               "In Create mode, for compatibility only:"
               "1=thin; 2=middle; 3=thick"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "x1"
               "real"
               "x-coordinate of the first  endpoint"
.  "x1m"
               "real"
               "x-coordinate of the first  (graphical) endpoint"
.  "x2"
               "real"
               "x-coordinate of the second endpoint"
.  "x2m"
               "real"
               "x-coordinate of the second (graphical) endpoint"
.  "y1"
               "real"
               "y-coordinate of the first  endpoint"
.  "y1m"
               "real"
               "y-coordinate of the first  (graphical) endpoint"
.  "y2"
               "real"
               "y-coordinate of the second endpoint"
.  "y2m"
               "real"
               "y-coordinate of the second (graphical) endpoint"
.  "z"
               "real"
               "z-coordinate"

"D2con_massprops_rec"
.  "data"
               "group"
               "Measure properties"

"D2con_plane_rec"
.  "alfa"
               "real"
               "Angle of hatch lines (in radians)"
.  "dist"
               "real"
               "Distance between hatch lines"
.  "fill_color"
               "integer"
               "Fill color of the plane (index)"
.  "fill_rgb"
               "color_type"
               "Fill color of the plane (rgb-value)"
.  "hatch"
               "string"
               ""hatch_no", "hatch_single" or "hatch_cross""
.  "hidden"
               "boolean"
               "'true' if plane will hide elements with a"
               "smaller z-coordinate"
.  "list"
               "group"
               "List of outer contour elements (cont_elem_type)."
               "Outer contours of all first level plane parts, not"
               "of holes"
.  "oneislandparts"
               "group"
               "All plane parts with at most one level of holes."
               "(If there are islands in a hole these second level"
               "island plane parts are recursively restructured into"
               "separate ones and added to the group)"
.  "parts"
               "group"
               "List of all first level plane parts (plane_part_type)"
.  "selfintersect"
               "boolean"
               "'true' if plane is self-intersecting"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "z"
               "real"
               "z-coordinate"

"D2con_point_rec"
.  "d3_x"
               "real"
               "x-coordinate (3D)"
.  "d3_y"
               "real"
               "y-coordinate (3D)"
.  "d3_z"
               "real"
               "z-coordinate (3D)"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "x"
               "real"
               "x-coordinate"
.  "y"
               "real"
               "y-coordinate"

"D2con_sketch_props_rec"
.  "data"
               "group"
               "Sketcher properties"

"D2con_spline_rec"
.  "d"
               "real"
               "Degree of the B-spline"
.  "form"
               "string"
               ""periodic" or "non_periodic""
.  "interpol"
               "boolean"
               "'true' if spline is interpolating"
.  "list"
               "group"
               "List of spline control points {x,y,z,w}"
.  "nodes"
               "group"
               "List of spline knots {node,mult}"
.  "spec"
               "styletype_rec"
               "As required for creation"
.  "style"
               "integer"
               "1=solid; 2=dashed; 3=dashdotted; 4=dashdotdotted;"
               "5=dotted; 6=broken"
.  "thickness"
               "real"
               "0.18; 0.25; 0.35; 0.5; 0.7"
               "In Create mode, for compatibility only:"
               "1=thin; 2=middle; 3=thick"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "z"
               "real"
               "z-coordinate"

"D2con_var_rec"
.  "d3_x"
               "real"
               "x-coordinate of the start position (3D)"
.  "d3_y"
               "real"
               "y-coordinate of the start position (3D)"
.  "d3_z"
               "real"
               "z-coordinate of the start position (3D)"
.  "th"
               "real"
               "Height of the text"
.  "value"
               "real"
               "Value of variable"
.  "var_name"
               "string"
               "Name of variable"
.  "world"
               "world_rec"
               "The world (=coordinate system) this object belongs to"
.  "x"
               "real"
               "x-coordinate of the start position"
.  "y"
               "real"
               "y-coordinate of the start position"

"D2con_vp_options_rec"
.  "data"
               "group"
               "Viewport options"

"D2con_world_rec"
.  "a"
               "real"
               "Angle of rotation"
.  "cos"
               "real"
               "Cosine of rotation angle"
.  "d3_x"
               "real"
               "x-coordinate of world's origin"
               "(absolute coordinate) (3D)"
.  "d3_xp"
               "real"
               "x-coordinate of world's origin"
               "(position for drawing) (3D)"
.  "d3_y"
               "real"
               "y-coordinate of world's origin"
               "(absolute coordinate) (3D)"
.  "d3_yp"
               "real"
               "y-coordinate of world's origin"
               "(position for drawing) (3D)"
.  "d3_z"
               "real"
               "z-coordinate of world's origin"
               "(absolute coordinate) (3D)"
.  "d3_zp"
               "real"
               "z-coordinate of world's origin"
               "(position for drawing) (3D)"
.  "rotated"
               "boolean"
               "'true' if the axes are rotated"
.  "scale"
               "real"
               "Scale used for the output of the drawing"
.  "sin"
               "real"
               "Sine of rotation angle"
.  "x"
               "real"
               "x-coordinate of world's origin (absolute coordinate)"
.  "xp"
               "real"
               "x-coordinate of world's origin (position for drawing)"
.  "y"
               "real"
               "y-coordinate of world's origin (absolute coordinate)"
.  "yp"
               "real"
               "y-coordinate of world's origin (position for drawing)"
               " "
               "-------------------------------------------------------------------"
               "                                                                   "
               " The system uses the item 'world' (=coordinate system) for several "
               " purposes:                                                         "
               "   1. A world used for viewports (world_coord_type,Basic_view_rec) "
               "   2. A world used in the 2D-Application (e.g. world_first() )     "
               "                                                                   "
               " Viewport-World:                                                   "
               "   This is a standard world for a viewport without zoom/pan        "
               "                                                                   "
               " 2D-World:                                                         "
               "   This is a world inside the 2D-Application which has the         "
               "   following informations resp. task:                              "
               "      Model-Input:  Input of parameters with a transform of their  "
               "                    values by                                      "
               "                       - rotation                                  "
               "                       - axis scaling (scale_x, scale_y;           "
               "                                       stretching/shrinking)       "
               "                    into model/internal representation.            "
               "      Model-Output: Output to screen, plot, ... with a transform of"
               "                    model/internal model values by                 "
               "                       - scaling                                   "
               "                       - translation (world_samex,world_samey)     "
               "                    into viewport/drawing representation.          "
               " Sometimes the several parts of this system use different items    "
               " for the same thing.                                               "
               " It depends of the point of view: Viewport or 2D-Application.      "
               "                                                                   "
               "                                 !  Viewport            D2         "
               "   ------------------------------+-------------------------------  "
               "                                 !                                 "
               "   Viewport representation       !  viewport           screen      "
               "             !                   !                                 "
               "             !                   !                                 "
               "   Standard viewport  /          !  world/1                        "
               "     Drawing representation      !                     island      "
               "             !                   !                                 "
               "             !                   !                                 "
               "   Model/internal representation !                     world/2     "
               "                                 !                                 "
               "                                                                   "
               "                                                                   "
               "   AQL functions                 !  meaning                        "
               "   ------------------------------+-------------------------------  "
               "   world_to_viewport()           !  world/1 (island)               "
               "                                 !       --->  viewport (screen)   "
               "                                 !                                 "
               "   viewport_to_world()           !  viewport (screen)              "
               "                                 !       --->  world/1 (island)    "
               "                                 !                                 "
               "   world_to_screen()             !  world/2                        "
               "     with world/2 as parameter   !       --->  screen (viewport)   "
               "                                 !                                 "
               "   world_to_screen()             !  island (world/1)               "
               "     with view as parameter only !       --->  screen (viewport)   "
               "                                 !                                 "
               "   world_from_screen()           !  screen (viewport)              "
               "     with world/2 as parameter   !       --->  world/2             "
               "                                 !                                 "
               "   world_from_screen()           !  screen (viewport)              "
               "     with view as parameter only !       --->  island (world/1)    "
               "                                 !                                 "
               "   trans_to_world()              !  world/2 ---> world/2           "
               "   trans_from_world()            !  world/2 ---> world/2           "
               "   trans_world_to_world()        !  world/2 ---> world/2           "
               "                                 !                                 "
               "                                                                   "
               "                                                                   "
               " Some more informations about 'world/2' of 2D-application:         "
               "   All the actions listed below like 'world_first()' use this      "
               "   type of world.                                                  "
               "   This world has                                                  "
               "       - a position relative to the absolute (0,0,0)-point         "
               "       - a rotation angle                                          "
               "       - a separate scale for every axis (stretching/shrinking)    "
               "       - a scaling factor                                          "
               "       - a second position to simulate a translated world          "
               "         (world_samex, world_samey)                                "
               "                                                                   "
               " See also world_rec as value of world/2-object.                    "
               "                                                                   "
               " Note: island coordinates = coordinates without any transformation "
               "-------------------------------------------------------------------"

############################################

"box_type"
.  "xmax"
               "real"
               "max x-coordinate"
               "(for line_rec, cir_rec, ellips_rec, contour_rec,"
               "plane_rec, var_rec, text_rec)"
.  "xmin"
               "real"
               "min x-coordinate"
               "(for line_rec, cir_rec, ellips_rec, contour_rec,"
               "plane_rec, var_rec, text_rec)"
.  "ymax"
               "real"
               "max y-coordinate"
               "(for line_rec, cir_rec, ellips_rec, contour_rec,"
               "plane_rec, var_rec, text_rec)"
.  "ymin"
               "real"
               "min y-coordinate"
               "(for line_rec, cir_rec, ellips_rec, contour_rec,"
               "plane_rec,var_rec, text_rec)"

"cont_elem_type"
.  "etype"
               "integer"
               "type of contour element (1=line, 2=circle, 3=ellipse)"
.  "order"
               "boolean"
               "'true' = pt1 is the first, pt2 (line) or pt3 (circle,"
               "         ellipse) the second point"
               "'false'= pt2 or pt3 is the first, pt1 the second point"
.  "ref1"
               "object"
               "Underlying original object."
               "Original object of PREVIOUS contour element if it is"
               "rounding arc in 'contour_rounded' or 'contour_parallel'"
.  "ref2"
               "object"
               "Underlying original object of NEXT contour element."
               "Only set if it is rounding arc in 'contour_rounded'"
               "or 'contour_parallel'."
               "For compatibility only !!!"
.  "segmenten"
               "group"
               "Segments if contour element is a circle or ellips"

"cont_part_type"
.  "closed"
               "boolean"
               "'true'  = closed contour"
               "'false' = open contour"
.  "list"
               "group"
               "List of contour elements (cont_elem_type)"
.  "selfintersect"
               "boolean"
               "'true' if 'cont_part_type' is self-intersecting"

"coord_type"
.  "x"
               "real"
               "x-coordinate"
.  "y"
               "real"
               "y-coordinate"
.  "z"
               "real"
               "z-coordinate"

"plane_part_type"
.  "inner"
               "group"
               "Inner plane parts (plane_part_type)"
.  "list"
               "group"
               "Outer contour elements (cont_elem_type)"
.  "list_all"
               "group"
               "List of all elements"
               "(outer contour elements and inner plane parts)"
.  "orientation"
               "string"
               ""left" or "right""
.  "selfintersect"
               "boolean"
               "'true' if 'plane_part_type' is self-intersecting"

################################################################################
<type input>

"cir_rec"
 { <world>, 
     <p1a>, <f0>, <r1> [, <r2>, <r3> ]
  or <p1a>, <f0>, <p2a>, <p3>
  or <p1b>, <f0>, <p2b>, <p3>, <str1>
  or <p1b>, <f0>, <p2c>, <p3>, <str1>, <str2>
 }
 >>> angle values in degrees
 <p1>            coord           a) center point
                                 b) start point
 <p2>            coord           a) start point,
                                 b) start direction, tangential start
                                    direction in start point (here: p1b)
                                 c) arc point
 <p3>            coord           end point
 <f0>            real            start angle
 <r1>            real            radius of the arc
 <r2>            real            angle of start point
 <r3>            real            sector angle
 <str1>          string          "is_circle" | "is_arc"
 <str2>          string          "over_p2" | "not_over_p2"

"contour_rec"
 { <world>, <box>, <contourpart_rec> [, <contourpart_rec>, ...] }
 <world>:        world_rec
 <box>:
   <min>         coord_rec
   <max>         coord_rec
 <contourpart_rec>:   { <box>, <is_closed>, <contourelement_rec>
                                         [, <contourelement_rec>, ...] }
                 <box>:
                   <min>         coord_rec
                   <max>         coord_rec
                 <is_closed>:    boolean
 <contourelement_rec>:   { <sorted>, <el>, <orig> }
                 <sorted>:       integer
                                 0=not_sorted | 1=first_normal 
                               | 2=first_reverse | 3=further_forward
                               | 4=further_reverse
                 <el>:           object      effect object
                 <orig>:         object      original object
 
"copy_rec"
 { <world, 
      <p1>, <p2>, <w2>                          vector1
    | <p1>, <p2>, <w2>, <mirx>, <miry>          vector2
    | <p1>, <p2>, <w2>, <rot>                   vector3
    | <p1>, <p2>, <w2>, <rot>, <l_p1>, <l_p2>   vector4
    | <p1>, <w2>, <rot>                         vector5
    | <p1>, <w2>, <rot>, <len>                  vector6
 }
 <world>          bea_object
 <p1>             coord           vector start position
 <p2>             coord           vector end position
 <l_p1>           coord           mirrorline start position
 <l_p2>           coord           mirrorline end position
 <w2>             bea_object      world of second position
                                  ( if no second position is necessary or
                                    vector is in one world  w2 = world )
 <mirx>           boolean         reflection at x-axis
 <miry>           boolean         reflection at y-axis
 <rot>            real            angle of rotation vector in degrees

"doubleboolean"
 { <boolean>, <boolean> }

"doubleint"
 { <integer>, <integer> }

"ellips_rec"
 Set the ellipse based on the center point, the angle and the length
 of the first axis and the length of the perpendicular second axis
 { world, 
   c, psi, maj_r, min_r          ellips
   [, s_angle, a_angle ]         elliptic arc
 }
 >>> angle values in degrees
 world           world_rec
 c               coord_rec       center point
 psi             real            angle of first axis
 maj_r           real            length of first axis
 min_r           real            length of second axis
 s_angle         real            angle of the start point
 a_angle         real            sector angle

"endcond_rec"
 { <cond>, <angle> }
   cond:  integer
          0 = none,    1 = periodic,   2 = explicit,  3 = linear,
          4 = bessel,  5 = quadratic,  6 = natural
          ('none', 'periodic') ... for internal use only !!!
   angle: coord
          only cond = 'explicit' has a meaning (tangent angle
          between start coordinates and explicit coordinates)

"gi_el_id_rec"
 { <integer:id_1>, ..., <integer:id_7> }
 Used to identify the position of a graphical instance
 -1 = not used
 e.g.: {3,1,-1,-1,-1,-1,-1}
 instance is the 4th (3+1) element in the first direction and
 the 2nd (1+1) element in the second direction

"globals_rec"
 For internal use only !!!

"graphinst_rec"
 { [world,] n_x, mat_x, n_y, mat_y [, n_xy, mat_xy, ...], elements.copy  } 
 n_x, n_y, n_xy  short
 mat_x,
 mat_y, 
 mat_xy          matrix:    { c.a00, c.a01, c.a02, c.a03,
                              c.a10, c.a11, c.a12, c.a13,
                              c.a20, c.a21, c.a22, c.a23,
                              c.a30, c.a31, c.a32, c.a33,
                            }
                            c.a<xy>       real
 elements.copy   group_rec

"id_rec"
 { <ref> <ref_original> }
 <ref>:          object    Object representing the geometry of the contour    
                           element (mostly an effect object of an action
                           creating a contour, sometimes identical to
                           <ref_original>).
 <ref_original>: object    Underlying original object of contour element      
                           (corresponds to 'ref1' of cont_elem_type).
 While creating a selector parameter of type 'id_rec' for an action like
 'contour_parallel' the user perhaps knows only one of the two references
 <ref> and <ref_original>. In this case he should fill the known object both
 in <ref> and <ref_original> in order to satisfy the syntax of 'id_rec'.
 The algorithm will find the desired contourelement.

"line_rec"
 { <world_rec:world>, <coord_rec:startc>, <coord_rec:endc> }

"node_vec"
 Spline-Node-Vector
 { {<real:node>,<real:node>, ... }

"massprops_rec"
 { { [<is_set>,] <props> [, <sign>] }, ... }
 <is_set>        boolean
 <props>           "circumference" | "area" | "volume" | "mass"
                 | "momentofinertia_x" | "momentofinertia_y"
                 | "polarmomentofinertia" | "massmomentofinertia"
                 | "momentofresistance_x" | "momentofresistance_y"
                 | "staticalmoment_x" | "staticalmoment_y"
                 | "centrifugalmoment" | "radiiofgiration"
 <sign>          string          name (for formula sign)

"plane_rec"
 { <world>, <box>, <dist>, <alfa>, <planepart_rec> [, <planepart_rec>, ...] }
 <world>:        world_rec
 <box>:
   <min>         coord_rec
   <max>         coord_rec
 <dist>:         real             distance of hatch lines
 <alfa>:         real             angle of hatch lines (in degrees)
 <planepart_rec>: { <box>, <orientation>, <outer_contour> [, <inner_contour] }
                 <box>:
                   <min>          coord_rec
                   <max>          coord_rec
                 <orientation>:   integer
                                  0 = orient_no | 1 = left | 2 = right
                 <outer_contour>: { <contourelement_rec>
                                    [, <contourelement_rec> ...] }
                 <inner_contour>: <planetype_rec> [, <planetype_rec>, ...]

"plot_props_rec"
 { <boolean:use_cgm_font>, <boolean:use_postscript_font>,
   <boolean:use_faster_hatch>, <boolean:cgm_black_white>,
   <boolean:postscript_logo>, <boolean:zoom_linewidth_dashes>,
   <boolean:fill_planes_on_bw>,
   <integer:pff_mode:0=options,1=multiple,2=color_index>,
   <real:nominal_linewidth> }

"point_rec"
 { <world>, <coord> }

"sketch_props_rec"
 { <boolean: scan_user>, <boolean: scan_graphinst>, <boolean: select_all>,
   <integer: max_objects> }

"spline_rec"
{ <world>, {<integer:number_controls>, {<real:x>,<real:y>,<real:z>,
            <real:weight>}, ...},<node vector>,
  <integer:degree>,<integer:leftEndCondition>,<integer:rightEndCondition>,
  <boolean:interpolating>,<boolean:autoParametrizing>,<integer:nodetype>}

 <number_controls>: number of control points
 <node vector>: {<integer:number_node>,{<real:node>,<real:mult>}, ...}
                for internal use only !!!
 <rightEndCondition>:
 <leftEndCondition>:   0 = periodic, 1 = explicit,  2 = linear,
                       3 = bessel,   4 = quadratic, 5 = natural
 <autoParametrizing>: for internal use only !!!
 <nodetype> : 0 = eqdistance, 1 = chordal, 2 = centripetal,
              3 = foley,      4 = free

 For non periodic spline: 
 Value 'mult' of first and last node must be > 1 (degree + 1).

 Example for periodic spline (degree = 2):
 { W, { 6, {  0, 50, 0, 1 }, { 10, 20, 0, 1 }, { 40, 10, 0, 1 },
           { 50, 50, 0, 1 }, { 70, 20, 0, 1 }, { 20, 60, 0, 1 } },
      { 6, { 6, 1 }, { 1, 1 }, { 2, 1 }, { 3, 1 }, { 4, 1 }, { 5, 1 } },
   2, 0, 0, false, false, 0 }

 Example for non periodic spline (degree = 2):
 { W, { 6, {  0, 50, 0, 1 }, { 10, 20, 0, 1 }, { 40, 10, 0, 1 },
           { 50, 50, 0, 1 }, { 70, 20, 0, 1 }, { 20, 60, 0, 1 } },
      { 5, { 0, 3 }, { 1, 1 }, { 2, 1 }, { 3, 1 }, { 4, 3 } },
   2, 1, 1, false, false, 0 }

"threeboolean"
 { <integer: casevar>, <boolean: bool1>, <boolean: bool2>, <boolean: bool3> }

"transform_rec"
 { <t_obj>, <type>, <matrix>, <inv matrix> }
   bea_object t_obj: own transformation object
   integer type    : type of matrix ... 0 ... identity matrix
                                        1 ...      2D  matrix
                                        2 ... full 3D  matrix
   matrix    : matrix of transformation
        { <real a00>, <real a01>, <real a02>, ..., <real a32>, <real a33> }
   inv matrix: inverse matrix of transformation
        { <real i00>, <real i01>, <real i02>, ..., <real i32>, <real i33> }
 }

"var_rec"
 { <world>, <real: textheigth>, <string: mean>, <real: val>,
   <coord: pos>, <string: nam> }
 mean:           "r" | "l" | "a" | "s"
                 meaning: r = real; l = length; a = angle; s = string

"world_rec"
 { [ <world_rec:world> [, <coord: pos> [, <real: angle> [, <real: scale> ]]]] }
 pos:            default: (0.0, 0.0, 0.0)
 angle:          rotation angle in degrees; default: 0.0
 scale:          default: 1.0

 world parameter must be given if world created as effect by AQL

""

################################################################################
<actions>

################################################################################
<events>

"ske_keep_action"
function   : Keep action (see popup menu of the right mouse button)

"ske_edit_action"
function   : Call action to create an object and switches to EDIT mode

"ske_reset"
function   : Reset the sketcher's set of selectable objects
