(int) AddMark(type, arguments ...)
This function will add a ``user mark'' to a display list, which is
rendered as highlighting in the current cell.  These can be used for
illustrative purposes.  The marks are not included in the design
database, but are persistent to the current cell and are remembered as
long as the current cell exists in memory.  Any call can have
associated marks, whether electrical or physical.  Marks are shown in
any window displaying the cell as the top level.  Marks are not shown
in expanded subcells.
The arguments that follow the type argument vary depending upon the
type.  The type argument can be an integer code, or a string whose
first character signifies the type.  The return value, if nonzero, is
a unique mark id, which can be passed to EraseMark to erase the
mark.  A zero return indicates that an error occurred.
The table below describes the marks available.  All coordinates and
dimensions are in microns, in the coordinate system of the current
cell.  Each mark takes an optional attribute argument, which is an
integer whose set bits indicate a display property.  These bits are
- bit 0:
  Draw with a textured (dashed) line if set, otherwise use a solid line.
- bit 1:
  Cause the mark to blink, using the selection colors.
- bit 2:
  Render the mark in an alternate color (bit 1 is ignored).
- Type: 1 or "l"
 Arguments: x1, y1, x2, y2
[, attribute]
 Draw a line segment from x1,y1 to x2,y2.
 
- Type: 2 or "b"
 Arguments: l, b, r, t [, attribute]
 Draw an open box, l,b is lower-left corner and
 r,t is upper-right corner.
 
- Type: 3 or "u"
 Arguments: xl, xr, yb [, yt,
attribute]
 Draw an open triangle.  The two base vertices are xl,  yb and xr,yb.  The third vertex is (  xl+xr)/2,yt.  If yt is not given, it is
  set to make the triangle equilateral.
 
- Type: 4 or "t"
 Arguments: yl, yu, xb [, xt,
attribute]
 Draw an open triangle.  The two lower vertices are xb,  yl and xb,yu.  The third vertex is   xt,(yl+yu)/2.  If xt is not given, it is
  set to make the triangle equilateral.
 
- Type: 5 or "c"
 Arguments: xc, yc, rad [, attribute]
 Draw a circle of radius rad centered at xc,yc.
 
- Type: 6 or "e"
 Arguments: xc, yc, rx, ry
[, attribute]
 Draw an ellipse centered at xc,yc using radii rx and ry.
 
- Type: 7 or "p"
 Arguments: numverts, xy_array [, attribute]
 Draw an open polygon or path.  The number of vertices is given
  first, followed by an array of size 2*numverts or larger
  that contains the vertex coordinates as x-y pairs.  For a polygon,
  The vertex list should be closed, i.e., the first and last vertices
  listed (and counted) should be the same.
 
- Type: 8 or "s"
 Arguments: string, x, y [, width,
    height, xform, attribute]
 Draw a text string.  The string is followed by the coordinates of
  the reference point, which for default justification is the
  lower-left corner of the bounding box.  The width,   height, and xform arguments are analogous to those of the
  Label script function, providing the rendering size and
  justification and transformation information.  Unlike the   Label function, the settings of the Justify and   UseTransform functions are ignored, transformation and
  justification must be set through the xform argument.