================================================================================

			 *****************************
			 *       Help System         *
			 *     HP DesignCenter       *
			 *  Mechanical Engineering   *
			 *         Series 10         *
			 *****************************

================================================================================
This file contains help screens for all HP-ME commands and functions,  as  well
as for some macros and miscellaneous topics.  This is the file used by the HELP
function.  As such, it should have the name 'help'.

You  can introduce new HELP screens by editing this file, following the pattern
here.   A caret (^)  marks the beginning of a new screen.   The  word  directly
following  the  caret is the primary keyword.   This should be unique (keep the
file in alphabetical order and this will be easy).   What follows are secondary
keywords.   If  you ask for HELP with the primary keyword, you get that screen.
Within HELP, using the N (Next) command shows you other screens that have  that
keyword as one of their secondaries.

A  screen is usually delimited by a line of '=', but this is only a convention.
A screen can be arbitrarily short or long, as the HELP user can easily navigate
within the file with the wheel or the cursor motion keys.

The conventions for the syntax diagrams are:

 (OPTION) -- Options are given in parentheses and capitalized.   These  are
    words that must be entered exactly as given.

 |parameter|  --  Parameters  are  written  between  bars,  and not usually
    capitalized.   These are words that describe the input  required,  e.g.
    |number| or |filename|.   They may also refer to other syntax diagrams,
    as with |select|.

^OLD
All commands and functions marked with (OLD) are only for compatibility reasons
in older revisions and will be removed in future  releases.   Don't  use  these
commands or functions for new macros.
================================================================================
^ADD_CURRENT_INFO CURRENT_INFO SCREEN INFO CURRENT
ADD_CURRENT_INFO command

			    ,------------------,
			    v                  |
---->(ADD_CURRENT_INFO)---->+---->(SCREEN)---->+---->
			    |                  |
			    '---->|string|---->'

ADD_CURRENT_INFO adds the given text to the current  info.   The  text  can  be
entered as a string, or, using the SCREEN option, with the built-in editor (see
EDITOR).  The info is accumulated until you leave the command.

The current info is the info added to every new element.
================================================================================
^ADD_ELEM_INFO SCREEN INFO
ADD_ELEM_INFO command

			 ,----------------------------------------,
			 | ,------------------,     ,-----------, |
			 v v                  |     v           | |
---->(ADD_ELEM_INFO)---->+-+---->(SCREEN)---->+---->+->|select|-+-+->
			   |                  |
			   '---->|string|---->'

ADD_ELEM_INFO  adds  the given text to the info of the selected elements.   The
text can be entered as a string, or, using the SCREEN option, with the built-in
editor (see EDITOR).   The info is accumulated until you select elements.   The
accumulated  info  is  added to each element selected.   If you then enter more
info, the old info is discarded.
================================================================================
^APT NC
Apt macro

-->(Apt)-->|filename|--->

Apt  generates a file in the APT input language (used by NC programs).   If any
geometry in the active part has been labeled with the LABEL command,  the  file
describes that geometry; otherwise, it describes all the geometry in the active
part.  See also COMPACT, NCGL.
================================================================================
^ARC THREE_PTS CEN_BEG_END CEN_RAD_ANG PER_RAD_ANG PARALLEL SMOOTH DIAMETER
ARC command

	 ,----------------------------------------------------------------,
	 |                       ,----------------------------------,     |
	 v                       v                                  |     |
-->(ARC)-+--+->(THREE_PTS)-----+-+->|end pnt1|->|end pnt2|->|arc pnt|-----+-->
	 |  |                  ^                                          |
	 |  '------------------'                                          |
	 |                                                                |
	 |                  ,------------------<-------------------,      |
	 |                  v                                      |      |
	 +------(DIAMETER)--+-->--|beg pnt|------|end pnt|---------+------+
	 |                                                                |
	 |                ,---------------------------------,             |
	 |                v                                 |             |
	 +->(CEN_BEG_END)-+->|center|->|beg pnt|->|end pnt|-+------------>+
	 |                                                                |
	 |                ,-------------------------------------------,   |
	 |                v                                           |   |
	 +->(CEN_RAD_ANG)-+-|center|->|rad|->-|b-ang/pnt|-|e-ang/pnt|-+-->+
	 |                            |pnt|                               |
	 |                                                                |
	 |                ,--------------------------------------------,  |
	 |                v                                            |  |
	 +->(PER_RAD_ANG)-+->|arc pnt|->|rad|->|b-ang/pnt|->|opp-ang|--+->+
	 |                              |pnt|                             |
	 |                                                                |
	 |                             ,-------------------,              |
	 |                             v                   |              |
	 +->(PARALLEL)->|existing arc|-+->|pnt on new arc|-+------------->+
	 |                                |--distance----|                |
	 |                                                                |
	 |                            ,------------------------,          |
	 |                            v                        |          |
	 '->(SMOOTH)->|end pt of elem|->|end pnt of new arc|->-+--------->'

ARC creates an arc.

All arcs are counterclockwise.  That is, a bug crawling from the begin point to
the end point would be crawling counterclockwise along the arc.

THREE_PTS creates an arc with the given end points through the third point.

DIAMETER creates a half circle from beg_pnt to end_pnt.

CEN_BEG_END creates an arc with the given center point, from the begin point to
the end point.   If the begin and end points are not the same distance from the
center point, the end point is corrected.

CEN_RAD_ANG creates an arc with the given center, radius, begin angle, and  end
angle.   The  radius  and  the  begin and end angles may also be specified with
points.

PER_RAD_ANG creates an arc through the given  point,  with  the  given  radius,
begin  angle,  and  opening  angle.   The  radius  and  the  begin angle may be
specified with a point.   The opening angle may be positive  (counterclockwise)
or negative (clockwise).   The arc chosen is the one bisected by the peripheral
point.

PARALLEL creates an arc parallel to the given one.  If you indicate a point, an
arc  through  that  point is created.   If you enter a distance, an arc at that
distance from the original one is  created.   Positive  distances  create  arcs
outside the original one; negative distances, inside.

SMOOTH creates an arc tangential to the given  element,  ending  at  the  given
point.   With  each  further  point,  it  creates  a  new arc tangential to the
previous one.   If no such arc exists,  it  is  because  the  tangent  and  the
imaginary  line between the two input points coincide; in this case, the system
creates a tangential line.
================================================================================
^AREA_PROPERTY FACE DENSITY AREA MEASURE
AREA_PROPERTY command

---->(AREA_PROPERTY)---+--+--+-----------+-|pnt on face|-+-(END)----+->
		       ^  ^  |           |               |          |
		       |  |  `--->{1}----'               |          |
		       |  |                              |          |
		       |  `------------<-----------------'          |
		       `---------------<----------------------------'

{1}-->(DENSITY)-->|density value|-->

AREA_PROPERTY calculates the following properties of the selected areas:
	     -length of the outer contour
	     -area
	     -center of gravity
	     -moment of inertia about the main axis
	     -radius of gyration

If  the  area  you  want  has holes in it, pick the filled area first, then the
holes.  If DENSITY is not supplied, it is assumed to be 1.
================================================================================
^ARROW_FILL ARROW DIMENSION LEADER_LINE FILL
ARROW_FILL function

---->(ARROW_FILL)--->+---->(ON)----->+---->
		     |               |
		     +---->(OFF)---->+

ARROW_FILL controls the filling of arrows in all dimensions and leader lines.
================================================================================
^BEEP
BEEP function

---->(BEEP)---->

BEEP produces an audible tone. See also TONE.
================================================================================
^CANCEL ESC SHIFT_EXECUTE STOP INTERRUPT
CANCEL command

---->(CANCEL)---->

CANCEL cancels the current activity of the system and  returns  to  the  'Enter
command' prompt.   Partially processed macros and input files are aborted.  Any
typeahead is cleared.  All memory used for temporary storage is released.

The CANCEL command is automatically executed whenever the STOP key  is  pressed
or ESC / SHIFT EXECUTE is entered.
================================================================================
^CANCEL_EDIT_DIM_TEXT DIMENSION
CANCEL_EDIT_DIM_TEXT command

---->(CANCEL_EDIT_DIM_TEXT)----|point|--->

CANCEL_EDIT_DIM_TEXT undoes the  result  of  EDIT_DIM_TEXT.   It  restores  the
identified  dimension  to  its original state, where the value is automatically
calculated from the attached geometry.
================================================================================
^CATALOG DETAIL_INFO SORT REVERSE_SORT SCREEN SELECT CATALOG_LAYOUT CATFILE
^CATALOG CATALOG DEFINE FILE_NAME PHYS_NAME FILE_SIZE CREATE_DATE
^CATALOG MODIFY_DATE ACCESS_DATE NUM_ACCESS FILE_TYPE PROG_NAME
^CATALOG PROG_REV FILE_DESC
CATALOG function

			    ,<---------------------------,
			    v                            ^
-->(CATALOG)-->|directory|->+--------------------------->+-+->(SCREEN)----->+->
			    |                            | |                |
			    +->(DETAIL_INFO)------------>+ '->|filespecif|->'
			    |                            |
			    +->(SORT)---------+->|item|->+
			    |                 |          |
			    +->(REVERSE_SORT)-'          |
			    |                            |
			    '->(SELECT)--|expression|--->'

|expression|

--->|item|-------+-------->+------>|value|------>
		 |         |
		 +->(=)--->+
		 |         |
		 +->(<>)-->+
		 |         |
		 +->(>)--->+
		 |         |
		 +->(<)--->+
		 |         |
		 +->(>=)-->+
		 |         |
		 +->(<=)-->+

|filespecif|

----------+----------------+---|filename|--->
	  |                |
	  +-->(DEL_OLD)----+
	  |                |
	  '-->(APPEND)-----'

CATALOG produces a catalog listing of the named directory.   You can  send  the
output to the SCREEN, or to the named file.  Both directory and file names must
be strings.

If  you  name an output file that already exists, it is an error unless you use
DEL_OLD, which deletes the old file, or APPEND, which causes the new output  to
be written at the end of the old file.

The other options allow you to

   -- choose the format of the output

   -- determine the order of the listing

   -- say which files should be listed

If  you  omit  them,  the  format  is  the  one  defined  by CATALOG_LAYOUT and
DEFINE_CATALOG.  The files are listed in alphabetical order.  Every file in the
directory is included.

Example:

	CATALOG 'dirname' SCREEN

With DETAIL_INFO, the normal format is not used.   Instead, all information  is
listed for each file, one item of information per line.

Example:

	CATALOG 'dirname' DETAIL_INFO SCREEN

With SORT and REVERSE_SORT, you give an item name, and the listing is sorted on
that item.   The item name must be a string.  You can use this option more than
once; the second sort option then specifies the  ordering  of  files  that  are
alike  under  the  first  sort  option,  and so on.  See DEFINE_CATALOG for the
permissible item names.

Example:

	CATALOG 'dirname' SORT 'FILE_TYPE'
			  REVERSE_SORT 'MODIFY_DATE' SCREEN

With SELECT, you say which files in the directory should appear in the listing.
You do this by giving an item name, then saying what values that item can take.
For example,

	SELECT 'FILE_TYPE' 'Dir'

selects the directories.   The item name must be a  string.   The  value  is  a
string,  except  for  the items FILE_SIZE and NUM_ACCESS, where it is a number.
For the items that are dates (CREATE_DATE, MODIFY_DATE, ACCESS_DATE), the value
is normally in the form 'DD-Mmm-YY hh:mm:ss'.   If you omit the year  or month,
you  get  the current one.   If you omit the date, you get 1.   If you omit the
hh:mm:ss, you get midnight.  The value can contain wildcards; thus

	SELECT 'FILE_NAME' 'A*'

selects the files whose names begin with 'A'.   See SELECT (the entry  in  this
help file for element selection) for a description of wildcards.

SELECT  also  allows a relational operator between the item name and the value.
Thus

	SELECT 'ACCESS_DATE' < '01-Jan-85'

selects the files not accessed in 1985 or later, and

	SELECT 'FILE_SIZE' > 10240

selects files larger than 10Kb.   The operators can also be  used  with  names;
here '<' means 'earlier in an alphabetical ordering', etc.

You  can  use  SELECT  more than once.   The resulting files satisfy all of the
selection criteria.

CATALOG   can   provide  information  about  all  of  the  items  described  in
DEFINE_CATALOG.   All of this  information  is  not  available  from  the  host
operating system.   Some of it must be maintained by HP-ME.   For this purpose,
HP-ME maintains files named 'hp_catfile'.   There is  one  such  file  in  each
directory where you have used HP-ME to

	-- write a file
	-- read a file
	-- produce a catalog listing

These files can usually be ignored.  The exception is when they appear in spool
directories.   The  spooler  may  try to print them, although they are not text
files.
================================================================================
^CATALOG_LAYOUT CATALOG FILES
CATALOG_LAYOUT command

			  +------------------+
			  v                  |
---->(CATALOG_LAYOUT)---->+---->|string|---->+---->(END)---->


CATALOG_LAYOUT specifies  the  layout  of  the  catalog  information  given  by
CATALOG.  See also DEFINE_CATALOG, which says what is to be printed in the rows
and columns specified by the layout.

The string defines the number of columns and the width of each  column  in  the
layout.   Within the string, the columns are separated by bars (|).   The width
of each column is the same as the number of characters between the  bars.   The
actual characters are irrelevant, and are usually blanks or numbers.

CATALOG_LAYOUT describes the layout for a single catalog entry (file).  You can
specify  more  than  one  string  if  you  want  more  than one line of catalog
information per file.

Example:

    CATALOG_LAYOUT  '12345678901|12345|123456|1234567890|1234567|1234' END

This defines a catalog format with 6 columns.   The column widths are 11, 5, 6,
10, 7, and 4.

See also CATALOG.
================================================================================
^CATCH SNAP PERMANENT ALL VERTEX ELEM INTERSECTION CENTER OFF RANGE GRID
^CATCH NO_VIEWPORT_RANGE SIZE CURSORSIZE
CATCH function

	    ,-->(PERMANENT)--,
	    ^                v
-->(CATCH)--+----------------+-->(ALL)--------------------------+-->
			     |                                  |
			     |-->(VERTEX)---------------------->|
			     |                                  |
			     |-->(ELEM)------------------------>|
			     |                                  |
			     |-->(INTERSECTION)---------------->|
			     |                                  |
			     |-->(CENTER)---------------------->|
			     |                                  |
			     |-->(OFF)------------------------->|
			     |                                  |
			     |-->(GRID)------------------------>|
			     |                                  |
			     | ,---------->,                    |
			     | |           |                    |
			     |-+-->(RANGE)-+->|range|---------->|
			     |                                  |
			     '-->(NO_VIEWPORT_RANGE)-->|range|->'

The CATCH function sets the catching mode.  This mode controls how input points
are  interpreted,  and  allows the user to select a point on the screen without
having to put the cursor directly on that point.  The system catches to a point
only if it lies within the (imaginary) circle around the  edges  of  the  small
cursor.

ALL is the default.   It looks for a vertex, then for an intersection, then for
a grid point, then for an element (point anywhere on an element).   If it finds
a  vertex  within  the  catch  range,  it  catches  to the closest such vertex;
otherwise, it proceeds with intersections and so on  similarly.   Vertices  are
normally  end  points  of arcs, splines, or straight elements, though with SHOW
VERTEX ON you can see (and catch to) a few additional vertices.   Intersections
can  be between any two elements, or between an element and the ruler.   If the
system can't find any of these, it uses the input point as given.

VERTEX, INTERSECTION, GRID, and ELEM allow you to say what kind of catching you
want, saving some time over the more general ALL option.  CENTER catches to the
center of circles and arcs, and midpoints of lines;  in this case,  it  is  the
element  that  you  pick with the cursor, and not the midpoint.   OFF turns off
catching completely.   These options are normally in force for only one  catch,
after  which  the  mode  switches  automatically  back to ALL.   If you use the
PERMANENT option, the selected catch mode stays in effect until you  change  it
again.

OFF allow you to enter all points without any correction.

The definition of "grid points" varies, depending on the catch mode and whether
you have a ruler, dot or line grid, or no grid at all.   If the catch  mode  is
GRID,  the  grid  points  are  the  ones you would see if you turned a grid on,
whether you have actually done so or not.   You are reminded of this by the x-y
display  in  the  status  line, which hops from grid point to grid point as you
move the cursor around.   If the catch mode is ALL, then the  grid  points  are
only the ones you see.  That is, if you have a line or dot grid on your screen,
those  are  the  grid points; if you have a ruler, the grid points are only the
ticks on the axes; if you have neither  grid  nor  ruler,  there  are  no  grid
points.

It is an error (beep) to set the catch  mode  to  INTERSECTION,  VERTEX,  GRID,
CENTER or ELEM, and then try to catch to something else.

The RANGE option allows you to change the catch range.   The  argument  is  the
size  of  the new range in pixels.   The small cursor changes to match this new
range.

Normally there is no catching if points are read from the keyboard,from macros,
or from files.  With the option  NO_VIEWPORT_RANGE you  can specify the search-
range in user units to allow catching on this kind of point entry.

Switching to the large cursor has no effect on the catch range or mode.

The catch mode (but not the range) is irrelevant when the digitized points  are
used to identify elements, as in DELETE, for example.
================================================================================
^CHAMFER TWO_PTS VERTEX DIST_DIST DIST_ANG
CHAMFER command

	     ,-------------------------------------------------------------,
	     |                                                             |
	     |  ,-------------------------------------,                    |
	     v  v                                     |                    |
-->(CHAMFER)-+--+-->(TWO_PTS)-+------>|pnt1|-->|pnt2|-+--------------------+-->
	     |  |             ^                                            ^
	     |  '-------------'                                            |
	     |                                                             |
	     |           ,---------------------------------,               |
	     |           v                                 |               |
	     +->(VERTEX)-+->|distance|-+--->|vertex point|-+-------------->|
	     |           |             ^                                   |
	     |           '-------------'                                   |
	     |              ,------------------------------------,         |
	     |              v                                    |         |
	     +->(DIST_DIST)-+-|dist1|--|dist2|-+-|elem1|-|elem2|-+-------->|
	     |              |                  ^                           |
	     |              '------------------'                           |
	     |             ,---------------------------------------------, |
	     |             v                                             | |
	     '->(DIST_ANG)-+->|distance|--|angle|--+-->|elem1|->|elem2|--+-'
			   |                       ^
			   '-----------------------'

CHAMFER creates a chamfer.  Internally, all chamfers are just lines.

TWO_PTS creates a chamfer at the two given points, each of which must lie on  a
line, arc, circle, or fillet.

DIST_ANG  creates  a chamfer that begins at the given distance from the corner,
at the given angle with respect to the first element.   The first element  must
be a line; the second may be a line, arc, circle, or fillet.

VERTEX creates a chamfer across a vertex.   The "distance" argument  tells  how
far  from  the vertex the chamfer should be along each line.   The vertex point
must be a place where two lines end.

DIST_DIST accepts two distances, then two elements.  The chamfer begins on  the
first  element  and  ends  on  the  second.   The  distance  from  the  element
intersection point to the chamfer beginning is "dist1", and the distance to the
chamfer end is "dist2".  The elements must be lines.

Once you enter a distance (VERTEX), two distances (DIST_DIST),  or  a  distance
and  an  angle  (DIST_ANG), these values are remembered as defaults, even after
you have left the command.
================================================================================
^CHANGE_COLOR COLOR
CHANGE_COLOR command

				 .----------------.
				 v                |
--->(CHANGE_COLOR)--->|color|--->+--->|select|--->+--->

CHANGE_COLOR changes the color of the selected elements.  You cannot change the
color of parts, though you can change the color of elements within a part.  See
color functions for the possible colors.

See also SHOW, which can temporarily change the color of selected elements.

See also CHANGE_DIM_COLOR and CHANGE_HATCH_PATTERN.
================================================================================
^CHANGE_CURRENT_INFO CURRENT_INFO INFO CURRENT
CHANGE_CURRENT_INFO function

---->(CHANGE_CURRENT_INFO)---->|old string|---->|new string|---->

CHANGE_CURRENT_INFO looks at all strings in the current info, and  changes  any
that  match old_string into new_string.   Old_string may contain wildcards (see
SELECT for a list).  If new_string is empty, the matched strings are deleted.

The current info is the info added to every newly created element.
================================================================================
^CHANGE_DIM_COLOR COLOR DIMENSION
CHANGE_DIM_COLOR command

			 ,-----------------------------------------,
			 |                  +----------------,     |
			 |                  |                |     |
-->(CHANGE_DIM_COLOR)----v---|new_color|----v----|id_pnt|----+-----+---->

CHANGE_DIM_COLOR changes the color of the selected dimensions.  See COLOR for a
list of colors.
================================================================================
^CHANGE_DIM_TEXT_COLOR TEXT COLOR DIMENSION
CHANGE_DIM_TEXT_COLOR command

			   ,---------------------------------------,
			   |                    +---------------,  |
			   |                    |               |  |
->(CHANGE_DIM_TEXT_COLOR)--v-+--|new_color|--^--v---|id_pnt|----+--+---->
			     |               |
			     '---------------'

CHANGE_DIM_TEXT_COLOR changes the color of the selected dimension texts. See
COLOR for a list of colors.
================================================================================
^CHANGE_DIM_TEXT_RATIO TEXT RATIO DIMENSION
CHANGE_DIM_TEXT_RATIO command

			    ,----------------------------------------,
			    |                    +----------------,  |
			    |                    |                |  |
-->(CHANGE_DIM_TEXT_RATIO)--v--|new_text_ratio|--v--+--|id_pnt|---+--+---+-->
						    |                    |
						    `--(ALL)--(CONFIRM)--'

CHANGE_DIM_TEXT_RATIO  changes the text ratio of the selected dimensions.   The
text ratio is the ratio between  text  width  and  height.   The  height  stays
constant, and the width changes to fit the new ratio.   ALL CONFIRM changes the
ratio for every dimension in the active part.
================================================================================
^CHANGE_DIM_TEXT_SIZE TEXT SIZE DIMENSION
CHANGE_DIM_TEXT_SIZE command

			   ,---------------------------------------,
			   |                   +----------------,  |
			   |                   |                |  |
-->(CHANGE_DIM_TEXT_SIZE)--v--|new_text_size|--v--+--|id_pnt|---+--+---+-->
						  |                    |
						  `--(ALL)--(CONFIRM)--'

CHANGE_DIM_TEXT_SIZE  changes the text height of the selected dimensions.   The
text width is updated automatically  using  the  dimension's  text  ratio  (see
CHANGE_DIM_TEXT_RATIO).  ALL CONFIRM changes the text size of all dimensions in
the active part.
================================================================================
^CHANGE_ELEM_INFO INFO
CHANGE_ELEM_INFO command
							  +----------------+
							  v                |
--->(CHANGE_ELEM_INFO)--->|old string|--->|new string|--->+--->|select|--->+-->

CHANGE_ELEM_INFO looks at all  info  of  the  selected  elements,  and  changes
strings  that  match  old_string  into  new_string.    Old_string  may  contain
wildcards (see SELECT for a  list).   If  new_string  is  empty,  the  matching
strings are deleted.
================================================================================
^CHANGE_FILLET FILLET
CHANGE_FILLET command

				   ,-------------,
				   v             ^
-->(CHANGE_FILLET)-->|new radius|--+-->|select|--+-->

CHANGE_FILLET  changes the radius of the selected fillets.  If new_radius is 0,
the fillet is removed and the corner reconstructed.

Before CHANGE_FILLET can do its work, it must be able to recognize the geometry
attached to the fillet.   If you have deleted or otherwise disturbed one of the
tangential elements, the command may report a failure.   In this case, you must
manually  remove  the  fillet, reconstruct the corner, then use FILLET with the
new radius.
================================================================================
^CHANGE_GLOBAL_INFO INFO
CHANGE_GLOBAL_INFO function

---->(CHANGE_GLOBAL_INFO)---->|old string|---->|new string|---->

CHANGE_GLOBAL_INFO  is  like CHANGE_ELEM_INFO, except that the requested change
is applied to every element in memory.
================================================================================
^CHANGE_HATCH_ANGLE HATCH ANGLE
CHANGE_HATCH_ANGLE command

					,-------------,
					v             ^
---->(CHANGE_HATCH_ANGLE)---->|number|--+-->|select|--+-->

CHANGE_HATCH_ANGLE changes the angle of the selected hatch.  See HATCH_ANGLE.
================================================================================
^CHANGE_HATCH_COLOR HATCH COLOR
CHANGE_HATCH_COLOR command


					,--------------,
					v              ^
---->(CHANGE_HATCH_COLOR)----->|color|--+--->|point|---+-->

CHANGE_HATCH_COLOR changes the color of the selected hatch .If  the  pattern
used  by  the  hatch has  more  then one color the simple pattern nearest to
point is  changed. See CURRENT_HATCH_PATTERN.
================================================================================
^CHANGE_HATCH_DIST HATCH DISTANCE
CHANGE_HATCH_DIST command

				       ,-------------,
				       v             ^
---->(CHANGE_HATCH_DIST)---->|number|--+-->|select|--+-->

CHANGE_HATCH_DIST   changes   the   distance   of  the  selected  hatch.    See
HATCH_DISTANCE.
================================================================================
^CHANGE_HATCH_LINETYPE HATCH LINETYPE
CHANGE_HATCH_LINETYPE command

					      ,--------------,
					      v              ^
---->(CHANGE_HATCH_LINETYPE)----->|linetype|--+--->|point|---+-->

CHANGE_HATCH_LINETYPE changes the linetype  of  the  selected hatch .If the
pattern used by the  hatch  has  more  then one linetype the simple pattern
nearest to point is  changed. See CURRENT_HATCH_PATTERN.
================================================================================
^CHANGE_HATCH_PATTERN CURRENT HATCH PATTERN
CHANGE_HATCH_PATTERN command

			    ,---------------,
			    v               |
->(CHANGE_HATCH_PATTERN)--+-+->|offset|     |
			  |        v        |
			  |     | dist |    |
			  |        v        |
			  |     |angle |    |
			  |        v        |
			  |     |color |    |
			  |        v        |
			  |     |linetype|->+-->(CONFIRM)--,
			  |                                | ,-----------,
			  |                                v v           ^
			  '-------------->|point|----------+-+->|select|-+->

CHANGE_HATCH_PATTERN  changes  the  pattern  of   the   selected   hatch   (see
CURRENT_HATCH_PATTERN).  You can specify the pattern directly, with one or more
repetitions of the five hatch pattern parameters, or you can pick a point on an
existing hatch, in which case you get the pattern there.
================================================================================
^CHANGE_HATCH_REF_PT REF_PT HATCH
CHANGE_HATCH_REF_PT command

					,-------------,
					v             ^
---->(CHANGE_HATCH_REF_PT)---->|point|--+-->|select|--+-->

CHANGE_HATCH_REF_PT changes the reference point of  the  selected  hatch.   See
HATCH_REF_PT.
================================================================================
^CHANGE_LINETYPE LINETYPE
CHANGE_LINETYPE command

				       .----------------.
				       v                |
--->(CHANGE_LINETYPE)--->|linetype|--->+--->|select|--->+--->

CHANGE_LINETYPE changes the linetype of the selected  elements,  which  may  be
construction  geometry or real geometry.  See  LINEPATTERN  functions  for  the
possible linetypes.
================================================================================
^CHANGE_PART_REF_PT REF_PT LOAD DRAWING_SCALE PARTS
CHANGE_PART_REF_PT function

---->(CHANGE_PART_REF_PT)---->|point|---->

CHANGE_PART_REF_PT changes  the  reference  point  of  the  active  part.   The
reference  point is used in three places.   First, when you LOAD a drawing as a
subpart, you choose a location point for the subpart.   The subpart's reference
point  is  placed  at  that  location.   Second,  when  a part is a symbol, the
reference point is the point that remains fixed relative to the  geometry  when
you  change  the  drawing scale.   Third, when you bring a part into the active
part with GATHER, you are sometimes asked for a location point.   In this case,
as with LOAD, it is the reference point that goes there.

Before  you change the part reference point, it is the lower left corner of the
part box.   If you change the part reference point, then delete all elements in
the part, your change is forgotten.
================================================================================
^CHANGE_TEXT TEXT CHANGE
CHANGE_TEXT command

				  ,------------,
				  v            |
-->(CHANGE_TEXT)--+-->|new line|-+-+->|select|--+-->
		  |              ^
		  `--->(SCREEN)--'

CHANGE_TEXT  changes one or more existing texts to new text.    Single line and
multi line text is possible..
================================================================================
^CHANGE_TEXT_ADJUST TEXT ADJUST
CHANGE_TEXT_ADJUST command

				    ,-------------,
				    v             |
-->(CHANGE_TEXT_ADJUST)-->|number|--+-->|select|--+-->

CHANGE_TEXT_ADJUST changes the adjust parameter of a selected text.   The range
for the adjust number is [1..9] (see TEXT_ADJUST).
================================================================================
^CHANGE_TEXT_ANGLE TEXT ANGLE
CHANGE_TEXT_ANGLE command

					    ,-------------,
					    v             |
-->(CHANGE_TEXT_ANGLE)-+->|number|--------->+-->|select|--+-->
		       |                    ^
		       |                    |
		       +->|point|-->|point|-+

CHANGE_TEXT_ANGLE changes the angle of the selected text (see TEXT_ANGLE).  The
angle is specified by a value or by two points.
================================================================================
^CHANGE_TEXT_FILL TEXT FILL
CHANGE_TEXT_FILL command

				  ,-------------,
				  v             |
-->(CHANGE_TEXT_FILL)--+-->(ON)-->+-->|select|--+---->
		       |          ^
		       '-->(OFF)--'

CHANGE_TEXT_FILL turns filling of the selected text on or off.  See TEXT_FILL.
================================================================================
^CHANGE_TEXT_FONTNAME TEXT FONT
CHANGE_TEXT_FONTNAME command

					     +------------------+
					     v                  |
---->(CHANGE_TEXT_FONTNAME)---->|string|---->+---->|select|---->+---->

CHANGE_TEXT_FONTNAME changes the font of the selected text.   If the font named
is not in memory, the text will appear as boxes until the font is loaded.
================================================================================
^CHANGE_TEXT_FRAME BOX BALLOON TEXT FRAME
CHANGE_TEXT_FRAME command

				       ,-------------,
				       v             |
-->(CHANGE_TEXT_FRAME)--+-->(OFF)------+-->|select|--+---->
			|              ^
			|-->(BOX)----->|
			|              |
			+-->(BALLOON)->+

CHANGE_TEXT_FRAME changes the frame of the selected text.  See TEXT_FRAME.
================================================================================
^CHANGE_TEXT_LINESPACE TEXT
CHANGE_TEXT_LINESPACE command

				       ,-------------,
				       v             |
-->(CHANGE_TEXT_LINESPACE)-->|number|--+-->|select|--+-->

CHANGE_TEXT_LINESPACE changes the spacing factor between lines of the  selected
multi-line   text.    The  distance  between  the  baselines  of  the  text  is
linespace*size.
================================================================================
^CHANGE_TEXT_RATIO TEXT RATIO
CHANGE_TEXT_RATIO command

				   ,-------------,
				   v             |
-->(CHANGE_TEXT_RATIO)-->|number|--+-->|select|--+-->

CHANGE_TEXT_RATIO  changes  the ratio between character width and height in the
selected text.   The height remains constant, and the width changes to fit this
new ratio.
================================================================================
^CHANGE_TEXT_SIZE TEXT SIZE
CHANGE_TEXT_SIZE command

				  ,-------------,
				  v             |
-->(CHANGE_TEXT_SIZE)-->|number|--+-->|select|--+-->

CHANGE_TEXT_SIZE  changes the character size of the selected text.   The number
given is the new text height.   The text width  is  updated  according  to  the
element's text ratio (see TEXT_RATIO).
================================================================================
^CHANGE_TEXT_SLANT TEXT SLANT
CHANGE_TEXT_SLANT command

				   ,-------------,
				   v             |
-->(CHANGE_TEXT_SLANT)-->|number|--+-->|select|--+-->

CHANGE_TEXT_SLANT changes the slant of the selected text.   The new slant  must
be between -80 and 80 degrees.  See TEXT_SLANT.
================================================================================
^CHANGE_VIEWPORT_COLOR COLOR VIEWPORT
CHANGE_VIEWPORT_COLOR function

---->(CHANGE_VIEWPORT_COLOR)---->|new color|---->

CHANGE_VIEWPORT_COLOR changes the background color  of  the  current  viewport.
See COLOR for a list of colors.
================================================================================
^CHANGE_VIEWPORT_SIZE SIZE VIEWPORT
CHANGE_VIEWPORT_SIZE function

-->(CHANGE_VIEWPORT_SIZE)-->|new corner point|-->|new opposite corner point|-->

CHANGE_VIEWPORT_SIZE changes the size of the current viewport.   The new corner
points  may be specified in the crt pixel coordinate system (origin lower left,
each pixel one unit), or may be digitized on the  crt  screen.   This  function
tries  to  keep the current window settings, but minor changes are necessary if
the aspect ratio is changed.  See CREATE_VIEWPORT for more information.
================================================================================
^CHAR_LAYOUT TEXT FONT BREAK
CHAR_LAYOUT command

		   +<----------------------------------------------+
		   |                                               ^
		   |              ,----------------,               |
		   v              v                |               |
-->(CHAR_LAYOUT)-->+-->|string|---+-->|point|------+-+------------>+-->(END)-->
				  |                ^ |             ^
				  '-->(BREAK)------' '-->|number|--'

CHAR_LAYOUT  (re)defines  the character(s) of the current font.   The character
strokes are defined in terms of an imaginary grid measuring 250  x  250  units,
whose origin is the lower left corner.

String describes the character to be defined.   For 8 bit fonts, the  character
range is from #0 to #255.

Point describes a point on the grid. Its range is integer 0..250,0..250.

BREAK  is an option to lift the pen and move it to next point.

Number  gives  the  real width of the character including the space to the next
character.   It is in grid units with the integer range 0..250.   Default value
is width parameter of the DEFINE_FONT function.

If  you  use  characters  of  a font which have not been previously defined the
system will display them as boxes.

See DEFINE_FONT for the mapping of grid units to user units.
================================================================================
^CIRCLE CENTER DIAMETER THREE_PTS PARALLEL TAN2_PT
CIRCLE command

	     ,--------------------------------------------------------------,
	     |                                     ,---------------,        |
	     v                                     v               |        |
-->(CIRCLE)--+--+-->(CENTER)----+-->|center point|-+-|per point|-+-+--------+->
	     |  |                 ^                |             |          |
	     |  '-----------------'                +--|radius|---+          |
	     |                                                              |
	     |                  ,------------------<-------------------,    |
	     |                  v                                      |    |
	     +------(DIAMETER)--+-->--|end point1|---|end point2|------+----+
	     |                                                              |
	     |                  ,------------------<-----------------,      |
	     |                  v                                    |      |
	     |-->(THREE_PTS)----+->|per pnt|-->|per pnt|-->|per pnt|-+----->|
	     |                                                              |
	     |                                     ,--------------------,   |
	     |                                     v                    |   |
	     |-->(PARALLEL)-->|pnt on exist. circ|-+->|pnt on new circ|-+-->|
	     |                                     v                    ^   |
	     |                                     +-----|distance|-----+   |
	     |                                                              |
	     |             ,-----------------------<----------------------, |
	     |             v                                              | |
	     '-->(TAN2_PT)-+-|apptang pnt1|->|apptang pnt2|-+->|radius|---+-'
							    |             |
							    '-|position|--'

CIRCLE creates a circle.

TWO_PTS  creates  a  circle  with  the  given  center  and radius or center and
peripheral point.

THREE_PTS creates a circle through the three given points.

PARALLEL makes a new circle parallel to the given circle/arc/fillet through the
given point or at the given distance.   Positive distances mean  that  the  new
circle will be outside the old one, and negative distances, inside.

TAN2_PT makes a circle tangential to two other elements, with the given  radius
or through the given peripheral point.  The approximate tangent points are used
both  to  identify  the elements and to decide which of the possible tangential
circles was intended.  If the two elements are parallel lines, the systems asks
for a peripheral point to  determine  which  circle  to  create.   If  the  two
elements  are  concentric circles, arcs, fillets, or c_circles, the system asks
for the angle formed by the center of the old circles and  the  center  of  the
new.

The result of TAN2_PT depends on whether the third  input  is  a  radius  or  a
peripheral  point.   With  a  peripheral  point, the result is really a circle.
With a radius, the result is a circle if SPLITTING is off.   If it is  on,  the
result is a "split" circle, i.e.,  two arcs forming a circle whose vertices are
at the tangent points.

Because  of  limited  accuracy  in  the algorithms that calculate tangents, the
system occasionally announces that the requested tangent does not  exist,  when
in fact it does.   In these cases, try varying the input points, or use another
option to construct the circle.
================================================================================
^CLOSE_FILE OPEN_INFILE OPEN_OUTFILE READ_FILE WRITE_FILE FILES
CLOSE_FILE function

---->(CLOSE_FILE)---->|number|---->

CLOSE_FILE closes the specified file.  See also OPEN_INFILE and OPEN_OUTFILE.
================================================================================
^COLOR RGB HSL COLORSPECIFIER
^RGB_COLOR
^HSL_COLOR
^BLACK
^RED
^GREEN
^YELLOW
^BLUE
^MAGENTA
^CYAN
^WHITE
Color functions

---->+---->(RGB_COLOR)---+----->|red|------>|green|------>|blue|---->+---->
     |                   |                                           |
     |                   `-----------------|pnt_3d|----------------->+
     |                                                               |
     +---->(HSL_COLOR)---+-->|hue|--->|saturation|--->|luminosity|-->+
     |                   |                                           |
     |                   `-----------------|pnt_3d|----------------->+
     |                                                               |
     +---->(RED)---------------------------------------------------->+
     |                                                               |
     +---->(GREEN)-------------------------------------------------->+
     |                                                               |
     +---->(YELLOW)------------------------------------------------->+
     |                                                               |
     +---->(BLUE)--------------------------------------------------->+
     |                                                               |
     +---->(MAGENTA)------------------------------------------------>+
     |                                                               |
     +---->(CYAN)--------------------------------------------------->+
     |                                                               |
     +---->(WHITE)-------------------------------------------------->+
     |                                                               |
     `---->(BLACK)-------------------------------------------------->'

red,green,blue,hue,saturation,luminosity: number (0..1)

If the option pnt_3d is used then the  x,y,z  values  represent  the  3  single
numbers red(x),green(y),blue(z) or hue(x),saturation(y),luminosity(z).

The  COLOR functions specify the color attribute used by all commands belonging
to the same group as the currently active command.   If the COLOR functions are
used  inside  the LINE command for example, they specify the color of all newly
created geometric elements, if they are used during the DIM_LINE  command,  all
future  dimension elements will be affected.   BLACK, RED, GREEN, YELLOW, BLUE,
MAGENTA, CYAN, and WHITE directly specify one of the 8 primary colors, for  any
non-primary  color use RGB_COLOR and specify the red, green, and blue intensity
(range 0..1) or use HSL_COLOR and specify the hue,  saturation  and  luminosity
(range 0..1).

If  the  COLOR  functions are used at the 'Enter command:'  prompt, they act on
normal geometric elements.

The standard colors have the following rgb and hsl values:

	    r g b     h  s l
	    -----    -------
 BLACK    : 0 0 0     x  x 0     (x = don't care)
 RED      : 1 0 0     0  1 1
 GREEN    : 0 1 0    2/6 1 1
 YELLOW   : 1 1 0    1/6 1 1
 BLUE     : 0 0 1    4/6 1 1
 MAGENTA  : 1 0 1    5/6 1 1
 CYAN     : 0 1 1    3/6 1 1
 WHITE    : 1 1 1     x  0 1

The following groups of elements share the same color attribute:

 - geometry (lines, arcs, circles, ...)
 - construction geometry (c_lines, c_circles)
 - dimensioning
 - hatch
 - text
================================================================================
^OLD COLOR
COLOR function (OLD)

-->(COLOR)--+-->(BLACK)---->+-->
	    |               ^
	    |-->(BLUE)----->|
	    |               |
	    |-->(CYAN)----->|
	    |               |
	    |-->(GREEN)---->|
	    |               |
	    |-->(MAGENTA)-->|
	    |               |
	    |-->(RED)------>|
	    |               |
	    |-->(WHITE)---->|
	    |               |
	    '-->(YELLOW)----'

COLOR sets the current geometry and text color.  The current color is  the  one
used  for all newly created elements except construction lines and construction
circles,  whose  current  color  is  set  by  C_COLOR,  and  hatching,  set  by
HATCH_COLOR.  See also DIM_COLOR.

Use LINE (TEXT) |color functions| END for new macros.
================================================================================
^COMMENT
comment

-->( { )--->+                                                     +-->( } )-->
	    |                                                     |
	    +-->| any sequence of char not containing } or *) |-->+
	    |                                                     |
-->( (* )-->+                                                     +-->( *) )-->

Comments  are  sequences  of  characters  inserted  into  the  input  stream as
documentation.  They are ignored by the system.
================================================================================
^COMPACT NC
Compact macro

-->(Compact)-->|filename|--->

Compact  generates  a file in the COMPACT input language (used by NC programs).
If any geometry in the active part has been labeled with the LABEL command, the
file describes that geometry; otherwise, it describes all the geometry  in  the
active part.  See also APT, NCGL.
================================================================================
^CONFIGURE_EDITOR EDITOR
CONFIGURE_EDITOR function

-->(CONFIGURE_EDITOR)-->|command escape chr|-->|left margin|-->|right margin|->

The  CONFIGURE_EDITOR function is used to set the configuration of the built-in
screen editor. It is most useful within the startup file.

Command escape chr is a one character string or  string  expression  specifying
the  character  which turns into the editor command mode.  Any character except
(0..9, A..Z, a..z, ^, ., !, ?)  may be used.   The initial value of the command
escape character is $.

Left  margin and right margin are numbers greater than zero and less than a crt
type dependent value (85 for low  resolution  crts,  128  for  high  resolution
crts).  The initial values of the margins are 1 and 79. Margins are used by the
adjust paragraph commands.
================================================================================
^CONVERT_SPLINE MIN_RADIUS MAX_RADIUS MIN_LENGTH UNDO BIARC SPLINE
CONVERT_SPLINE command

		     ,--------------------------------------------,
		     v                                            |
-->(CONVERT_SPLINE)--+----|select|--------------------------------+-->
		     |                                            |
		     '-->(MIN_RADIUS)--->|number|-----------------+
		     |                                            |
		     '-->(MAX_RADIUS)--->|number|-----------------+
		     |                                            |
		     '-->(MIN_LENGTH)--->|number|-----------------+
		     |                                            |
		     '-------------->|resolution|-----------------+
		     |                                            |
		     '-->(UNDO)-----------------------------------'

CONVERT_SPLINE converts the selected spline to a biarc, a series  of  arcs  and
lines.

MIN_RADIUS is the minimum radius of the arcs.

MAX_RADIUS is the maximum radius of the arcs.   Curves with a larger radius are
replaced  by  lines instead of arcs.   Setting MAX_RADIUS to 0 produces a biarc
with only lines.

MIN_LENGTH is the minimum length of an arc or line.   Setting this number  high
minimizes the number of elements created, at the expense of accuracy.

The  resolution  is  the  maximum number of elements created per spline segment
(that portion of the spline between two user data points).   The default is 10;
accepted values are 1..10.

UNDO restores the splines most recently converted.
================================================================================
^COPY_FILE COPY_DIRECTORY FILES RECURSIVE
COPY_FILE function

->(COPY_FILE)->|source_name|->+-+-------+-+-+-------+-+-------+->|dest_name|-->
			      | ^       | ^ |       ^ |       ^
			      | |       v | v       | v       |
			      | +<-{1}<-+ | '->{3}->' '->{4}->'
			      |           |
			      v           |
			      '--->{2}--->'


{1}--->(SELECT)--->|expr|--->

|expr|

--->|item|-------+-------->+------>|value|------>
		 |         |
		 +->(=)--->+
		 |         |
		 +->(<>)-->+
		 |         |
		 +->(>)--->+
		 |         |
		 +->(<)--->+
		 |         |
		 +->(>=)-->+
		 |         |
		 +->(<=)-->+

{2}--->(RECURSIVE)--->

{3}--->(SCREEN)--->

{4}--->(DEL_OLD)--->

The COPY_FILE function copies the specified source files to the  destination.
The  file 'hp_catfile' is considered to be a system file and cannot be copied
with this function.

 -- default:  If  the dest file already exists, an error message is issued,
    otherwise the dest file is created.

 -- DEL_OLD: If the dest file already exists, its old contents are lost.
    The file 'hp_catfile' cannot be overwritten.

Wildcards can be used in source_name. See SELECT (the entry in this  help file)
for a description of wildcards.

See CATALOG (the entry in this help file) for a description of the 'SELECT'
option and see  DEFINE_CATALOG for a description of |expr|.

With  the  option 'RECURSIVE' you can copy files, empty  directories and entire
non empty directories (that means trees).  Without the option 'RECURSIVE'   you
can only copy files.

The option 'SCREEN' enters the built-in editor (see EDITOR) and allows  you  to
verify  the  list of selected files and directories;  any changes in the screen
are ignored.  With an unsuccessful exit (STOP/BREAK) from the editor you do not
copy anything.

With this function you cannot copy device  files, block special files  or char
special files.
================================================================================
^CREATE_DETAIL DETAIL PARTS
CREATE_DETAIL command

-->(CREATE_DETAIL)--->|magnify fac.|--+-->|box|-----+--|p1|-->|p2|--->
				      |             |
				      '-->|part|----'

CREATE_DETAIL creates a detail view of  existing  geometry,  magnified  by  the
requested factor.   The magnified geometry is placed in a part called '.detail'
directly  under  the  top  part.   Although  the  geometry  is  magnified,  any
dimensions  present,  or  any  that you add later, give the measurements BEFORE
magnification.   The detail part behaves like a shared part, although there  is
no sharing between the detail and the geometry from which it was created.

To  specify  the  existing geometry, you can either identify a part or indicate
opposite corners of a box.   You then show where the detail part should  go  by
indicating  points p1 and p2.   The detail is scaled around p1, then moved from
p1 to p2.

The magnification factor is the factor by which the geometry as you see  it  is
scaled  to produce the detail.   For example, if you are working with a drawing
scale of 2:1, and ask for a magnification factor of 5, the  detail  will  be  5
times  bigger  than  the selected geometry, producing an effective scale in the
detail of 10:1.
================================================================================
^CREATE_DIRECTORY FILES
CREATE_DIRECTORY function


-->(CREATE_DIRECTORY)--->|directoryname|---->

CREATE_DIRECTORY creates a new  directory.

If the directory already exists, an error message is issued.
================================================================================
^CREATE_SUBPART PARTS
CREATE_SUBPART command

				    ,-------------,
				    v             ^
-->(CREATE_SUBPART)--->|part name|--+-->|select|--+-->

CREATE_SUBPART creates a new  part  within  the  active  part,  using  existing
elements.

To make an empty part, see INIT_PART and INIT_SUBPART.
================================================================================
^CREATE_VIEWPORT VIEWPORT
CREATE_VIEWPORT function

--->(CREATE_VIEWPORT)---->+---->|color|---->+
			  |                 |
			  v                 v
			  +<----------------+
			  |
			  +---->|corner point|---->|opposite corner point|---->

CREATE_VIEWPORT creates a new viewport.   Color is the background color of  the
new  viewport and defaults to black if not specified.   See COLOR for a list of
colors.   The corner points may be specified in the crt pixel coordinate system
(origin  lower  left,  each  pixel  one  unit),  or may be digitized on the crt
screen.   The new viewport will be made the current viewport.   You can have up
to 16 viewports. If you already have 16 viewports, the CREATE_VIEWPORT function
will automatically delete one totally covered viewport.

If  a  viewport  is  partially or totally covered by other viewports, it is not
deleted.   However, its visual contents will not be updated by  any  operation.
Digitizing in partially covered viewports is not possible.   Exceptions are the
CURRENT_VIEWPORT and DELETE_VIEWPORT functions, which will accept a pick  in  a
partially  covered  viewport  to identify this viewport.   To update the visual
contents of a partially covered viewport use either  the  NEW_SCREEN  function,
which  will  update  all information on the screen, or use the CURRENT_VIEWPORT
function, which will update and make fully visible one specific viewport.
================================================================================
^CS RELATIVE ABSOLUTE GRID GIRD_FACTOR RULER COORDINATE COORDINATESYSTEM
^COORDINATESYSTEM
COORDINATE SYSTEM

This section describes the various coordinate systems used for input.

The  coordinate  system is irrelevant when you digitize a point with the tablet
or mouse.   However, if you enter a length or an angle, or you  enter  a  point
with  the keyboard (or from a macro or file), the program must have some way to
interpret this data.

The ABSOLUTE system is the simplest, but only  rarely  used.  It  has  a  fixed
origin, and its X and Y axes are always horizontal and vertical.  The units are
set by the UNITS command, and are originally millimeters.

The  RELATIVE  system, also called the input coordinate system, is the one used
by practically every command and function in HP-ME.   For example, if  you  say
LINE  0,0  50,50,  you  refer to the input coordinate system.  You can see this
coordinate system by turning on the RULER.   The arms of  the  ruler  show  the
axes.  Ignore the ruler ticks for the time being.

On startup, the relative and absolute systems are the same.  You can change the
relative system in two ways:  with UNITS, or with the CS commands (all of which
have names beginning "CS_").   If you say UNITS INCHES, the unit distance along
each axis becomes 1 inch instead of 1 mm.   UNITS  also  changes  the  absolute
system, as mentioned above.

The second way to change the relative system is with the  CS  commands.   These
allow  you  to  specify  an  origin, as well as a direction and length for each
axis.   These commands (and  only  these)   accept  the  options  ABSOLUTE  and
RELATIVE,  allowing  you to specify these points, angles, and lengths in either
coordinate system.   The CS commands change  only  the  relative  system.   For
example, CS_AXIS 2,0 0,2 says that the unit distance along each axis is 2.   In
this case, the specification was absolute, so we get, assuming UNITS INCHES,  2
inches.   The absolute unit is 1 inch, and the relative unit is 2 inches.   If,
incidentally, we now say UNITS MM, the absolute unit is 1 mm, and the  relative
unit is 2 mm.

Almost every command and function uses the input coordinate system to interpret
angles,  lengths,  and non-digitized points.  (The only exceptions are commands
that deal with devices, like the tablet or the screen.)  Angles are assumed  to
be relative to the X axis (which might be tilted).   Lengths, in any direction,
are assumed to be relative to the unit distance along the X axis  (which  might
be  different  from  that  along  the  Y axis).   Points are interpreted in the
conventional way.

Now  let's  consider  the  ruler  ticks.   The ticks are on the user grid, also
displayable with DOT_GRID and LINE_GRID.   The relationship  between  the  unit
distance (of the input coordinate system) and the distance between ticks is set
by  GRID_FACTOR.   At system startup, the grid factor is 10, so the ruler ticks
are 10 mm apart.   GRID_FACTOR 20 makes the ruler ticks  20  mm  apart.   Using
GRID_FACTOR  has  no  effect on either coordinate system; it just changes where
the grid points are.

What is the effect of UNITS or the CS commands on  the  grid  points  or  ruler
ticks?   UNITS,  although  it changes both coordinate systems, has no effect on
the grid points.   The grid factor is automatically changed to  keep  the  grid
points where they were.   The CS commands, on the other hand, do not change the
grid factor, and so can change the spacing of the grid points.  An example:

	startup                    grid distance 10 mm
	UNITS INCHES               grid distance 10 mm
	GRID_FACTOR 1              grid distance 1 inch
	GRID_FACTOR 2              grid distance 2 inches
	CS_AXIS 2,0 0,2            grid distance 4 inches

The status line has useful information about the input  coordinate  system  and
the  grid factor.   The X/Y feedback on the left shows coordinates in the input
coordinate system.   The only exception is when you have said ABSOLUTE in a  CS
command; here you see absolute coordinates.   The units displayed are the units
of the input coordinate system.   When these units are  non-standard,  you  see
only "usr".   Just before the units display is the grid factor.  This factor is
suppressed if there is no grid or ruler, or if the grid  factor  does  not  fit
into the 7 columns provided.
================================================================================
^CS_AXIS CS AXIS RELATIVE ABSOLUTE GRID RULER
CS_AXIS function

--->(CS_AXIS)--{1}--+-->|vec1|----------+-{1}--+-->|vec2|------------->
		    |                   |      |                    |
		    |                   |      |                    |
		    '-->|ang1|->|len1|--'      '-->|ang2|->|len2|---'


{1}
-----+----------------------+------->
     |                      |
     +--->(RELATIVE)------->+
     |                      |
     '--->(ABSOLUTE)------->'


CS_AXIS redefines the axes of the input coordinate system, leaving  the  origin
fixed.  You define first the X axis, then the Y axis, in both cases either with
a point (vector from 0,0)  or an angle and length.

The default input method is ABSOLUTE.  See also CS.

CS_AXIS  does  not change the input coordinate system until after all input has
been interpreted; thus RELATIVE when specifying the Y axis means that the input
is relative to the system that was in effect before CS_AXIS was invoked.
================================================================================
^CS_MIRROR CS MIRROR GRID RULER
CS_MIRROR function

--->(CS_MIRROR)---->|axis number|------------->

The  axis of the input coordinate system identified by number (1 is the X axis,
2 the Y axis) is reflected about the other axis.
================================================================================
^CS_REF_PT CS REF_PT RELATIVE ABSOLUTE MIX GRID RULER
CS_REF_PT function

		 ,-----------------,
		 |                 ^
		 v                 |
--->(CS_REF_PT)--+-->(RELATIVE)----+
		 |                 ^
		 v                 |
		 |-->(ABSOLUTE)----'
		 v
		 +-->(MIX)-->|point1|-->|point2|--+->|point3|--,
		 |                                |            |
		 |                                '->|value|---+
		 v                                             |
		 '------------|point|--------------------------+---->

CS_REF_PT changes the origin of the input coordinate system.   You can indicate
the  origin  directly,  or   with   MIX.     MIX   generates   the   point   by
pnt1+value*(pnt2-pnt1)   or by dropping a perpendicular from point3 to the line
through point1 and point2.  The default input method is ABSOLUTE.  See also CS.
================================================================================
^CS_ROTATE CS ROTATE RELATIVE ABSOLUTE GRID RULER
CS_ROTATE function

		 ,-----------------,
		 |                 ^
		 v                 |
--->(CS_ROTATE)--+-->(RELATIVE)----+
		 |                 ^
		 v                 |
		 |-->(ABSOLUTE)----'
		 v
		 +-->|angle|------------->

CS_ROTATE rotates the input coordinate system about its  origin.   You  specify
the  angle of the X axis in the new system.   ABSOLUTE (the default) means that
the angle is relative to the horizontal; RELATIVE, that it is relative  to  the
current system.
================================================================================
^CS_SET CS SET RELATIVE ABSOLUTE TWO_PTS THREE_PTS GRID RULER
CS_SET function

	     ,--------------,
	     ^              v
-->(CS_SET)--+--(TWO_PTS)-->+--{1}--|org pt|--{1}--|X pt|--------------->
	     |
	     +--(THREE_PTS)--{1}--|org pt|--{1}--|X pt|--{1}--|Y pt|---->

{1}
-----+----------------------+------->
     |                      |
     +--->(RELATIVE)------->+
     |                      |
     '--->(ABSOLUTE)------->'

CS_SET  changes  both  the  origin  and  the  angle  of  the  axes of the input
coordinate system.   With TWO_PTS, you indicate the origin and any point on the
X axis;  the angle between X and Y axis remains unchanged.  With THREE_PTS, you
indicate the origin and points on the X and Y axes, respectively.   CS_SET does
not change the units along the axes.

The default input method is ABSOLUTE.  See also CS.

CS_SET changes the input coordinate system after each input point.  Between the
origin input and the X point input, the origin is moved.   Between the X  point
input  and the Y point input (THREE_PTS only), the coordinate system is rotated
to pass through the new X point.   You must take this into account if  you  use
RELATIVE for any input after the first.
================================================================================
^CURRENT_DIRECTORY MSI PREFIX CD CURRENT DIRECTORY
CURRENT_DIRECTORY function

---->(CURRENT_DIRECTORY)---->|string|---->

CURRENT_DIRECTORY changes  the  current  directory  (other  terms  are:  prefix
directory, default directory, MSI) to the directory specified by string.
================================================================================
^CURRENT_FONT TEXT CURRENT FONT
CURRENT_FONT function

---->(CURRENT_FONT)---->|fontname|---->

CURRENT_FONT selects the font used for new  texts.   If  the  font  is  not  in
memory, new text is drawn as boxes until the font is loaded.
================================================================================
^CURRENT_HATCH_PATTERN NONE CURRENT HATCH PATTERN
CURRENT_HATCH_PATTERN function

			     ,---------------,
			     v               |
->(CURRENT_HATCH_PATTERN)--+-+->|offset|     |
			  |         v        |
			  |      | dist |    |
			  |         v        |
			  |      |angle |    |
			  |         v        |
			  |      |color |    |
			  |         v        |
			  |      |linetype|->+-->(CONFIRM)--,
			  |                                 |
			  |                                 v
			  '---------------->(NONE)----------+->

CURRENT_HATCH_PATTERN  defines  the current hatch pattern, which is the pattern
used for newly created hatches.   NONE means that there is no current  pattern,
in  which  case  hatch  lines are determined by the current hatch angle, color,
distance, reference point, and linetype.

A hatch pattern consists of one or more simple patterns, sets of parallel lines
that are superimposed in each hatch.   Each simple pattern is determined by the
offset,  distance,  angle,  color,  and  linetype specified.   Several of these
parameters are interpreted relative  to  the  current  hatch  parameters.   The
offset is from the hatch reference point (set by HATCH_REF_PT) to a hatch line.
The  distance is the distance between the lines, relative to the hatch distance
(set by HATCH_DISTANCE).   That is, if the hatch distance is 10,  and  distance
specified  is  2, then the distance between the lines in this simple pattern is
20.   The angle is added to the hatch angle (set by HATCH_ANGLE) to produce the
angle of the hatch lines.

Once  a  hatch  has  been  created,  it  has a pattern, regardless of whether a
current pattern existed at the time of its creation.   Thus, a  second  way  to
create  a  current hatch pattern is to say GET_PROPERTIES and identify a hatch.
Once you have a current pattern, HATCH_COLOR and HATCH_LINETYPE seem to have no
effect on new hatches, since each pattern, including the current one,  has  its
own color and linetype.  HATCH_COLOR and HATCH_LINETYPE affect new hatches only
when no current pattern exists.
================================================================================
^CURRENT_VIEWPORT CURRENT VIEWPORT
CURRENT_VIEWPORT function

---->(CURRENT_VIEWPORT)---->+---->|digitized point within a viewport|---->+--->
			    |                                             |
			    +---->|viewport id number|------------------->+

CURRENT_VIEWPORT  sets  the current viewport.   The current viewport is the one
affected  by  REDRAW,   WINDOW,   LAST_WINDOW,   RECALL_WINDOW,   STORE_WINDOW,
SHOW_PART, VIEW, CHANGE_VIEWPORT_COLOR, and CHANGE_VIEWPORT_SIZE.

Identifying  the  id  number  of  a   viewport   automatically   executes   the
CURRENT_VIEWPORT function.

The current viewport is always fully visible and uptodate.  This is enforced by
automatically  moving  it  on  top  of  the viewport stack if it was previously
covered by other viewports. See CREATE_VIEWPORT for more information.
================================================================================
^CURSOR SMALL LARGE CURSORSIZE SIZE SMALL LARGE
CURSOR function

-->(CURSOR)---+-->(SMALL)-->+---->
	      |             ^
	      '-->(LARGE)---'

The CURSOR function selects the SMALL or the LARGE cursor.   The  size  of  the
small cursor is determined by the catch range.  The large cursor extends to the
viewport boundaries.

The  choice  of  cursor  has  no effect on catching.   In particular, it is not
possible to use the ruler and the large cursor to emulate a grid.
================================================================================
^C_CIRCLE CIRCLE CENTER DIAMETER THREE_PTS PARALLEL TAN_PT_PT TAN2_PT TAN3
^TAN_CENTER CONSTRUCT
C_CIRCLE command

	     ,--------------------------------------------------------------,
	     |                                       ,-------------,        |
	     v                                       v             |        |
->(C_CIRCLE)-+--+-->(CENTER)------+-->|center point|-->|per point|-+--------+->
	     |  |                 ^                    |--radius-|          |
	     |  '-----------------'                                         |
	     |                  ,------------------<-------------------,    |
	     |                  v                                      |    |
	     +------(DIAMETER)--+-->--|end point1|---|end point2|------+----+
	     |                                                              |
	     |                  ,--------------------------------------,    |
	     |                  v                                      |    |
	     +-->(THREE_PTS)----+->|per pnt|-->|per pnt|-+-|per pnt|-+-+--->+
	     |                                           |           |      |
	     |                                           +--|radius|-+      |
	     |                                                              |
	     |                                     ,---------------------,  |
	     |                                     v                     |  |
	     +-->(PARALLEL)-->|pnt on cir elem|----+->|pnt on new circ|-++->+
	     |                                     |                    |   |
	     |                                     +-----|distance|-----+   |
	     |                                                              |
	     |                ,------------------------------------------,  |
	     |                v                                          |  |
	     +-->(TAN_PT_PT)--+-->|apptan pnt1|->--|point|-+--|point|--+-+--+
	     |                                             |           |    |
	     |                                             +--|radius|-+    |
	     |                                                              |
	     |                                                              |
	     |             ,-----------------------<----------------------, |
	     |             v                                              | |
	     '-->(TAN2_PT)-+-|apptang pnt1|->|apptang pnt2|-+->|radius|---+-'
	     |                                              |             | |
	     |                                              '-|position|--' |
	     |                                                              |
	     |          ,-----------------------------------------------,   |
	     |          v                                               |   |
	     +-->(TAN3)-+-->|apptan pnt1|->|apptan pnt2|--|apptan pnt3|-+---+
	     |                                                              |
	     |                ,-----------------------------------------,   |
	     |                v                                         |   |
	     +-->(TAN_CENTER)-+---|apptan point|---|center|-------------+---+


C_CIRCLE creates construction circles.

CENTER  creates  a  c_circle  with  the  given  center and radius or center and
peripheral point.

DIAMETER creates a c_circle with the given points at the end of a diameter.

PARALLEL makes a new c_circle concentric to the given element through the given
point or at the given distance.   Positive distances mean that the new c_circle
will be outside the element, and negative distances, inside.   The element  may
be a circle, arc, fillet, or c_circle.

TAN2_PT  makes  a  c_circle  tangential  to  two other elements, with the given
radius or through the given peripheral point.  If the two elements are parallel
lines, the systems asks for a peripheral point to  determine  which  circle  to
create.   If  the  two  elements  are  concentric  circles, c_circles, arcs, or
fillets, the system asks for the angle formed by the center of the old  circles
and the center of the new.

THREE_PTS creates a c_circle through the  three  given  peripheral  points,  or
through  the  two  given  peripheral points and with the given radius.   In the
latter case there are two possible c_circles; the one chosen is to the right of
the (imaginary) line from the first point to the second.

TAN_PT_PT creates a c_circle tangential to the  selected  element  and  passing
through  the  given  points  or  passing through the given point with the given
radius.

TAN3 creates a circle tangential to the three selected elements.

TAN_CENTER creates a circle tangential to the identified element with the given
center.

With  the  tangential  options, the approximate tangent points are used both to
identify the elements and to decide which tangential circle was intended.

Because  of  limited  accuracy  in  the algorithms that calculate tangents, the
system occasionally announces that the requested tangent does not  exist,  when
in fact it does.   In these cases, try varying the input points, or use another
option to construct the circle.
================================================================================
^C_COLOR COLOR OLD
C_COLOR function (OLD)

-->(C_COLOR)--+-->(BLACK)---->+-->
	      |               ^
	      |-->(BLUE)----->|
	      |               |
	      |-->(CYAN)----->|
	      |               |
	      |-->(GREEN)---->|
	      |               |
	      |-->(MAGENTA)-->|
	      |               |
	      |-->(RED)------>|
	      |               |
	      |-->(WHITE)---->|
	      |               |
	      '-->(YELLOW)----'

C_COLOR sets the current color for construction geometry.  The current color is
the one given to newly created c_circles and c_lines.

Use C_LINE |color functions| END for new macros.
================================================================================
^C_LINE TWO_PTS HORIZONTAL VERTICAL PARALLEL PERPENDICULAR TAN_PT TAN2
^PT_ANG BISECT ANG_BISECT LINE
C_LINE command

	   ,-------------------------------------------------------------,
	   |                 ,--------------------------------,          |
	   v                 v                                |          |
->(C_LINE)-+-->(TWO_PTS)-----+-->|point 1|------>|point 2|--+----------+-->
	   |                 ^                                           ^
	   +---->------------'                                           |
	   |                                                             |
	   |                 ,--------------------------------,          |
	   |                 v                                |          |
	   '-->(HORIZONTAL)--+--+--->|point|-----+---------------------->'
	   |                    |                |                       |
	   |                    +---|distance|---+                       |
	   |                 ,--------------------------------,          |
	   |                 v                                |          |
	   '-->(VERTICAL)----+--+--->|point|-----+---------------------->'
	   |                    |                |                       |
	   |                    +---|distance|---+                       |
	   |                                                             |
	   |              ,---------------+<------------------,          |
	   |              | ,--<-----,    |                   |          |
	   |              | |        |    v                   |          |
	   '->(PARALLEL)--+-+-|dist|-+-->-+-|elem|---->|pnt|--+---+----->'
	   |              |                                       |      |
	   |              |                         +---<-----+   |      |
	   |              |                         |         |   |      |
	   |              '-------------->--|elem|--+->|pnt|--+---'      |
	   |                                                             |
	   |                                                             |
	   |                   ,------------------------------------,    |
	   |                   v                                    |    |
	   '-->(PERPENDICULAR)-+->|element pnt|-->-                 |    |
	   |                         ->--|pnt to drop the perpend.|-+--->'
	   |                                                             |
	   |              ,---------------------------------,            |
	   |              v                                 ^
	   '-->(TAN_PT)---+-->|app tang pnt|--+---|point|---+---------->-'
	   |                                  v             ^            |
	   |                                  '---|angle|---'            |
	   |                                                             |
	   |                ,-----------------------------------,        |
	   |                v                                   |        |
	   '-->(TAN2)-------+--|app tang pnt|-->|app tang pnt|--+------->'
	   |                                                             |
	   |                               ,---------------------------, |
	   |                               v                           | |
	   '-->(PT_ANG)-------+->|beg pnt|-+--+->|angle|--+------------+-'
	   |                                  |           |              |
	   |                                  '--|point|--'              |
	   |                   ,---------------------------------------, |
	   |                   v                                       | |
	   '->(BISECT)---------+>--+->----+-|beg pnt|-+-+-|end pnt|-+--+-'
	   |                       |                                     |
	   |                    (|frac|)                                 |
	   |                                                             |
	   |                   ,---------------------------------------, |
	   |                   v                                       | |
	   '->(ANG_BISECT)-----+-+--|center|-+->|pnt1|-+-+-|pnt2|--+---'-'
				 |           |         | |         |
			      (|frac|)       '-|angle|-' '-|angle|-'

C_LINE creates construction lines.

TWO_PTS creates a c_line through the two given points.

PARALLEL creates c_lines  parallel to a given c_line or line.   There  are  two
ways to use this option.   With method 1, you identify the element to which the
new c_lines should be parallel, then you indicate points through which the  new
c_lines  should  go.   With  method  2,  you  enter distances, then identify an
element, then indicate which side of the element is to  be  the  positive  one.
The distances are all measured from the existing element.

PERPENDICULAR  creates  a  c_line through the given point, perpendicular to the
given element.

TAN_PT makes a c_line tangential to the selected element and either through the
given point or at the given angle.  The approximate tangent point is used  both
to identify the element and to determine which tangent is desired.  The element
may be a c_circle, circle, arc, or fillet.

TAN2  creates  a  c_line  tangential  to two elements.   Again, the approximate
tangent points determine  which  tangent  is  desired.   The  elements  may  be
c_circles, circles, arcs, or fillets.

VERTICAL and HORIZONTAL create vertical or horizontal c_lines through the given
points or at the given distances from the origin.   Unlike  other  inputs  that
specify   angles,   VERTICAL  and  HORIZONTAL  are  independent  of  the  input
coordinate system.

PT_ANG creates a c_line through the given start point at the given angle, which
may also be specified by a point.

BISECT  creates  perpendicular  bisectors  if you omit the fraction or give the
fraction  0.5.   Otherwise,  the  resulting  c_line  is  perpendicular  to  the
(possibly  imaginary)  line  between the two given points, and the intersection
point is pnt1 + frac*(pnt2 - pnt1).

ANG_BISECT works like BISECT, except that it divides angles instead  of  lines.
After the optional fraction, you specify the vertex of the angle to be divided,
then, for each ray that forms the angle, either a point on the ray or the angle
formed by the ray.
================================================================================
^C_LINETYPE LINETYPE OLD
C_LINETYPE function (OLD)

-->(C_LINETYPE)--+-->(SOLID)-------->+-->
		 |                   |
		 |-->(DASHED)------->|
		 |                   |
		 |-->(LONG_DASHED)-->|
		 |                   |
		 |-->(DOT_CENTER)--->|
		 |                   |
		 |-->(DASH_CENTER)-->|
		 |                   |
		 |-->(PHANTOM)------>|
		 |                   |
		 |-->(LONG_DOTTED)-->|
		 |                   |
		 `-->(DOTTED)------->'

C_LINETYPE sets the  current  linetype  for  construction  geometry,  that  is,
c_circles and c_lines.   The current linetype is the one used for newly created
elements.

Use C_LINE |linepattern functions| END for new macros.
================================================================================
^DEFINE MACRO PARAMETER LOCAL END_DEFINE
DEFINE function

   |
   v
(DEFINE)
   |
   v
|macro name|
   |
   v
   +<--------------------------------+
   |                                 ^
   v                                 |
   +-->(PARAMETER)-->|param. name|-->+
   |
   v
   +<---------------------------------+
   |                                  ^
   v                                  |
   +-->(LOCAL)-->|local macro name|-->+
   |
   v
   +<------------+
   |             ^
   v             |
   +-->|token|-->+
   |
   v
(END_DEFINE)
   |
   v

DEFINE (re)defines the named macro.   See NAME for a description of permissible
macro names.  The same rules apply for names used with PARAMETER and LOCAL.

You invoke a macro without parameters by simply giving its name.   The computer
then evaluates the macro body.  The body can be any series of tokens that makes
sense in the context where the macro is used.   It might be a list of commands,
as in this example:

	DEFINE Quit
	  STORE ALL DEL_OLD 'workfile'
	  EXIT CONFIRM
	END_DEFINE

Or it might be a token that makes sense only in a larger context:

	DEFINE P
	  100,100
	END_DEFINE

A macro body can also invoke other macros, or even (re)define them.

A macro body should NOT contain calls to INPUT or TINPUT.   The system will not
complain about such macros, but they will not behave as you expect.

A macro with parameters is invoked by giving the macro name, then the values of
the named parameters.  These values may be expressions.  An example:

	definition:

	   DEFINE Double
	   PARAMETER p
	   (PNT_XY p p)
	   END_DEFINE

	invocation:

	   LINE Double 0 Double 100

This  example  defines  a macro "Double" which takes a number as parameter, and
whose evaluation produces a point with that number as both X and Y  coordinate.
Parentheses are required either in the definition or in the invocation, because
"PNT_XY p p" is an expression which is being used where a token is required.

A macro with parameters is normally used only  within  files  or  within  other
macros.   It is possible to invoke such macros from the keyboard, in which case
the system prompts the user for each parameter.   But usually, if a macro is to
get  input  from  the  user, it uses the READ function instead of the parameter
mechanism, both because of READ's extra flexibility, and  because  READ  always
reads from the user, regardless of the macro context.

Parameters  and names declared LOCAL are visible only within the current macro.
All other names are global.   Parameters and local names do not  conflict  with
global macros having the same name.

The other functions that define macros are LET and READ.

Between  DEFINE and END_DEFINE, and only there, any of the following constructs
may be used instead of a simple token:
================================================================================
^IF ELSE_IF ELSE END_IF
IF ... ELSE_IF ... ELSE ... END_IF construct

---->(IF)---->|boolean expression|---->+---------------->+---->+
				       ^                 |     |
				       |                 v     |
				       +<----|token|<----+     |
							       v
+<-------------------------------------------------------------+
|
v
+<-------------------------------------------------------------------+
|                                                                    ^
v                                                                    |
+---->(ELSE_IF)---->|boolean expression|---->+---------------->+---->+
|                                            ^                 |
|                                            |                 v
|                                            +<----|token|<----+
v
+---->(ELSE)---->+---------------->+---->+
|                ^                 |     |
|                |                 v     |
|                +<----|token|<----+     |
v                                        v
+<---------------------------------------+
|
v
+---->(END_IF)---->

The  boolean expressions are evaluated in order; if any expression is true, the
tokens  associated  with  it  are  executed,  and  this  terminates  the  whole
construct.  If a boolean expression evaluates to 0, it is considered false.  If
the  evaluation  is  non-zero,  it  is  considered true.   (Note that a boolean
expression can be constructed with numeric or string expressions  separated  by
relational operators, as well as with a numeric expression.)

The  last  ELSE part handles the 'none of the above' or default case where none
of the other conditions was satisfied.   Sometimes there is no explicit  action
for  the  default;  in that case the trailing ELSE can be omitted, or it may be
used for error checking to catch an 'impossible' condition.
================================================================================
^LOOP EXIT_IF END_LOOP
LOOP ... EXIT_IF ... END_LOOP construct

	      ,-----------------------------------------,
	      v                                         ^
--->(LOOP)--->+---------------|token|------------------>+--->(END_LOOP)--->
	      |                                         |
	      +----(EXIT_IF)-->|boolean_expression|---->+
	      |                                         |
	      '------------>----------------------------'

This construct defines a loop which is repeated until the boolean expression in
an EXIT_IF clause evaluates to be logical true (evaluates to a non-zero value).
Any number of EXIT_IF clauses may be placed within the construct to escape from
the loop.  The only restriction upon the placement of the  EXIT_IF  clauses  is
that  they  must  not be part of any other construct which is nested within the
LOOP ...  END_LOOP construct.
================================================================================
^REPEAT UNTIL
REPEAT ... UNTIL construct

--->(REPEAT)--->+-------------->+--->(UNTIL)--->|boolean expression|--->
		^               |
		|               v
		+<---|token|<---+

This construct defines a loop which is repeated until the boolean expression in
the  UNTIL clause evaluates to be logical true (evaluates to a non-zero value).
================================================================================
^WHILE END_WHILE
WHILE ... END_WHILE construct

--->(WHILE)--->|boolean expression|--->+-------------->+--->(END_WHILE)--->
				       ^               |
				       |               v
				       +<---|token|<---+

This construct defines a  loop  which  is  executed  as  long  as  the  boolean
expression  in  the  WHILE  clause evaluates to be logical true (evaluates to a
non-zero value).
================================================================================
^DEFINE_CATALOG CATALOG DEFINE FILE_NAME PHYS_NAME FILE_SIZE CREATE_DATE
^DEFINE_CATALOG MODIFY_DATE ACCESS_DATE NUM_ACCESS FILE_TYPE PROG_NAME
^DEFINE_CATALOG PROG_REV FILE_DESC

DEFINE_CATALOG function

		      +----------------->+
		      ^                  |
		      |                  v
-->(DEFINE_CATALOG)---+-->|display_text|-+->|item_name|-->+
							  |
		       +-----------------<----------------+
		       |
		       +-->|row|---->|column|------->


DEFINE_CATALOG defines what information is  to  be  printed  by  CATALOG.   The
number  of columns, their width, and their assignment to rows must already have
been specified with CATALOG_LAYOUT.   DEFINE_CATALOG tells CATALOG how to  fill
these fields.

The display text (a string) is the text printed at the top of the listing above
the  field  with  the  given row and column number.  Both row and column number
refer to the format for a single entry determined by CATALOG_LAYOUT, and not to
row and column numbers of the catalog listing itself.  The item name tells what
should be printed in the specified field.   Item names are strings, and must be
one of the following:

		FILE_NAME
		PHYS_NAME
		FILE_SIZE
		CREATE_DATE
		MODIFY_DATE
		ACCESS_DATE
		NUM_ACCESS
		FILE_TYPE
		PROG_NAME
		PROG_REV
		FILE_DESC

If the display text is omitted, the item name is used as the display text.

FILE_NAME is the name given by the user when the file was  created.   PHYS_NAME
is the name of the file used by the host operating system.   These are normally
the same, but can be different if the user creates a  file  using  a  name  not
acceptable to the host.   Within HP-ME this difference should be invisible, but
when you look at the directory from another program,  you  of  course  see  the
physical name.

FILE_SIZE is the size of the file in bytes.

CREATE_DATE, MODIFY_DATE, and ACCESS_DATE tell when the file was created,  last
modified,  and  last  accessed,  respectively.   The  output  is  in  the  form
'01-Jan-85 06:35:22'.

NUM_ACCESS tells how many times the file has been accessed.   When the file  is
created, NUM_ACCESS is 0.

FILE_TYPE gives the type  of  file,  as  seen  by  the  operating  system.  The
possibilities are:

	Block           Block special file
	Char            Character special file
	Dir             Directory
	Fifo            Fifo
	Netw            Network
	Reg             Regular file
	Srm             Shared Resource Manager
	?               Anything else

PROG_NAME and PROG_REV give the name and revision of the program that generated
the file.

FILE_DESC tells the type of information in the file.  The possibilities are:

	Catalog         from CATALOG
	Data            from OPEN_OUTFILE
	Echo            from ECHO
	Env             from SAVE_ENVIRONMENT
	Font.IL         from SAVE_FONT
	Font.BI         from STORE_FONT
	Gdump           from DUMP_SCREEN
	HPGL            from PLOT
	Text            from EDIT_FILE
	Macro.BI        from STORE_MACRO
	Macro.IL        from SAVE_MACRO
	Menu            from SAVE_MENU
	MI.log          MI log file
	Model.BI        from STORE
	Model.IL        from SAVE
	Model.MI        from STORE MI
	Part.lst        from PARTS_LIST
	Sys.cat         HP-ME catalog information (hp_catfile)
	Techo           from TECHO
	Tmenu           from SAVE_TMENU
	Trace           from TRACE
================================================================================
^DEFINE_FONT TEXT DEFINE FONT
DEFINE_FONT function

---->(DEFINE_FONT)---->|string|---->|underlength|---->|height|---->|width|---->

DEFINE_FONT  defines  a  new font with the given name.   It becomes the current
font.   Characters are specified with the CHAR_LAYOUT command, on an  imaginary
250  x  250  grid,  with the origin at the lower left.   In conventional fonts,
underlength is the distance on this grid from 0 to  the  bottom  of  a  capital
letter.   This  is  the length of descenders, as in 'g' or 'j'.   Height is the
height of capital letters, and width the default width, both specified in  grid
units.

A  typical  font  might have an underlength of 6, and height and width both 20.
In this case, CHAR_LAYOUT would specify that 'A' began at 0,6.   X values would
range from 0 to 20, and y values from 0 to 26.

A  font  need not contain letters; it may contain symbols, for example.   Thus,
the real significance of underlength, height, and width have nothing to do with
letters.    Underlength  specifies  the  text  baseline,  which  is  used   for
positioning  the  reference  point  with respect to the grid (see TEXT_ADJUST).
Height  and  width  specify  the  mapping  from  grid  units  to  user   units.
Vertically,  height  grid  units  are  mapped  to  the  text size (specified by
TEXT_SIZE).  Horizontally, width grid  units  are  mapped  to  the  text  width
(specified by TEXT_SIZE and TEXT_RATIO).
================================================================================
^DEFINE_KEY DEFINE KEY FUNCTIONKEY SOFTKEY CHARACTERS TEXT FONT CHR DIAMETER
^DEFINE_KEY DEGREE PLUSMINUS
DEFINE_KEY function

---->(DEFINE_KEY)---->|number|---->|string|---->

DEFINE_KEY defines a Special Function Key (other terms are Soft Key or Function
Key).   Number is the key number and must be in the range from 1 to 8.   String
is the string constant or string expression which is to be substituted for each
activation of the Special Function Key.

A common use for this function is to define the special function  keys  as  the
degree,  diameter and plus/minus signs.  These three characters are supplied in
most text fonts as the following characters:

  degree       #242
  diameter     #243
  plus/minus   #254

Therefore to define the special function keys  f1,  f2  and  f3  as  the  three
characters, you must enter:

  DEFINE_KEY 1 #242
  DEFINE_KEY 2 #243
  DEFINE_KEY 3 #254

You  can  now  press  the  respective  key each time you require the respective
dimension symbol when adding text to your drawing.
================================================================================
^DELETE UNDO
DELETE command

		,<------(UNDO)--------,
		|                     |
		|<--------------------|
		v                     |
-->(DELETE)--+--+------|select|-------+--+-->
	     |                           ^
	     '--->(ALL)-->(CONFIRM)------'

DELETE deletes the selected element(s).  Construction  lines  and  construction
circles are only deleted if you did not select any texts or other geometry like
lines, arcs or circles together with the construction geometry elements.

DELETE ALL CONFIRM deletes all elements in the active part.

If  you have deleted one or more elements, and you have not yet left the delete
command, the following two options are available:

 CANCEL restores all the deleted elements and exits.

 UNDO restores the element(s) most  recently  selected  for delete.

You can UNDO as much as you like, but only over the elements deleted during the
current  delete command.   Similarly, CANCEL restores only the elements deleted
during the current command.  Once you leave the command, it's too late.
================================================================================
^DELETE_CURRENT_INFO CURRENT_INFO DELETE CURRENT INFO
DELETE_CURRENT_INFO function

-->(DELETE_CURRENT_INFO)-->

DELETE_CURRENT_INFO deletes the current info.   The current info is that  added
to each new element.
================================================================================
^DELETE_DIMENSION DELETE DIMENSION
DELETE_DIMENSION command

		       ,--------------------------------------,
		       v                                      |
-->(DELETE_DIMENSION)--+--+-|pnt on dimension element|--------+------>
		       |                                      |
		       |                                      |
		       `-->--------(ALL)----(CONFIRM)---------'

DELETE_DIMENSION deletes the selected dimensions.

ALL CONFIRM deletes all dimensions in the active part.
================================================================================
^DELETE_ELEM_INFO DELETE ELEM INFO
DELETE_ELEM_INFO command

		      ,-----------,
		      v           |
-->(DELETE_ELEM_INFO)-+->|select|-+->

DELETE_ELEM_INFO deletes all info of the selected element(s).
================================================================================
^DELETE_FONT TEXT DELETE FONT
DELETE_FONT function

---->(DELETE_FONT)---->+---->|string|---------------+---->
		       |                            ^
		       +---->(ALL)---->(CONFIRM)----+

DELETE_FONT  deletes  the  definition of the font with the given name.  If this
font is used by any text, the system default font (boxes instead of characters)
is used thereafter.  The system default font 'hp_def_font' cannot be deleted.
================================================================================
^DELETE_HATCH DELETE HATCH
DELETE_HATCH command

		      ,<---(UNDO)-----------,
		      |                     |
		      |<--------------------|
		      v                     |
-->(DELETE_HATCH)--+--+--|select|-----------+-+-->
		   |                          ^
		   '-->(ALL)-->(CONFIRM)------'

DELETE_HATCH deletes the selected hatch.

ALL CONFIRM deletes all hatches in the active part.
================================================================================
^DELETE_LABEL DELETE LABEL NC
DELETE_LABEL command

		      +--(GLOBAL)-->+
		      |             |
---->(DELETE_LABEL)---+-------------+--->(CONFIRM)---->

DELETE_LABEL removes all label information generated by the LABEL command  from
the active part.  With the additional qualifier GLOBAL the label information is
removed from all parts.
================================================================================
^DELETE_MACRO DELETE MACRO
DELETE_MACRO function

---->(DELETE_MACRO)---->+---->|macro name|---->+---->
			|                      |
			+---->(ALL)------------+

DELETE_MACRO deletes the specified macro or ALL macros.
================================================================================
^DELETE_MENU DELETE MENU
DELETE_MENU function

---->(DELETE_MENU)---->

DELETE_MENU deletes the screen menu definition. As this function is mainly used
in  personality  macros  it does not automatically remove the menu from the crt
screen.
================================================================================
^DELETE_TMENU DELETE TABLET MENU
DELETE_TMENU function

-->(DELETE_TMENU)-->

DELETE_TMENU deletes the tablet menu definition.
================================================================================
^DELETE_VIEWPORT DELETE VIEWPORT
DELETE_VIEWPORT function

---->(DELETE_VIEWPORT)---->+---->|digitized point within a viewport|---->+---->
			   |                                             |
			   +---->|viewport id number|------------------->+
			   |                                             |
			   +---->(ALL)---------------------------------->+

DELETE_VIEWPORT deletes the specified viewport.   If ALL  is  given,  then  all
viewports are deleted. See CREATE_VIEWPORT for more information.
================================================================================
^DIMENSION
DIMENSION

For  help  with  dimensioning,  use  HELP  with  a  specific  command,  or HELP
DIMENSION, which brings you here, followed by the N  (Next)  command.  Using  N
will take you to the beginning of each block of dimension commands (e.g., those
beginning "DIM_" or "CHANGE_DIM_").

Dimensioning is always associated with one or more elements or vertices.   When
the elements are modified, the dimension text automatically adjusts to  reflect
the modification.   A consequence in the current implementation of this feature
is that you can only dimension within the active part.   Using, say,  DIM_LINE,
it  is not possible to dimension from one part to another.   An easy workaround
is to use the POINT command to create points where you want  the  dimension  to
go,  then  to  dimension  the  points.   A  (primitive)  macro to do this is as
follows:

	DEFINE Dim_parts
	  LOCAL p1
	  LOCAL p2
	  READ p1
	  READ p2
	  POINT p1 p2
	  DIM_LINE p1 p2
	END_DEFINE
================================================================================
^DIM_ANGLE DIMENSION
DIM_ANGLE command

		+------------------------------------+
		|                                    |
-->(DIM_ANGLE)--v---|point_1|--|point_2|--|point_3|--+--->

DIM_ANGLE creates an angle dimension.  You identify two lines, then a point for
the dimension text.  The lines may not be parallel and the location  point  may
not be at the intersection of the two lines.
================================================================================
^DIM_ARC
DIM_ARC command

	      +------------------------------------+
	      |                                    |
-->(DIM_ARC)--v---|point_1|--|point_2|--|point_3|--+--->

DIM_ARC creates an arc dimension.  You identify the end points of an arc (or of
two arcs, as long as they have the same center and  radius),  then  indicate  a
point for the dimension text.
================================================================================
^DIM_ARROW ARROW_TYPE DOT_TYPE SLASH_TYPE NONE ARROW DIMENSION
DIM_ARROW function

-->(DIM_ARROW) --+--(ARROW_TYPE)---+---->
		 |                 |
		 +--(DOT_TYPE)-----+
		 |                 |
		 +--(SLASH_TYPE)---+
		 |                 |
		 +--(NONE)---------+

DIM_ARROW  specifies  the  current  dimension  line  termination.   This is the
termination used for new dimensions.
================================================================================
^DIM_BROKEN
DIM_BROKEN function

-->(DIM_BROKEN) --+--(ON)---+---->
		  |         |
		  +--(OFF)--+

DIM_BROKEN tells how the dimension lines are to be drawn if the dimension  text
does  not  fit inside the dimension extension lines.   DIM_BROKEN ON means that
the dimension lines are not connected; DIM_BROKEN  OFF  means  that  they  are.
This applies to all new dimensions.
================================================================================
^DIM_CHAIN SHORT_BASE_LINE LONG_BASE_LINE HORIZONTAL VERTICAL PARALLEL
^AUTO MANUAL
DIM_CHAIN command

		 +---------------------------------------------------+
		 |                                                   |
		 |                                                   |
-->(DIM_CHAIN) --v---{1}--------------+----{2}--+-------+--------+---+-->
				      |         |       |        |
				      +----{3}--+       +-(UNDO)-+

{1}--->--------------+---->
      |              |
      +-(HORIZONTAL)-+
      |              |
      +-(VERTICAL)---+
      |              |
      +-(PARALLEL)---+

{2}--->--+(AUTO)+-|bpnt|--|epnt|--|lpnt|--+----->------+-->
	 v      ^                         v            ^
	 '------'                         | +---<----+ |
					  | |        | |
					  +-+-|epnt|-+-+

			   +--------<---------+
			   |                  |
{3}--->--(MANUAL)--|bpnt|--+--|epnt|--|lpnt|--+----->


DIM_CHAIN creates chain dimensioning.  The dimension between any two points may
be HORIZONTAL, VERTICAL or PARALLEL;  the default is  PARALLEL.   UNDO  removes
the dimension element most recently created.

With both MANUAL and AUTO, bpnt and epnt are the begin and end  points  of  the
dimension,  and  lpnt  is  the  location of the dimension line.  With AUTO (the
default), you give lpnt only once; the system then  automatically  chooses  the
lpnt  for  subsequent  dimensions.   With  MANUAL,  you  give  an lpnt for each
dimension.  It is possible to mix AUTO and MANUAL within the same command.
================================================================================
^DIM_COLOR COLOR DIMENSION OLD
DIM_COLOR function (OLD)

-->(DIM_COLOR)---|color|--->

DIM_COLOR changes the current dimension color.   This is the color used for all
new dimensions.

Use DIM_LINE |color functions| END for new macros.
================================================================================
^DIM_TEXT_COLOR COLOR DIMENSION TEXT

-->(DIM_TEXT_COLOR)---|color|--->

DIM_TEXT_COLOR changes the current dimension  text  color.   This  is  the
color used for all new dimension texts.
================================================================================
^DIM_CONVERT_UNIT UNITS
DIM_CONVERT_UNIT function

-->(DIM_CONVERT_UNIT)-----+---(MM)-----------------------------+---->
			  |                                    |
			  +---(INCHES)-------------------------+
			  |                                    |
			  +---(FRACT_INCH)---|number|----------+
			  |                                    |
			  +---(FT_FRACT_INCH)--|number|--------+
			  |                                    |
			  +---(MM_OVER_INCH)-------------------+
			  |                                    |
			  |                                    |
			  +---(INCH_OVER_MM)-------------------+

DIM_CONVERT_UNIT changes the units of all existing dimensions.  With FRACT_INCH
or  FT_FRACT_INCH,  you  specify the denominator of the inch fraction (2, 4, 8,
..., 128).
================================================================================
^DIM_DATUM DIM_ARROW ARROW
DIM_DATUM command

		 +---------------------------------------------------+
		 |                                                   |
		 |                                                   |
-->(DIM_DATUM) --v---{1}-----{2}------+----{3}--+-------+--------+---+-->
				      |         |       |        |
				      +----{4}--+       +-(UNDO)-+

{1}--->-------------------+---->
      |                   |
      +-(SHORT_BASE_LINE)-+
      |                   |
      +-(LONG_BASE_LINE)--+

{2}--->--------------+---->
      |              |
      +-(HORIZONTAL)-+
      |              |
      +-(VERTICAL)---+
      |              |
      +-(PARALLEL)---+


{3}--->--+(AUTO)+-|bpnt|--|epnt|--|lpnt|--+----->------+-->
	 v      ^                         v            ^
	 '------'                         | +---<----+ |
					  | |        | |
					  +-+-|epnt|-+-+

			   +--------<---------+
			   |                  |
{4}--->--(MANUAL)--|bpnt|--+--|epnt|--|lpnt|--+----->

DIM_DATUM creates datum dimensioning.  The dimension between any two points may
be  HORIZONTAL,  VERTICAL,  or PARALLEL; the default is PARALLEL.   The default
base line is LONG_BASE_LINE.  See also DIM_DATUM_STEP to define the datum step.
Use MANUAL to locate the dimension texts manually (default is AUTO).

With both MANUAL and AUTO, bpnt and epnt are the begin and end  points  of  the
dimension,  and  lpnt  is  the  location of the dimension line.  With AUTO (the
default), you give lpnt only once; the system then  automatically  chooses  the
lpnt  for  subsequent  dimensions.   With  MANUAL,  you  give  an lpnt for each
dimension.  It is possible to mix AUTO and MANUAL within the same command.

Enter DIM_DATUM_STEP 0 and  DIM_TEXT_ORIENTATION  PERPENDICULAR  to  place  the
created datum dimension texts over / under the dimension extension lines.

Use SHORT_BASE_LINE and no arrow type (DIM_ARROW NONE)  to  suppress  the  base
line entirely.
================================================================================
^DIM_DATUM_STEP
DIM_DATUM_STEP function

-->(DIM_DATUM_STEP)----|number|---->

DIM_DATUM_STEP specifies the space between  the  dimension  lines  of  a  datum
dimension.   This  value  is  used  for  new  datum dimensions, and can even be
changed within a DIM_DATUM command.
================================================================================
^DIM_DEC_PLACE
DIM_DEC_PLACE function

-->(DIM_DEC_PLACE)---|integer_number|--->

DIM_DEC_PLACE specifies the number of decimal places to be given in the text of
new   dimensions.   The   number   must   be   between  0  and  7.    See  also
DIM_2ND_DEC_PLACE.
================================================================================
^DIM_DEG_MIN_SEC
DIM_DEG_MIN_SEC function

-->(DIM_DEG_MIN_SEC)----+--(OFF)---+----->
			|          |
			`--(ON)----'

DIM_DEG_MIN_SEC determines how angles are written in new angle  dimensions.  ON
chooses degrees, minutes, and seconds;  OFF chooses decimal degrees.
================================================================================
^DIM_DIAMETER
DIM_DIAMETER command

		   +------------------------------------+
		   |                                    |
-->(DIM_DIAMETER)--v-----|point_1|-----|point_2|--------+--->

DIM_DIAMETER  creates a diameter dimension.   You first identify a circle, arc,
or fillet, then indicate the text location.  See also DIM_DIAMETER_LINE.
================================================================================
^DIM_DIAMETER_LINE
DIM_DIAMETER_LINE function

-->(DIM_DIAMETER_LINE)----+--(OFF)---+----->
			  |          |
			  `--(ON)----'

DIM_DIAMETER_LINE controls whether a diameter line is present (ON) or not (OFF)
in new diameter dimensions.
================================================================================
^DIM_FONT FONT
DIM_FONT function

-->(DIM_FONT)-->|font_name|-->

DIM_FONT specifies the font used to draw dimension text.  This font is used for
all dimensions, and must already be loaded.
================================================================================
^DIM_FRAME FRAME
DIM_FRAME function

---->(DIM_FRAME)---->+---->(ON)----->+---->
		     |               |
		     +---->(OFF)---->+

DIM_FRAME says whether a frame around the dimension text should be present (ON)
or absent (OFF).  This applies to new dimensions.
================================================================================
^DIM_FT_INCH_SIGN NO_SIGN FT_INCH_SIGN FT_INCH_TEXT
DIM_FT_INCH_SIGN function

-->(DIM_FT_INCH_SIGN)------+--(NO_SIGN)--------+------>
			   |                   |
			   +--(FT_INCH_SIGN)---+
			   |                   |
			   +--(FT_INCH_TEXT)---+

DIM_FT_INCH_SIGN controls how feet and inches  are  written  if  the  dimension
units  are  FRACT_INCH  or  FT_FRACT_INCH (see DIM_UNITS and DIM_CONVERT_UNIT).
This affects new dimensions.

For example, if the dimension value is 1 foot 6.5 inches, then
    NO_SIGN        1 - 6 1/2
    FT_INCH_SIGN   1' - 6 1/2"
    FT_INCH_TEXT   1 FT 6 1/2 IN
================================================================================
^DIM_LINE EXTENSION_LINE NO_EXTENSION_LINE
DIM_LINE command

		 +--------------------------------------------------+
		 |                                                  |
-->(DIM_LINE) ---v--------------------------------+----{1}---{2}----+--->
		   |                              |
		   +-(HORIZONTAL)-----------------+
		   |                              |
		   +-(VERTICAL)-------------------+
		   |                              |
		   +-(PARALLEL)--+---------^------+
				 |         |
				 +-|angle|-+

{1}-------+-------------------------+-------->
	  |                         |
	  +---(EXTENSION_LINE)------+
	  |                         |
	  +---(NO_EXTENSION_LINE)---+

{2}----->|point_1|-->|point_2|-->|point_3|-->

DIM_LINE creates line dimensions.   The dimension between any two points may be
HORIZONTAL, VERTICAL, or PARALLEL; the default is PARALLEL.  With PARALLEL, the
extension line angle can be set between -60 and 60 degrees; the  default  is  0
degrees, producing the usual perpendicular extension lines.   NO_EXTENSION_LINE
suppresses the dimension extension (projection) lines; the default is EXTENSION
LINE.
================================================================================
^DIM_MIN_SPACE
DIM_MIN_SPACE function

-->(DIM_MIN_SPACE)----|number|---->

DIM_MIN_SPACE sets the minimum space between the  geometry  and  the  dimension
lines for new dimensions.
================================================================================
^DIM_NUMBER_FORMAT
DIM_NUMBER_FORMAT function

-->(DIM_NUMBER_FORMAT)---|'string'|--->

DIM_NUMBER_FORMAT specifies the format of all dimension  values.   By  example,
you choose:

 -- Decimal point or comma

 -- Right  zero  suppression  after  decimal  point.   For example, if zero
    suppression is selected, and 4 decimal places are printed, a  value  of
    23.1200 will appear as 23.12.

 -- Left zero suppression before decimal point if the value is less than 1.

The  string  must contain either a '.'  or a ',', signifying a decimal point or
comma.   If there are no digits to the left of the point or  comma,  left  zero
suppression  is  selected.   If  there  are  none  to  the  right,  right  zero
suppression is selected.

Examples:

 -- '1,'  means  decimal  comma,  left  zero  suppression  off,  right zero
    suppression on.

 -- '.2' means  decimal  point,  left  zero  suppression  on,  right   zero
    suppression off.

 -- '1.2' means  decimal  point,  left  zero  suppression  off,  right zero
    suppression off.
================================================================================
^DIM_OFFSET_LINE
DIM_OFFSET_LINE function

---->(DIM_OFFSET_LINE)---->|non_negative_number|---->

DIM_OFFSET_LINE specifies the offset of the dimension extension line  from  the
dimension line.  This applies to new dimensions.
================================================================================
^DIM_OFFSET_POINT
DIM_OFFSET_POINT function

---->(DIM_OFFSET_POINT)---->|non_negative_number|---->

DIM_OFFSET_POINT  specifies the offset of the dimension extension line from the
geometry.  This applies to new dimensions.
================================================================================
^DIM_POSTFIX TEXT_SCALE
DIM_POSTFIX function

-->(DIM_POSTFIX)-----+----------------------------+---|'string'|--->
		     |                            |
		     `---(TEXT_SCALE)---|number|--'

DIM_POSTFIX allows you to add a  postfix  string  to  a  dimension  text.  With
TEXT_SCALE,  you  can specify the scaling of the postfix relative to the normal
dimension text.

This function is only useful if you are  already  in  a  command  that  creates
dimensions (e.g.  DIM_LINE).  It applies only to the dimensions created by that
command.  You can execute DIM_POSTFIX outside of a dimensioning command, but it
has no effect then, as there is no "current postfix".
================================================================================
^DIM_PREFIX TEXT_SCALE
DIM_PREFIX function

-->(DIM_PREFIX)------+----------------------------+---|'string'|--->
		     |                            |
		     `---(TEXT_SCALE)---|number|--'

DIM_PREFIX  allows  you to add a prefix string to a dimension text.  TEXT_SCALE
has the same effect as in DIM_POSTFIX.   As with DIM_POSTFIX, this function  is
only useful inside commands that create dimensions.
================================================================================
^DIM_RADIUS
DIM_RADIUS command

		 +------------------------------------+
		 |                                    |
-->(DIM_RADIUS)--v-----|point_1|-----|point_2|--------+--->

DIM_RADIUS  creates a radius dimension.   You first identify an arc, circle, or
fillet, then indicate the dimension text location.  See also DIM_RADIUS_LINE.
================================================================================
^DIM_RADIUS_LINE
DIM_RADIUS_LINE function

-->(DIM_RADIUS_LINE)----+--(OFF)---+----->
			|          |
			`--(ON)----'

DIM_RADIUS_LINE specifies how new radius dimensions are drawn.  ON  means  that
the  radius  line  is extended to the center; OFF, that it stops at the element
being dimensioned.
================================================================================
^DIM_SCALE
DIM_SCALE function

-->(DIM_SCALE)---|scale_number|---------->

DIM_SCALE changes the dimension scaling, which applies to all  dimensions.  For
example, if  the calculated dimension value is 10 and the dimension scale is 2,
then the printed dimension value will be 20.
================================================================================
^DIM_2ND_DEC_PLACE
DIM_2ND_DEC_PLACE function

-->(DIM_2ND_DEC_PLACE)---|integer_number|--->

DIM_2ND_DEC_PLACE specifies the number of decimal places  to  be  used  in  the
second value of new dual dimensions.   The number must be between 0 and 7.  See
DIM_DEC_PLACE.
================================================================================
^DIM_2ND_NUMBER_FORMAT
DIM_2ND_NUMBER_FORMAT function

-->(DIM_2ND_NUMBER_FORMAT)---|'string'|--->

DIM_2ND_NUMBER_FORMAT specifies the format of the second dimension value in new
dual  dimensions.     For   the   meaning   of   the   argument   string,   see
DIM_NUMBER_FORMAT.
================================================================================
^DIM_TEXT_HOLE HATCH
DIM_TEXT_HOLE command

		      ,--------------,
		      |              |
		      v              |
-->(DIM_TEXT_HOLE)-->-+--->|point|---+-->

DIM_TEXT_HOLE  makes  holes  in  an existing hatch for the identified dimension
texts.  Later changes to the dimension text do not affect the size of the hatch
hole.
================================================================================
^DIM_TEXT_LOCATION BELOW ON ABOVE
DIM_TEXT_LOCATION function

-->(DIM_TEXT_LOCATION)-----+---(BELOW)---+----->
			   |             |
			   +---(ON)------+
			   |             |
			   +---(ABOVE)---+

DIM_TEXT_LOCATION specifies that the text for new dimensions should  be  below,
on, or above the dimension line.
================================================================================
^DIM_TEXT_ORIENTATION HORIZONTAL PERPENDICULAR PARALLEL
DIM_TEXT_ORIENTATION function

-->(DIM_TEXT_ORIENTATION)-----+---(HORIZONTAL)------+----->
			      |                     |
			      +---(PERPENDICULAR)---+
			      |                     |
			      +---(PARALLEL)--------+

DIM_TEXT_ORIENTATION  specifies the orientation of the texts of new dimensions.
They may be horizontal, or parallel to the dimension line, or perpendicular  to
it.
================================================================================
^DIM_TEXT_RATIO DIM_TEXT_SIZE WIDTH HEIGHT SIZE
DIM_TEXT_RATIO function

-->(DIM_TEXT_RATIO)-->(positive_number)-->

DIM_TEXT_RATIO  specifies  the  ratio  between  text  width  and  height in new
dimensions.  The height is determined by DIM_TEXT_SIZE.
================================================================================
^DIM_TEXT_SIZE SIZE HEIGHT
DIM_TEXT_SIZE function

-->(DIM_TEXT_SIZE)-->(positive_number)-->

DIM_TEXT_SIZE specifies the text height of new dimensions.
================================================================================
^DIM_TOLERANCE NO_TOLERANCE LIMIT UPPER_LOWER PLUS_MINUS TEXT_SCALE
DIM_TOLERANCE function

-->(DIM_TOLERANCE)-------+----(NO_TOLERANCE)---------------------+------>
			 |                                       |
			 +----(LIMIT)--|upper_tol|--|lower_tol|--+
			 |                                       |
			 +----(UPPER_LOWER)----{1}---------------+
			 |                                       |
			 +----(PLUS_MINUS)-----{2}---------------+

{1}-----+--------------------------+--+--|upper_tol|--+--+--|lower_tol|--+-->
	|                          |  |               |  |               |
	`--(TEXT_SCALE)--|number|--'  `--|'string'|---+  `--|'string'|---'

{2}-----+--------------------------+--+--|plus_minus_tol|--+--->
	|                          |  |                    |
	`--(TEXT_SCALE)--|number|--'  `--|'string'|--------'

DIM_TOLERANCE  selects  the  tolerance  type  used  for  new  dimensions.  With
UPPER_LOWER  or  PLUS_MINUS,  the  tolerance  value can be either a number or a
string containing up to 24 characters.  TEXT_SCALE specifies the ratio  between
the text size of the tolerance and that of the normal dimension value.

As  with  DIM_PREFIX  and  DIM_POSTFIX, this function is only useful if you are
already in a command that creates dimensions (e.g.  DIM_LINE).  It applies only
to the dimensions created by  that  command.   You  can  execute  DIM_TOLERANCE
outside  of  a  dimensioning command, but it has no effect then, as there is no
"current tolerance".
================================================================================
^DIM_UNITS UNITS
DIM_UNITS function

-->(DIM_UNITS)-----+---(MM)-----------------------------+---->
		   |                                    |
		   +---(INCHES)-------------------------+
		   |                                    |
		   +---(FRACT_INCH)-----|number|--------+
		   |                                    |
		   +---(FT_FRACT_INCH)----|number|------+
		   |                                    |
		   +---(MM_OVER_INCH)-------------------+
		   |                                    |
		   |                                    |
		   +---(INCH_OVER_MM)-------------------+

DIM_UNITS changes the units  used  for  new  dimensions.   With  FRACT_INCH  or
FT_FRACT_INCH,  you specify the denominator of the inch fraction (2, 4, 8, ...,
128).
================================================================================
^DISPLAY
DISPLAY function

---->(DISPLAY)---->|token|---->

DISPLAY evaluates a token, displays the result in the display  line,  and  then
waits  for  the  user to press any key or to digitize any point with the tablet
stylus.   Token may be a number, a point, a string, a macro name,  a  name,  an
expression, ...
================================================================================
^DISPLAY_NO_WAIT
DISPLAY_NO_WAIT function

---->(DISPLAY_NO_WAIT)---->|token|---->

DISPLAY_NO_WAIT  evaluates a token and displays the result in the display line.
It does not wait  for  any  user  action,  and  the  displayed  value  will  be
overwritten by the prompt of the next input request.   Token may be a number, a
point, a string, a macro name, a name, an expression, ...
================================================================================
^DOT_GRID CS GRID
DOT_GRID function

	       ,--------------------------------,
	       |                                |
	       v                                |
--->(DOT_GRID)-+->|point or viewport number|----+-->+-->(ON)---,
	       |                                ^   |          |
	       +->(ALL)-------------------------+   '-->(OFF)--+-->
	       |                                |
	       '------------------------------->'

DOT_GRID turns the dot grid  on or off  in the  specified  viewport(s) . If no
viewport is  specified  the grid is  turned on or off in the current viewport .

The location of the grid points is determined by the input  coordinate  system,
set  by  the  commands  beginning  with  "CS_",  and  the  grid spacing, set by
GRID_FACTOR.   You can catch to the grid if the catch mode is ALL or GRID;  see
CATCH for more information.

The  drawing  of  the  grid is suppressed in viewports where there are too many
grid points.
================================================================================
^DRAWING_SCALE SCALE SYMBOL TEXT DIMENSION PLOT
DRAWING_SCALE function

--->(DRAWING_SCALE)--->|scale factor|--->

     scale factor: number

DRAWING_SCALE scales the geometry with respect to  the  plotter  paper  by  the
specified factor.  Texts, dimensioning text, and symbols are not changed.
================================================================================
^DUMP_SCREEN PRINT
DUMP_SCREEN function

---->(DUMP_SCREEN)---->+------------------>+---->|string|---->
		       |                   |
		       +---->(DEL_OLD)---->+
		       |                   |
		       +---->(APPEND)----->+

DUMP_SCREEN  writes  the contents of the graphics screen to the specified file.
This file may be a printer.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified already exists, the information will be
    appended to the end of the file, otherwise a new file is created.
================================================================================
^ECHO
ECHO function

---->(ECHO)---->+------------------>+---->+---->|filename|--->+---->
		|                   |     |                   |
		+---->(DEL_OLD)---->+     +------>(OFF)------>+
		|                   |
		+---->(APPEND)----->+

ECHO  opens  or  closes the ECHO file.   If an ECHO file is open, a copy of all
user input is written there.

With OFF, the current ECHO file is closed.   With a filename, the current  ECHO
file  is closed and a new one with the given name is opened.   The filename may
specify a disc file or a device file.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified already exists, the information will be
    appended to the end of the file, otherwise a new file is created.

The ECHO file is in a form readable by INPUT.   However, INPUTting an ECHO file
does  not  as  a rule produce the same results as the actions that produced the
ECHO file.   The primary reason is that points  are  represented  in  the  file
without  any  indication  of the viewport in which they were digitized.   Since
digitized points are transformed by catching, while points read with INPUT  are
not,  the  effect is different.   Another reason is that user syntax errors are
written to the ECHO file along with correct input.   If a file  with  a  syntax
error  is later read by INPUT, the syntax error will cause the rest of the file
to be discarded.
================================================================================
^EDITOR CONFIGURE_EDITOR SCREEN MARKERS AC AF AJ C D H L M O R SE SL SM SR W
EDITOR

This section describes the built-in screen editor, invoked by many commands.

  MARKERS:
  ^                                         first line
  .                                         current line
  !                                         last line
  0..9                                      user defined


  COMMANDS:
  marker                                     go to marked line
  'string'                                   go to next occurrence of 'string'
  ? ['keyword']                              display help
  AC                                         adjust center paragraph
  AF                                         adjust fill paragraph
  AJ                                         adjust justify paragraph
  C marker1 marker2                          copy text block
  D marker                                   delete text block
  H ['keyword']                              display help
  L 'filename'                               load 'filename'
  M marker1 marker2                          move text block
  N                                          repeat last 'string' search
  O 'filename' [marker]                      (over)write 'filename'
  R [V] ['string1' ['string2']] [marker]     replace 'string1' with 'string2'
  SE 'character'                             set command escape character
  SL                                         set left margin
  SM 0..9                                    set marker
  SR                                         set right margin
  W 'filename' [marker]                      write 'filename'


To exit the editor normally, press CONTROL D.  To abort  the  editing  session,
producing an unsuccessful exit, press ESC or BREAK.

To add or change  text,  move the  cursor to the right  place and type. You can
also use the keys labeled INS LN, DEL LN, and so on.

To enter an editor command, type the command escape character, normally $. This
puts the  cursor on the  command  input  line,  ready to accept a command.  The
commands are described in the following paragraphs.

A marker alone  positions  the cursor at column 1 on the marked line. The three
markers ^, ., and ! mark the first, current, and last lines, respectively. They
are always  defined, and cannot be changed. The digits 0 to 9 are user markers.
They are  undefined  when you enter the screen  editor, but may be set with the
Set  Marker  command.  If a line with a user  marker is  deleted,  that  marker
becomes undefined.

A  string  alone  positions  the  cursor  at the  first  character  of the next
occurrence  of the string.  Strings  must be delimited by any non  alphanumeric
character ( ^ . ! ? and the command escape  character may not be used). In this
document single quotes are used to delimit strings.

The ? command  displays the manual section  describing the given keyword. If no
keyword is specified,  then the manual section  describing the screen editor is
displayed. Leaving the manual causes the editor to resume execution.

The Adjust Center command  centers each line of the current  paragraph  between
left and right  margins.  Paragraphs  are  sections of text  delimited by blank
lines.

The Adjust Fill  command  fills the current  paragraph  between  left and right
margins, moving words between lines as necessary. It provides a smooth left and
a ragged right  margin. The  indentation  of the first line of the paragraph is
not changed. Paragraphs are sections of text delimited by blank lines.

The Adjust  Justify  command first does the same as the Adjust Fill command. It
then uses an  intelligent  algorithm to insert blanks until all lines extend to
the right margin. Paragraphs are sections of text delimited by blank lines.

The Copy command  copies the text block from and  including the current line to
and  including the line marked by marker1. The copy is inserted  after the line
marked by marker2.

The Delete  command  deletes the text block from and including the current line
to and including the line marked by marker.

The Help command is exactly the same as the ? command.

The Load  command  inserts  the text  stored in the  specified  file  after the
current line.

The Move command  moves the text block from and  including  the current line to
and  including  the line marked by marker1.  The new location is after the line
marked by marker2. Source and destination must not overlap.

The Next command repeats the last string search.

The Overwrite command writes the text block from and including the current line
to and  including  the line  marked  by  marker  to the  specified  file. If no
destination marker is specified, then the whole file is written,  regardless of
where the cursor is. Any old file with the same name is lost.

The Replace command  replaces  'string1' with 'string2'. 'V' enables the Verify
option.  If Verify is on, you can  choose  whether or not to make a  particular
replacement.  'string1'  defaults  to the last used  search  string.  'string2'
defaults to the last used  'string2'.  If no  destination  marker is specified,
then only a single  replacement is done,  otherwise all strings from the cursor
up to the end of the marked line are replaced.

The Set Escape  command  redefines the command escape  character. Any character
except  (0..9,  A..Z,  a..z, ^, ., !, ?) may be used.  The new  command  escape
character stays in effect until the HP-ME session is terminated. Termination of
the  screen  editor  only does not cause the  command  escape  character  to be
changed. The initial value of the command  escape  character (at system startup
time) is $.

The Set  Left  margin  command  sets  the left  margin  to the  current  cursor
position. Margins are used by the adjust paragraph commands.

The Set Marker command sets the specified marker to the current line.

The Set  Right  margin  command  sets the right  margin to the  current  cursor
position. Margins are used by the adjust paragraph commands.

The Write  command is exactly like the Overwrite  command,  except that it does
not allow you to overwrite an existing file.

The  command  escape  character  may be used as  delimiter  between  two editor
commands given on the same line to resolve ambiguities. Example:

      W 'myfile' $ 1

This writes the whole file to 'myfile' and then positions  the  cursor  on  the
line marked by marker 1.
================================================================================
^EDIT_CURRENT_INFO CURRENT_INFO CURRENT INFO
EDIT_CURRENT_INFO function

-->(EDIT_CURRENT_INFO)-->

EDIT_CURRENT_INFO  enters  the  built-in  editor (see EDITOR) and allows you to
edit the current info, which is the info assigned to  every  new  element.   An
unsuccessful  (SHIFT-EXECUTE  or  STOP) exit from the editor leaves the current
info unchanged.
================================================================================
^EDIT_DIM_POSTFIX DIMENSION POSTFIX
EDIT_DIM_POSTFIX command

-->(EDIT_DIM_POSTFIX)-->|point|-->

EDIT_DIM_POSTFIX  allows  you  to  edit the postfix of the identified dimension
text.  It is not possible to add a postfix to a dimension created without one.
================================================================================
^EDIT_DIM_PREFIX PREFIX
EDIT_DIM_PREFIX command

-->(EDIT_DIM_PREFIX)-->|point|-->

EDIT_DIM_PREFIX allows you to edit the prefix of the identified dimension text.
It is not possible to add a prefix to a dimension created without one.
================================================================================
^EDIT_DIM_TEXT
EDIT_DIM_TEXT command

-->(EDIT_DIM_TEXT)-->|point|-->

EDIT_DIM_TEXT allows you to edit the identified  dimension  text.  An  unedited
text  displays  a  value  that automatically adjusts to changes in the attached
geometry; naturally an edited text does not have this feature.  To convert back
to the original state, see CANCEL_EDIT_DIM_TEXT.
================================================================================
^EDIT_DIM_TOLERANCE TOLERANCE
EDIT_DIM_TOLERANCE command

			 ,-----------------------------------,
			 v                                   |
-->(EDIT_DIM_TOLERANCE)--+--+-------------------+-->|point|--+--->
			    |                   ^
			    `-->(NO_TOLERANCE)--'

EDIT_DIM_TOLERANCE allows you to edit the tolerance of the identified dimension
text.  It is possible to add a tolerance to a  dimension  created  without  one
by executing DIM_TOLERANCE before you identify the dimension.
NO_TOLERANCE provides you  to remove  the existing tolerance of the  identified
dimension.
================================================================================
^EDIT_ELEM_INFO INFO
EDIT_ELEM_INFO command

		     ,------------------,
		     v                  |
-->(EDIT_ELEM_INFO)--+--->|id pnt|----->+-->
		     |                  ^
		     '--->|partname|----'

EDIT_ELEM_INFO allows you to edit the info of the identified element, using the
built-in editor (see EDITOR).   An unsuccessful exit  (SHIFT-EXECUTE  or  STOP)
leaves the info as it was.

If you identify the element with id_pnt, it need not be in the active part.  If
you use a partname the part can be anywhere.
================================================================================
^EDIT_ENVIRONMENT ENVIRONMENT
EDIT_ENVIRONMENT function

---->(EDIT_ENVIRONMENT)---->

EDIT_ENVIRONMENT allows you to edit a  list  of  commands  that  establish  the
current  environment  (dimension  defaults,  units,  hatch  pattern, etc.).  An
unsuccessful exit (STOP or SHIFT-EXECUTE) leaves the environment unchanged.   A
successful exit causes the equivalent of an INPUT of the edited list.
================================================================================
^EDIT_FILE FILES
EDIT_FILE function

---->(EDIT_FILE)---->|filename|--->

EDIT_FILE allows you to edit the named text file with the built-in editor  (see
EDITOR).
================================================================================
^EDIT_MACRO MACRO
EDIT_MACRO function

---->(EDIT_MACRO)---->+---->|macro name|---->+---->
		      |                      |
		      +---->(ALL)------------+

EDIT_MACRO  allows the named macro or all macros to be edited with the built-in
editor (see EDITOR).
================================================================================
^EDIT_PART PARENT TOP PARTS
EDIT_PART command

-->(EDIT_PART)--+->|part name|-----+-->
		|                  ^
		|--->|point|------>|
		|                  |
		|--->(PARENT)----->|
		|                  |
		'----->(TOP)-------'

EDIT_PART changes the active part to the  one  designated.   This  is  required
before you can change (add, delete, modify)  elements in that part.

When  followed  by a part name (string), it changes the active part to the part
with that name.

With PARENT, the new active part is the parent of the old one.   If there is no
parent (i.e.,  you are already at the top of the drawing), EDIT_PART PARENT has
no effect.

With TOP, the new active part is the top of the  drawing,  also  known  as  the
root.

With  the  point  option,  you pick either a boxed part, which then becomes the
active part, or any other type of element, in which case  the  part  containing
that element becomes the active part.

The name of the active part is shown in the status line, along with  the  level
number,  measuring  from the top, which is at level 0.   An 'S' in place of the
level number means that the part is shared.

A side effect of EDIT_PART is that all parts with no elements are automatically
deleted.   (Since parts are elements, a part containing a part is not  a  "part
with  no  elements".)    The  two  exceptions are the top part, which cannot be
deleted, and the part you want to edit.   For example, suppose you are  not  in
the top part, and you say DELETE ALL CONFIRM.  The active part, say 'X', is now
empty.   As  soon  as  you move out of 'X' with EDIT_PART, 'X' will be silently
deleted.   Another example:  you use GATHER (without the COPY option) to  bring
everything from part 'Y' into the active part 'X'.   Part 'Y' is now empty, but
it will not be deleted until the next EDIT_PART.  Furthermore, if you have made
a mistake, and realize this, you can always say EDIT_PART 'Y'  and  gather  the
elements back where they belong.
================================================================================
^EDIT_TEXT TEXT
EDIT_TEXT command
		     ,-----------------,
		     v                 |
---->(EDIT_TEXT)---->+---->|point|---->+---->

EDIT_TEXT  allows you  to  edit  the  identified text in the screen editor (see
EDITOR).
================================================================================
^ELLIPSE ELL_VVP ELL_CAR ELL_CPP
ELLIPSE macro

-->(Ell_vvp)-->|end of axis|--->|other end of axis|-->|periph pt|---->

-->(Ell_car)-->|center|-->|maj axis ang|-->|maj rad|-->|min rad|---->

-->(Ell_cpp)-->|center|-->|periph pt|-->|periph pt|---->

ELLIPSE draws splines that approximate ellipses.

With Ell_vvp you indicate opposite points of an axis (major or minor),  then  a
peripheral point.

With  Ell_car,  you  indicate a center point, then the angle of the major axis,
then the major and minor radius.

With Ell_cpp, you indicate the center point and two peripheral points.

It  is  not  possible to draw elliptical arcs directly; you must first draw the
ellipse, then convert it to a biarc with CONVERT_SPLINE, then delete  what  you
don't want, possibly SPLITting elements in the process.

ELLIPSE is actually only the name of a menu slot; the three  macros  are  named
Ell_vvp, Ell_car, and Ell_cpp.
================================================================================
^END
END command

---->(END)---->

END terminates the current command or function.   If you are in a function that
has interrupted another function or  command,  it  is  only  this  most  recent
function that is terminated.
================================================================================
^END_PART PARTS
END_PART command

--->(END_PART)--->

END_PART is exactly the same as EDIT_PART PARENT.
================================================================================
^ENTER
ENTER function

---->(ENTER)---->|token|---->

ENTER evaluates a token and puts the result of the evaluation in  the  keyboard
entry  line  for  further  editing  and usage.   Token may be a number, a point
(which is not caught, even if it comes from the tablet or mouse), a  string,  a
macro name, a name, an expression, ...
================================================================================
^EQUIDISTANCE CONTOUR PARALLEL
EQUIDISTANCE command

		   ,--------------------------------------------------,
		   |    ,-------------------------------------------, |
		   |    |       ,-------------,                     | |
		   v    v       v              |                    | |
->(EQUIDISTANCE)->-+|d|-+->|p0|-+-+->|cmpnt|-+-+->(END)->|side|-+---+-+-->
				  v          ^                  |
				  '--(UNDO)--'                (UNDO)

EQUIDISTANCE creates equidistance / parallel contour.

First enter the distance value  d  which the  parallel contour will take,  then
specify the reference contour by identifying the start point p0 of contour  and
contour elements.  The system will allow you  to skip elements along a contour,
as long as you do not skip more than one element past any branch points.
The included elements, these may be lines, arcs, fillets or circles, must be in
the active part.  For the case of open contour, enter  END  when the  reference
contour is defined.  Specify the side of parallel contour should be to complete
the input information.

Enter UNDO to remove the most recently created contour.
================================================================================
^EXIT
EXIT command

---->(EXIT)---->(CONFIRM)---->

The  EXIT  command  terminates  the  session,  returning  control  to  the host
operating system.  It must be CONFIRMed to prevent an accidental exit.
================================================================================
^EXPRESSIONS
expressions

An expression is a description of operations  to  be  performed  on  constants,
variables,  or  functions.   An  expression has a type and, after evaluation, a
value.   An expression may be used anywhere in the command syntax instead of  a
simple token if it is enclosed in parentheses.

Expressions are evaluated by following rules of precedence:

  (  )                                 highest
  any other operator/function             ^
  ^  **                                   |
  *  /  DIV  MOD  AND                     |
  +  -  OR  EXOR                          |
  =  <>  >  <  >=  <=                   lowest

Operations of same precedence are evaluated left to right.


Built-in functions and operators:

^(
(expression) ===> token

    An expression has to be  enclosed  in  parentheses  to  have  the  same
    meaning  as a simple token.   Parentheses may also be used to force any
    order of evaluation.

^*
number * number ===> number
number * point ===> point
number * point_3d ===> point_3d
point * number ===> point
point_3d * number ===> point_3d

    Multiplication of numbers, scaling of points (vectors).

^+
+ token ===> token
number + number ===> number
point + point ===> point
point_3d + point_3d ===> point_3d
string + string ===> string

    Identity  and  addition  for number and points (vectors), concatenation
    for strings.

^-
- number ===> number
- point ===> point
- point_3d ===> point_3d
number - number ===> number
point - point ===> point
point_3d - point_3d ===> point_3d

    Negation and subtraction.

^/
number / number ===> number
point / number ===> point
point_3d / number ===> point_3d

    Division of numbers, scaling of points (vectors).

^<
number < number ===> number
string < string ===> number

    Comparison for less than.  Returns 1 if true and 0 if false.

^<=
number <= number ===> number
string <= string ===> number

    Comparison for less than or equal to.  Returns 1 if true and 0 if false.

^<>
token <> token ===> number

    Comparison for inequality.  Returns 1 if true and 0 if false.

^=
token = token ===> number

    Comparison for equality.  Returns 1 if true and 0 if false.

^>
number > number ===> number
string > string ===> number

    Comparison for greater than.  Returns 1 if true and 0 if false.

^>=
number >= number ===> number
string >= string ===> number

    Comparison  for  greater than or equal to.   Returns 1 if true and 0 if
    false.

^^ **
number ^ number ===> number
number ** number ===> number

    Exponentiation.  The first number must be positive.

^ABS
ABS number ===> number
ABS point ===> number
ABS point_3d ===> number

    Returns the absolute value of the number argument or the length of  the
    vector from the origin to the argument point.

^AND
number AND number ===> number

    Returns 1 if both arguments are different from 0, otherwise returns 0.
^ANG
ANG point ===> number

    Returns the angle between the X axis and the vector from the origin  to
    the argument point.  As always, the current angle units are used.

^ARCCOS
ARCCOS number ===> number

    Returns  the  principal  value of the angle which has a cosine equal to
    the argument.  As always, the current angle units are used.

^ARCSIN
ARCSIN number ===> number

    Returns the principal value of the angle which has a sine equal to  the
    argument.  As always, the current angle units are used.

^ARCTAN
ARCTAN number ===> number

    Returns  the  principal value of the angle which has a tangent equal to
    the argument.  As always, the current angle units are used.

^CHR
CHR number ===> string

    Returns a single character string which has an ordinal value defined by
    the argument.

^COS
COS number ===> number

    Returns the cosine of the argument.  As always, the current angle units
    are used.

^DATE TIME
DATE ===> string

    Returns date and time in the following format: '26-Oct-85 10:26:58'.

^DIV
number DIV number ===> number

    Returns the integer portion of the quotient of  the  dividend  and  the
    divisor.

^EXOR
number EXOR number ===> number

    Returns 1 if one and only one argument equals 0, otherwise returns 0.

^EXP
EXP number ===> number

    Returns e (2.718...) raised to the power of the argument.

^FALSE
FALSE ===> number

    Returns 0.

^FRACT
FRACT number ===> number

    Returns  a  number  greater  than  or  equal  to  zero and less than 1,
    representing the 'fractional part' of the value of  its  argument.  For
    all X, X = INT X + FRACT X

^INQ INQ_ENV INQ_ELEM MEASURE MEASURE_COORDINATE MEASURE_LENGTH
^INQ MEASURE_ANGLE MEASURE_DISTANCE MEASURE_RADIUS MEASURE_AREA READ
INQ <inq_index> ===> number              (inq_index =   1 -    9)
		     point               (inq_index = 101 -  109)
		     point_3d            (inq_index = 201 -  209)
		     string              (inq_index = 301 -  309)
		     command             (inq_index = 401 -  409)
		     function            (inq_index = 501 -  509)
		     option              (inq_index = 601 -  609)
		     arithmetic function (inq_index = 801 -  809)

    inq_index:  number, range see above

    INQ returns an element of a built-in system array.  The possible values
    for  the  index  and  the resulting types are shown in the above table.
    For example, (INQ 5) is a number and (INQ 105) is a point.

    INQ is useful only in connection with a function that writes  something
    into  the array; you call one of these functions first, then use INQ to
    retrieve the information.   Once the information has been  written,  it
    can  be  retrieved  any  number  of  times (as long as you don't call a
    function that overwrites it, of course).   It is an error to attempt to
    retrieve  information  from  a slot that has not been written.   INQ is
    intended for use primarily in macros.

    The following functions are writing into the array:

      INQ_ELEM
      INQ_ENV
      MEASURE_ANGLE
      MEASURE_AREA
      MEASURE_COORDINATE
      MEASURE_DISTANCE
      MEASURE_LENGTH
      MEASURE_RADIUS
      READ

    The action of these functions (with respect to  the  system  array)  is
    described  below;  the  action  of INQ_ENV and INQ_ELEM is described in
    their individual sections.   Each description gives an array index, and
    tells what information is written at this index.

implicit value settings:
-----------------------

+----------------------------------------------------------------------------+
| function/command   | <inq_index> | result                                  |
+--------------------+-------------+-----------------------------------------|
|MEASURE_COORDINATE  |      1      | 101 (implicit inq code)                 |
|                    |    101      | point                                   |
+--------------------+-------------+-----------------------------------------|
| MEASURE_DISTANCE   |      1      | 102 (implicit inq code)                 |
|                    |      2      | 0 distance measure mode direct          |
|                    |             | 1 distance measure mode horizontal      |
|                    |             | 2 distance measure mode vertical        |
|                    |      3      | last measured distance                  |
+--------------------+-------------+-----------------------------------------|
|  MEASURE_LENGTH    |      1      | 103 (implicit inq code)                 |
|                    |      2      | last measured length                    |
+--------------------+-------------+-----------------------------------------|
|   MEASURE_ANGLE    |      1      | 104 (implicit inq code)                 |
|                    |      2      | last measured angle                     |
+--------------------+-------------+-----------------------------------------|
|   MEASURE_AREA     |      1      | 105 (implicit inq code)                 |
|                    |      2      | last measured area                      |
+--------------------+-------------+-----------------------------------------|
|   MEASURE_RADIUS   |      1      | 106 (implicit inq code)                 |
|                    |      2      | last measured radius                    |
+--------------------+-------------+-----------------------------------------|
|   READ             |      1      | 110 (implicit inq code)                 |
|                    |      2      | digitized viewport (0..16)              |
+----------------------------------------------------------------------------+

^INT
INT number ===> number
INT point ===> point
INT point_3d ===> point_3d

    Returns  the  greatest integer which is less than or equal to the value
    of its argument.  For all X, X = INT X + FRACT X

^LEN
LEN string ===> number
LEN point ===> number
LEN point_3d ===> number

    Returns the length of a string or the length of  the  vector  from  the
    origin to the argument point.

^LG
LG number ===> number

    Returns the decimal logarithm (base 10) of its argument.

^LN
LN number ===> number

    Returns the natural logarithm (base e) of its argument.

^LWC
LWC string ===> string

    Returns  a  string  formed  by  replacing any uppercase characters with
    their corresponding lowercase character.

^MIRR MIRROR
MIRR point number ===> point

    Returns the point (vector)  mirrored about a virtual mirror line.   The
    angle between the X axis and this virtual mirror line is  specified  by
    number.  As always, the current angle units are used.

^MOD
number MOD number ===> number

    Returns the remainder of a division.  For all X, X MOD Y = X-(X DIV Y)*Y.

^NOT
NOT number ===> number

    Returns 1 if the argument equals 0, and otherwise returns 0.

^NUM
NUM string ===> number

    Returns the ordinal value  of  the  first  character  in  the  argument
    string.

^OR
number OR number ===> number

    Returns  1  if  one  or  both arguments are different from 0, otherwise
    returns 0.

^PI
PI ===> number

    Returns an approximate value for pi (~3.14159265358979).

^PNT_RA
PNT_RA number number ===> point

    Returns  a  2d point (vector) with a length defined by the first and an
    angle to the X axis defined by the second argument.

^PNT_XY
PNT_XY number number ===> point

    Returns a 2d point (vector) with a x-coordinate defined  by  the  first
    and a y-coordinate defined by the second argument.

^PNT_XYZ
PNT_XYZ number number number ===> point_3d

    Returns  a 3d point (vector) with an x-coordinate defined by the first,
    a y-coordinate defined by the second, and a z-coordinate defined by the
    third argument.

^POS
POS string string ===> number

    Returns the first position of a substring (second  argument)  within  a
    string  (first  argument).  If  the  substring  is not contained in the
    string, returns 0.

^RND
RND ===> number

    Returns  a  pseudo-random number greater than or equal to zero and less
    than 1.

^ROT ROTATE
ROT point number ===> point

    Returns the point (vector) rotated about the origin (0,0) by the  given
    angle.  As always, the current angle units are used.

^ROUND
ROUND number ===> number
ROUND point ===> point
ROUND point_3d ===> point_3d

    Returns the argument value rounded to the nearest integer value.

^RPT
RPT string number ===> string

    Returns a string containing number copies of the string argument.

^SGN
SGN number ===> number

    Returns -1 if the argument is negative, 0 if the argument is 0,  and  1
    if the argument is positive.

^SIN
SIN number ===> number

    Returns the sine of the argument.  The current angle units are used.

^SNID
SNID ===> string

    Returns  the  product  number and the serial number of a HPHIL security
    device or of the computer if no HPHIL security device is  present.   If
    there  is more than one security device, SNID returns the number of the
    last one on the loop.

^SQR
SQR number ===> number

    Returns the argument value multiplied by itself.

^SQRT
SQRT number ===> number

    Returns the square root of its argument.

^STR
STR token ===> string

    Returns  in  a  string  the ASCII representation of the argument.   The
    reverse function of STR is VAL.

^SUBSTR
SUBSTR string number number ===> string

    Returns  a  substring  of  a  string  (first argument), starting at the
    position defined by the second argument and having a length defined  by
    the  third argument.   The first character is at position 1.   It is an
    error (beep) if either number is out of range.

^TAN
TAN number ===> number

    Returns the tangent of the argument.   As  always,  the  current  angle
    units are used.

^TIME DATE
TIME ===> number

    Returns the number of seconds since midnight.

^TRIM
TRIM string ===> string

    Returns  a  string  formed by stripping all leading and trailing blanks
    from the argument.

^TRUE
TRUE ===> number

    Returns 1.

^TRUNC
TRUNC number ===> number
TRUNC point ===> point
TRUNC point_3d ===> point_3d

    Returns the argument value truncated to its integer part.   TRUNC  -3.7
    is -3.

^UPC
UPC string ===> string

    Returns a string formed by replacing each lowercase  character  by  its
    corresponding uppercase character.

^VAL
VAL string ===> token

    Returns the token whose ASCII representation is given  by  string.  The
    reverse function of VAL is STR.

^X_OF
X_OF point ===> number
X_OF point_3d ===> number

    Returns the x-coordinate of the argument point (vector).

^Y_OF
Y_OF point ===> number
Y_OF point_3d ===> number

    Returns the y-coordinate of the argument point (vector).

^Z_OF
Z_OF point_3d ===> number

    Returns the z-coordinate of the argument point (vector).
================================================================================
^MAX_FEEDBACK

-->(MAX_FEEDBACK)--------->|number|---------->

With MAX_FEEDBACK you  can specify  how much  element tracking you want in the
MODIFY and STRETCH command (default is 20 feedback points). Tracking  one line
costs two feedback points, one arc five points.
================================================================================
^FILES
Files produced automatically

Some commands, functions, or macros can produce temporary  files.   To  prevent
name conflicts, avoid using the following filenames:

	Name            Produced by
	~~~~            ~~~~~~~~~~~
	hp_catfile      reading and writing files
	log             reading file in MI format
	work1           NC and FE programs
	work2.ASC       "
	nclog           "
	mdsi            "
================================================================================
^FILLET LITERAL BLEND
FILLET command

	     ,-----------------------------------------------------------,
	     |              ,------------------------------------------, |
	     v              v                                          ^ ^
-->(FILLET)--+-->|radius|-+-+->|pnt on 1st elem|--->|pnt on 2nd elem|--+-+-->
	     v            ^ |                                          ^ |
	     +------------' '-------->|vertex pnt|---------------------' |
	     |                                                           |
	     '-->(LITERAL)-->|center pt|-->|beg pt|-->|end pt|-->--------'

FILLET makes a fillet with  the  given  radius  tangent  to  the  two  selected
elements  or  to  the two elements that end in the selected vertex point.   See
also KEEP_CORNER.

FILLET has no UNDO option, but it is possible to reconstruct the corner in most
cases by using CHANGE_FILLET with radius 0.

The LITERAL option is useful when you need a  fillet,  know  exactly  where  it
goes, and don't want to worry about the tangential elements.   For human users,
this situation rarely arises, but  for  program-generated  commands  (like  the
output of the SAVE command), it is convenient.
================================================================================
^FOLLOW MEASURE
FOLLOW function

-->(FOLLOW)--+--->(ON)----,
	     |            |
	     '--->(OFF)---+---->

FOLLOW turns following on and off.   With following on, the origin of the input
coordinate system (and thus of the ruler or grid) moves so that  it  is  always
equal to the most recently input point of geometric meaning.  In this mode, the
coordinates  of each point are relative to the coordinates of the previous one.
With following off, the input coordinate system remains constant.

Most points "of geometric meaning" are points used to indicate vertices of  new
components,  although  the  origin  follows  a  few  points that don't fit this
definition -- end points of the translation vector in MODIFY MOVE, for example.

During the measure functions follow is off.
================================================================================
^GATHER PART PARTS
GATHER command

-->(GATHER)--+-----------+--+--------+--|name or pnt or box|--...
	     |           |  |        |
	     +--COPY-----+  +--PART--+


	...--+----------------+-->
	     |                |
	     +--|pt1|--|pt2|--+
	     |                |
	     '-----|pt|-------'

GATHER  brings elements into the active part.   The elements must already exist
in another part.

The  element  is selected as follows.   If you enter a name, the part with that
name is gathered.   If  you  identify  a  part  box,  that  part  is  gathered.
Otherwise,  you  identify an element that is not a part.   In this case, if you
use the PART option, the part containing this element is gathered;  if not, you
get the element itself.   You can also identify a group of elements by entering
the opposite corners of a box; this is possible only without the PART option.

Without  the  COPY  option,  the element selected is removed from its part, and
inserted in the active part, without its location changing.  You may not gather
a part above the current part in this case.

With the COPY option, the selected element remains, and you get a copy of it in
the active part.   In this case, you must say where the copy is to  be  placed.
Normally, you give a begin and end point of a translation vector, as with MOVE.
The  exception  is  when you have selected a shared part that appears more than
once in the drawing, and you select it by name instead of  picking  a  specific
instance.   In  this  case,  you get a box hanging on your cursor, and you pick
only one point, namely, the point where the  part  reference  point  is  to  be
placed.   The  result  is  a  copy  of  the  shared  part  as it was originally
constructed, i.e., without any scale, rotation, mirror, etc.

The  current implementation is limited in the following ways.   If you GATHER a
dimensioned element, the dimension is lost.   If you GATHER elements forming  a
hatch  contour,  the  hatch is preserved only if you gather all the elements at
once, in a box.  These limitations do not apply when you GATHER entire parts.
================================================================================
^GET_ELEM_INFO INFO
GET_ELEM_INFO function

---->(GET_ELEM_INFO)---->|pnt on elem|---->

GET_ELEM_INFO changes the current info to be  the  same  as  the  info  of  the
identified element.  The element need not be in the active  part.  The  current
info is the info added to every new element.
================================================================================
^GET_PROPERTIES PROPERTIES LINETYPE COLOR HATCH TEXT PROP SIZE
GET_PROPERTIES command

---->(GET_PROPERTIES)---->|point on element|---->

GET_PROPERTIES  changes the current properties to be the same as the properties
of the identified element.   The element need not be in the active part.

The current properties are the ones set by the following functions:

  real geometry (not construction geometry)
      LINE <color> END
      LINE <linetype> END

  construction geometry
      C_LINE <color> END
      C_LINE <linetype> END

  hatch
      CURRENT_HATCH_PATTERN
      HATCH_ANGLE
      HATCH_DISTANCE
      HATCH_REF_PT

  text
      TEXT <color> END
      CURRENT_FONT
      TEXT_ADJUST
      TEXT_ANGLE
      TEXT_FILL
      TEXT_FRAME
      TEXT_LINESPACE
      TEXT_RATIO
      TEXT_SIZE
      TEXT_SLANT

GET_PROPERTIES  changes  only properties that the identified element has.   For
example, GET_PROPERTIES from a text leaves the current hatch information as  it
was.

The current properties are used for every  new  element  of  the  corresponding
type. They can also be assigned to existing elements with PUT_PROPERTIES.
================================================================================
^GRID_FACTOR GRID SPACING
GRID_FACTOR function

--->(GRID_FACTOR)--->|value|---->

GRID_FACTOR  specifies  the distance (in current units, of course) between grid
points or ruler ticks.   This function has no effect on  the  input  coordinate
system.
================================================================================
^HATCH AUTO MANUAL FACE
HATCH command

	 ,----------------------------------------------------------,
	 |                                                          |
	 | ,----------,                                             |
	 v |          v                                             |
->(HATCH)+-+>(AUTO)---+-----|pnt in face |---------------- ,        |
	 |                                                 |        |
	 |           ,---------------------------------,   |        |
	 |           |                                 |   |        |
	 |           +--------------(UNDO)-------------+   |        |
	 |           |                                 |   |        |
	 |           |          ,------------,         |   |        |
	 |           v          v            |         ^   v        ^
	 '->(MANUAL)-+->|point|-+-->|point|--+-->(END)-+>--+>-------+--->
				|            ^             v        ^
				|-->(UNDO)---|             |        |
				v            |             '-(UNDO)-'
				'-->(VERTEX)-'

HATCH creates hatches, possibly with inner contours.

With AUTO (the default), you indicate a point inside the outer contour but  not
in  any inner contour.   The inner contours are found automatically.  Automatic
hatch functions only if:

	-- all elements in the contour are in the active part
	-- the contour has no gaps
	-- each vertex of the contour is a vertex of all elements there

With  MANUAL,  you specify the points on the hatch boundaries yourself -- first
the outer contour, then the inner ones.   To include an element in  a  contour,
identify  an  end  point,  then  a  point  in  the middle.   To include further
(connected)  elements, identify each one in the middle.   The system will allow
you  to skip elements along a contour, as long as you do not skip more than one
element past any branch points.   The included elements must be in  the  active
part.  Enter END when all hatch boundaries, outer and inner, are defined.

UNDO  works as follows : In the AUTO  option  it  removes  the  last  hatch.
In the MANUAL option it removes points when creating a contour. Finally once
you have ENDed a hatch, using UNDO removes the entire hatch.

Use  VERTEX  to make clear,  that you do not want  to include an  element in the
contour, but specify a hatch boundary point on an element.
================================================================================
^HATCH_ANGLE ANGLE
HATCH_ANGLE function

---->(HATCH_ANGLE)---->|value|---->

HATCH_ANGLE sets the current hatch angle.   This angle  is  used  for  all  new
hatches, and is the angle between the X axis and the hatch pattern.
================================================================================
^HATCH_COLOR COLOR OLD
HATCH_COLOR function (OLD)

---->(HATCH_COLOR)--+-->(BLACK)---->+-->
		    |               ^
		    |-->(BLUE)----->|
		    |               |
		    |-->(CYAN)----->|
		    |               |
		    |-->(GREEN)---->|
		    |               |
		    |-->(MAGENTA)-->|
		    |               |
		    |-->(RED)------>|
		    |               |
		    |-->(WHITE)---->|
		    |               |
		    '-->(YELLOW)----'

HATCH_COLOR sets the current hatch color, which is used for all new hatches.

Use HATCH |color functions| END for new macros.
================================================================================
^HATCH_DIST DISTANCE
HATCH_DIST function

-->(HATCH_DIST)---->|value|---->

HATCH_DIST sets the current hatch  distance.   This  distance  is  usually  the
distance between hatch lines, but see also CURRENT_HATCH_PATTERN.  This affects
new hatches.
================================================================================
^HATCH_LINETYPE LINETYPE OLD
HATCH_LINETYPE function (OLD)

-->(HATCH_LINETYPE)--+-->(SOLID)-------->+-->
		     |                   |
		     |-->(DASHED)------->|
		     |                   |
		     |-->(LONG_DASHED)-->|
		     |                   |
		     |-->(DOT_CENTER)--->|
		     |                   |
		     |-->(DASH_CENTER)-->|
		     |                   |
		     |-->(PHANTOM)------>|
		     |                   |
		     |-->(LONG_DOTTED)-->|
		     |                   |
		     `-->(DOTTED)------->'

HATCH_LINETYPE sets the current hatch linetype, which is used for new hatches.

Use HATCH |linepattern functions| END for new macros.
================================================================================
^HATCH_REF_PT REF_PT HATCH
HATCH_REF_PT function

---->(HATCH_REF_PT)---->|point|---->

HATCH_REF_PT  sets the current hatch reference point.   Normally, a line of the
hatch  pattern   passes   through   the   reference   point   (but   see   also
CURRENT_HATCH_PATTERN).
================================================================================
^HELP KEYWORD
HELP function

		+---->|empty string|---->+
		|                        |
---->(HELP)---->+                        +---->
		|                        |
		+------->|keyword|------>+

The HELP function displays the manual page describing the required 'keyword'. If
an  empty string is given instead of a keyword,  then the manual page describing
the current command/function (if any) is selected.

Inside the HELP function the following subfunctions are available:

  ^         displays the first page of the help file
  !         displays the last page of the help file
  ?         displays the page describing the HELP function
  N         displays the next page describing the current KEYWORD
  KEYWORD   displays the page describing KEYWORD
================================================================================
^HP_DSLINK NC
Hp_dslink macro

---->(Hp_dslink)---->|filename|---->

Hp_dslink  generates  HP_DESIGNLINK  data describing the geometry of the active
part.  The maximum length of the file name is 9 characters.
================================================================================
^HP_FE FE FE_LINK
HP_FE macro

---->(Fe_link)---->|filename|---->

Fe_link generates HP_FE data describing the geometry of the active  part.   The
maximum  length  of  the file name is 3 characters; the first must be a letter,
and the others either letters or digits.

HP_FE is actually only the name of a menu slot; the macro name is Fe_link.
================================================================================
^INIT_PART PARTS
INIT_PART command

-->(INIT_PART)--+--|part name|--+->
		v               ^
		'---------------'

INIT_PART  creates  a  new,  empty  part  in the top part, and then changes the
active part to be the new one.   The name parameter is optional;  if omitted, a
default name is supplied.

INIT_PART   has   exactly   the  same  effect  as  EDIT_PART  TOP  followed  by
INIT_SUBPART.
================================================================================
^INIT_SUBPART PARTS
INIT_SUBPART command

-->(INIT_SUBPART)----|part name|---->

INIT_SUBPART creates a new, empty part in the active  part,  and  then  changes
the active part to be the new one.
================================================================================
^INPUT FILES
INPUT function

---->(INPUT)---->|string|---->

INPUT temporarily redirects the input stream  from  the  keyboard,  tablet,  or
mouse to the named text file.  This file may contain any valid commands.  INPUT
files may be nested.   The INPUT function should not be used inside macros.  An
error in an INPUT file causes all pending input to be discarded.
================================================================================
^INQ_ELEM INQ
INQ_ELEM function

---->(INQ_ELEM)---->|point on element|---->

INQ_ELEM  writes  information  about  the  identified  element  into the system
inquiry array.  It can then be retrieved with INQ (see INQ).

INQ_ELEM sets the following values, depending on the element type:

+----------------------------------------------------------------------------+
| function/command | <inq_index> | result                                    |
+------------------+-------------+-------------------------------------------+
| INQ_ELEM         |      1      | 107 (inq code)                            |
|                  |    201      | element color                             |
|                  |    301      | element linetype                          |
|                  |    403      | element type                              |
|............................................................................|
| if element type = POINT                                                    |
|............................................................................|
|                  |    101      | point                                     |
|............................................................................|
| if element type = LINE                                                     |
|............................................................................|
|                  |    101      | begin point                               |
|                  |    102      | end point                                 |
|............................................................................|
| if element type = CIRCLE                                                   |
|............................................................................|
|                  |      3      | radius                                    |
|                  |    101      | center point                              |
|                  |    102      | peripheral point                          |
|............................................................................|
| if element type = ARC                                                      |
|............................................................................|
|                  |      3      | radius                                    |
|                  |      4      | begin angle                               |
|                  |      5      | end angle                                 |
|                  |    101      | center point                              |
|                  |    102      | peripheral begin point                    |
|                  |    103      | peripheral end point                      |
|............................................................................|
| if element type = FILLET                                                   |
|............................................................................|
|                  |      3      | radius                                    |
|                  |      4      | begin angle                               |
|                  |      5      | end angle                                 |
|                  |    101      | center point                              |
|                  |    102      | peripheral begin point                    |
|                  |    103      | peripheral end point                      |
|............................................................................|
| if element type = C_LINE                                                   |
|............................................................................|
|                  |    101      | center point                              |
|                  |      3      | angle with X axis                         |
|............................................................................|
| if element type = C_CIRCLE                                                 |
|............................................................................|
|                  |    101      | center point                              |
|                  |      3      | radius                                    |
|............................................................................|
| if element type = END                                                      |
|              no elem with the above types found at <point>                 |
+------------------+-------------+-------------------------------------------+
================================================================================
^INQ_ENV INQ
INQ_ENV function

---->(INQ_ENV)----><inq_code>---->

INQ_ENV sets the following values, depending on the inquiry code, which must be
in the range 0..10:

+----------------------------------------------------------------------------+
| <inq_code> | <inq_index> | result                                          |
|============+=============+=================================================|
|     0      |      1      | 0 (inq code)                                    |
|            |      2      | version number                                  |
|            |    301      | version string                                  |
|------------+-------------+-------------------------------------------------|
|     1      |      1      | 1 (inq code)                                    |
|            |      2      | current viewport, range 0..16                   |
|            |    101      | lower left coordinate of curr viewport in pixels|
|            |    102      | upper right coordinate                          |
|------------+-------------+-------------------------------------------------|
|     2      |      1      | 2 (inq code)                                    |
|            |    101      | lower left point of current window              |
|            |    102      | upper right point of current window             |
|------------+---------------------------------------------------------------|
|     3      |      1      | 3 (inq code)                                    |
|            |      2      | current viewport catch range in pixels          |
|            |      3      | current no_viewport catch range in units        |
|            |    603      | current catch mode                              |
|            |    201      | current geometry color                          |
|            |    301      | current geometry linetype                       |
|            |    202      | current construction color                      |
|            |    302      | current construction linetype                   |
|            |    203      | current text color                              |
|            |    204      | current hatch color                             |
|            |    304      | current hatch linetype                          |
|            |    205      | current dim color                               |
|            |    206      | current dim text color                          |
|------------+---------------------------------------------------------------|
|     4      |      1      | 4 (inq code)                                    |
|            |    301      | plotter name                                    |
|------------+---------------------------------------------------------------|
|     5      |      1      | 5 (inq code)                                    |
|            |      2      | 1 if plotter viewport inq successful, else 0    |
|            |      3      | plotter viewport width                          |
|            |      4      | plotter viewport height                         |
|------------+---------------------------------------------------------------|
|     6      |      1      | 6 (inq code)                                    |
|            |      2      | length units                                    |
|            |      3      | angle units                                     |
|            |      4      | drawing scale                                   |
|------------+---------------------------------------------------------------|
|     7      |      1      | 7 (inq code)                                    |
|            |    101      | lower left point of the current part            |
|            |    102      | upper right point of the current part           |
|            |    301      | partname of the current part                    |
|------------+---------------------------------------------------------------|
|     8      |      1      | 8 (inq code)                                    |
|            |      2      | number of fonts defined                         |
|            |    301      | name of the current font                        |
|------------+---------------------------------------------------------------|
|     9      |      1      | 9 (inq code)                                    |
|            |      2      | underlength of this font definition             |
|            |      3      | height of this font definition                  |
|            |      4      | width of this font definition                   |
|            |    301      | name of the first/next font after inq_env 8     |
|------------+---------------------------------------------------------------|
|    10      |      1      | 10 (inq code)                                   |
|            |      2      | crt type                                        |
|            |             |  = 1: 9836A  low res b/w internal crt           |
|            |             |       98204B low res b/w display board          |
|            |             |  = 2: 98627A low res color display board        |
|            |             |  = 3: 9836C  low res color internal crt         |
|            |             |  = 4: 9837A  high res b/w display board         |
|            |             |  = 5: 98542A low res b/w display board          |
|            |             |  = 6: 98543A low res color display board        |
|            |             |  = 7: 98544A high res b/w display board         |
|            |             |  = 8: 98545A high res color display board       |
|            |             |  = 9: 98547A high res color display board       |
|            |             |  =10: 98700H display system (4 planes)          |
|            |             |  =11: 98700H display system (8 planes)          |
|            |             |  =12: 98720A display system (4 planes)          |
|            |             |  =13: 98720A display system (8 planes)          |
|            |             |  =14: 98720A display system (16 planes)         |
|            |             |  =15: 98720A display system (24/32 planes)      |
|            |      3      | tablet type                                     |
|            |             |  = 0: no tablet connected                       |
|            |             |  = 1: 9111a tablet                              |
|            |             |  = 2: 46087 tablet                              |
|            |             |  = 3: 46088 tablet                              |
|            |             |  = 4: 45911a tablet                             |
|            |      4      | operating system                                |
|            |             |  = 1: Pascal Workstation                        |
|            |             |  = 2: HP-UX                                     |
+----------------------------------------------------------------------------+
================================================================================
^ISOMETRIC
ISOMETRIC command

->-(ISOMETRIC)----(select front elem)---|ref pnt|----|dest pnt|---,
								  |
	      ,---------------------------------------------------'
	      |
	      '---(select side elem)-----|ref pnt|----|dest pnt|--,
								  |
	      ,---------------------------------------------------'
	      |
	      '---(select top  elem)-----|ref pnt|----|dest pnt|----->


ISOMETRIC helps you create an isometric view of a three-dimensional object.  It
assumes that you have already created orthogonal views of the front, side,  and
top.   You  first identify the front view, then say where it should go, then do
the same with the side and top views.  You identify a view by enclosing it in a
box, or, if the view is a part, by identifying the part directly.   If you make
a  box  with  nothing in it, the system skips to the next element selection; in
this way you can omit one or more of the three views.

The result of ISOMETRIC is in most  cases  only  an  approximation  of  a  true
isometric  view,  since  the system only understands two dimensions.   You must
then manually finish the drawing.   In this process, the following commands may
be  useful:  MODIFY  MOVE  COPY  to add missing edges to the drawing; SPLIT and
CHANGE_LINETYPE to draw hidden lines; CONVERT_SPLINE  to  change  splines  into
biarcs, which can then be split (circles, arcs, and fillets in the original are
converted to splines in the isometric view).

If  a  view  is  a  shared  part,  then  it  transformed in such a way that the
dimensioning values reflect the dimensions of the part before using ISOMETRIC.
This special attribute is noted in the parts list (TREE option).

An isometric view has a vertical Z axis, and X and Y axes 30 degrees above  the
horizontal.   Other views with different configurations can be made with MODIFY
AFFINE; a macro can make the process more automatic.
================================================================================
^KEEP_CORNER FILLET CHAMFER CORNER
KEEP_CORNER function

-->(KEEP_CORNER) --+--(ON)---+---->
		   |         |
		   +--(OFF)--+

KEEP_CORNER affects how FILLET and CHAMFER behave.   KEEP_CORNER ON means  that
the corner being blended will remain a corner.   KEEP_CORNER OFF means that the
lines or arcs between the fillet or chamfer and the corner being  rounded  will
be deleted.
================================================================================
^LABEL NC
LABEL command

---->(LABEL)---->|select|---->

LABEL  generates  label  information  for the selected points, lines, arcs, and
circles in the active part.   This label information consists of texts next  to
the  selected elements, and new info attached to the elements.   Old info, even
if produced by the LABEL command, is left undisturbed.

The info produced by the LABEL command is normally used by the NC  macros  Act,
Compact, and Ncgl, though it is available, through MI, for other postprocessors
too.
================================================================================
^LAST_WINDOW WINDOW
LAST_WINDOW function

---->(LAST_WINDOW)---->

LAST_WINDOW restores the previous window of  the  current  viewport.  See  also
STORE_WINDOW and RECALL_WINDOW.
================================================================================
^LEADER_ARROW ARROW LEADER ARROW_TYPE DOT_TYPE SLASH_TYPE TRIANGLE_TYPE NONE
^DOT SLASH TRIANGLE ARROW_SIZE SIZE
LEADER_ARROW function

-->(LEADER_ARROW)->+----------->+--->+--(ARROW_TYPE)---+---->
		   |            |    |                 |
		   +--|number|--+    +--(DOT_TYPE)-----+
				     |                 |
				     +--(SLASH_TYPE)---+
				     |                 |
				     +-(TRIANGLE_TYPE)-+
				     |                 |
				     +--(NONE)---------+

LEADER_ARROW specifies the termination used for new leader_lines.  The optional
number specifies the arrow size.  The default is ARROW_TYPE, size 3.5 mm.
================================================================================
^LEADER_LINE LINE BREAK LEADER ARROW LEADER_ARROW UNDO
LEADER_LINE command

		 +---------------------------------------------------------+
		 |          +-----------------------------------+          |
		 |          |                                   |          |
->(LEADER_LINE)--v-|point|--v---+---------+-|point|-+--------+--+-->(END)--+-->
				|         |         |        |
				+-(BREAK)-+         +-(UNDO)-+

LEADER_LINE creates a leader line.  You specify a begin point, then one or more
vertices of the line, terminated by END.  The end  point  is  given  the  arrow
specified by LEADER_ARROW.

UNDO  removes  the  most  recent  line segment.   BREAK specifies that the next
segment is to be invisible.
================================================================================
^LET MACRO
LET function

---->(LET)---->|macro_name|---->|token or expression|---->

LET (re)defines a macro.   See NAME for  a  description  of  permissible  macro
names.   If  an  expression  is given instead of a simple token, the expression
will be evaluated and the resulting token will be assigned to the macro.

Examples:
   LET A 2            set the value of A to 2
   LET B (A + A * 3)  set the value of B to (A+A*3).   Note  that parentheses
		      are required whenever an expression is used as a token.
================================================================================
^LINE POLYGON RECTANGLE TWO_PTS HORIZONTAL VERTICAL PARALLEL PERPENDICULAR
^TANGENT TAN_PT TAN2 PT_ANG_DIST
LINE command

	   ,-------------------------------------------------------------,
	   |                 ,--------------------------------,          |
	   v                 v                                |          |
-->(LINE)--+-->(TWO_PTS)-----+-->|begin point|-->|end point|--+----------+-->
	   |                    ^                                        ^
	   +--------------------'                                        |
	   |                                                             |
	   |                 ,-------------------------------------,     |
	   |                 v                                     |     |
	   |-->(HORIZONTAL)--+-|begin point|----+--|end point|---+-+---->|
	   |                                    |                |       |
	   |                                    +---|distance|---+       |
	   |                 ,-------------------------------------,     |
	   |                 v                                     |     |
	   |-->(VERTICAL)----+-|begin point|----+--|end point|---+-+---->|
	   |                                    |                |       |
	   |                                    +---|distance|---+       |
	   |                                                             |
	   |                                                             |
	   |              ,----------------<------------------,          |
	   |              | ,--<-----,                        |          |
	   |              | |        |                        |          |
	   '->(PARALLEL)--+-+-|dist|-+-->---|elem|---->|pnt|--+---+----->'
	   |              |                                       |      |
	   |              |                         +---<-----+   |      |
	   |              |                         |         |   |      |
	   |              '-----------------|elem|--+->|pnt|--+---'      |
	   |                                                             |
	   |                                                             |
	   |                   ,------------------------------------,    |
	   |                   v                                    |    |
	   |-->(PERPENDICULAR)-+->|elem|-->--|pnt1|--+------------+-+----'
	   |                                         |            |      |
	   |                                         +-+-|pnt2|-+-+      |
	   |                                           |        |        |
	   |                                           '|length|'        |
	   |                              ,------------,                 |
	   |                              v            |                 |
	   |-->(POLYGON)-->|start point|--+-->|point|--+---------------->|
	   |                                                             |
	   |                  ,------------<-----------,                 |
	   |                  v                        |                 |
	   |-->(RECTANGLE)----+->|point 1|-->|point 2|-+---------------->|
	   |                                                             |
	   |                   '------------<---------------,            |
	   |                   |                            |            |
	   |-->(TAN_PT)--------+-->|app tang pnt|-->|point|-+----------->|
	   |                                                             |
	   |                ,---------------<-------------------,        |
	   |                v                                   |        |
	   |-->(TAN2)-------+->|app tang pnt|-->|app tang pnt|--+------->|
	   |                                                             |
	   |                  ,------------+----<----------------------, |
	   |                  v            v                           | |
	   '-->(PT_ANG_DIST)--+->|beg pnt|-+-|angle|--+-----+-|length|-+-'
					   |          |     |          | |
					   '-|point|--'     '-|point|--' |

LINE creates lines.

TWO_PTS creates a line with the given begin and end points.

HORIZONTAL and VERTICAL create horizontal and vertical  lines  with  the  given
begin  and  end points; the end point is projected accordingly.   Instead of an
end point, you can enter a length.

PARALLEL  creates  lines  parallel to a given line.   There are two ways to use
this option.   With method 1, you identify the element to which the  new  lines
should be parallel, then you indicate points through which the new lines should
go.   With  method  2,  you  enter  distances,  then  identify an element, then
indicate which side of the element is to be the positive  one.   The  distances
are all measured from the existing element.

PERPENDICULAR  creates  a  line  from the given pnt1 to the identified element,
perpendicular to this element.   If pnt1 is on the element, the end of the line
must be specified either by pnt2 or a length.

RECTANGLE makes  a  rectangle  parallel  to  the  axes  of  the  current  input
coordinate system.  The two input points are opposite corners of the rectangle.
The rectangle is really just four independent lines.

POLYGON  creates  a  sequence  of  connected  lines  with the given end points.
POLYGON is only an input aid; the lines created are independent.

TAN_PT creates a line tangential to the selected element, from that element  to
the  given  point.  The  approximate tangent point is used both to identify the
element and to determine which tangent  is  desired.   The  element  may  be  a
c_circle, circle, arc, or fillet.

TAN2 makes a line tangent to two curved elements.   Again, the approximate tan-
gent points determine which tangent solution is used.

PT_ANG_DIST  creates a line from the given start point, at the given angle with
respect to the X axis, and with the given length.   The angle or the length may
be specified with points.
================================================================================
^LINETYPE OLD
LINETYPE function (OLD)

-->(LINETYPE)--+-->(SOLID)-------->+-->
	       |                   |
	       |-->(DASHED)------->|
	       |                   |
	       |-->(LONG_DASHED)-->|
	       |                   |
	       |-->(DOT_CENTER)--->|
	       |                   |
	       |-->(DASH_CENTER)-->|
	       |                   |
	       |-->(PHANTOM)------>|
	       |                   |
	       |-->(LONG_DOTTED)-->|
	       |                   |
	       `-->(DOTTED)------->'

LINETYPE  specifies  the  current  linetype, which is used for all new elements
except hatches (see HATCH_LINETYPE) and construction geometry (see C_LINETYPE).

The linetype also affects the way point elements (from POINT)  are  drawn.   To
see the possibilities, change the linetype and watch the status line.

Use LINE |linepattern functions| END for new macros.
================================================================================
^LINEPATTERN
^SOLID
^DASHED
^LONG_DASHED
^DOT_CENTER
^DASH_CENTER
^PHANTOM
^LONG_DOTTED
^DOTTED
LINEPATTERN functions

--->+--->(LINEPATTERN)--->|linetype pattern string|--->+--->
    |                                                  |
    +--->(SOLID)-------------------------------------->+
    |                                                  |
    +--->(DASHED)------------------------------------->+
    |                                                  |
    +--->(LONG_DASHED)-------------------------------->+
    |                                                  |
    +--->(DOT_CENTER)--------------------------------->+
    |                                                  |
    +--->(DASH_CENTER)-------------------------------->+
    |                                                  |
    +--->(PHANTOM)------------------------------------>+
    |                                                  |
    +--->(LONG_DOTTED)-------------------------------->+
    |                                                  |
    `--->(DOTTED)------------------------------------->'

LINEPATTERN specifies  the  current  linetype for the components which are to
be created with the current active command (LINE C_LINE HATCH).
For the eight standard patterns the SOLID .. DOTTED functions can be used.

The linepattern_string represents the linetype in a visible form
with characters '0' and '1'.

The standard linetype functions are equivalent to the following patterns:

  SOLID        : '11111111111111111111111111111111'
  DASHED       : '11111111000000001111111100000000'
  LONG_DASHED  : '11111111111000001111111111100000'
  DOT_CENTER   : '11111111111110101111111111111010'
  DASH_CENTER  : '11111111111101101111111111110110'
  PHANTOM      : '11111111111010101111111111100101'
  LONG_DOTTED  : '11111111110101101111111111010110'
  DOTTED       : '10101010101010101010101010101010'

The linetype also affects the way point elements (from POINT)  are  drawn.   To
see the possibilities, change the linetype and watch the status line.
================================================================================
^LINE_GRID CS GRID
LINE_GRID function

	       ,--------------------------------,
	       |                                |
	       v                                |
-->(LINE_GRID)-+->|point to identify viewport|--+-->+-->(ON)---,
	       |                                ^   |          |
	       +->(ALL)-------------------------+   '-->(OFF)--+-->
	       |                                |
	       '------------------------------->'

LINE_GRID turns the line grid on or off.   The meaning of the  options  is  the
same as in DOT_GRID.

The  location  of  the grid lines is determined by the input coordinate system,
set by the commands  beginning  with  "CS_",  and  the  grid  spacing,  set  by
GRID_FACTOR.   You  can  catch  to intersections of the grid lines if the catch
mode is ALL or GRID;  see CATCH for more information.   It is not  possible  to
catch  to  a grid line otherwise, or to an intersection between a grid line and
an element.

The  drawing  of  the  grid is suppressed in viewports where there are too many
grid points.
================================================================================
^LIST_FONTS TEXT FONT
LIST_FONTS function

---->(LIST_FONTS)---->

LIST_FONTS gives on the screen a list of all fonts defined and all fonts  used.
It also gives the name of the current font.  Editing the list has no effect.
================================================================================
^LIST_GLOBAL_INFO INFO
LIST_GLOBAL_INFO function

-->(LIST_GLOBAL_INFO)-->

LIST_GLOBAL_INFO  lists  all  info used by all elements in memory.  Editing the
list has no effect.   The current info is present only if it has  already  been
assigned to some element.
================================================================================
^LIST_MACRO_NAMES MACRO
LIST_MACRO_NAMES function

---->(LIST_MACRO_NAMES)---->

LIST_MACRO_NAMES lists the names of all  currently  defined  macros  using  the
built-in  screen editor.   Editing the list has no effect.   Secured macros are
indicated by a '*' in front of the name.
================================================================================
^STRING QUOTE
string

    +<--------------------------------------------------------------------+
    |                                                                     ^
    |                    +<----| any character |<----+                    |
    |                    |                           ^                    |
    v                    v                           |                    |
--->+--->+---->( ' )---->+-------------------------->+---->( ' )---->+--->+--->
	 |                                                           ^
	 |               +<----| any character |<----+               |
	 |               |                           ^               |
	 v               v                           |               |
	 +---->( " )---->+-------------------------->+---->( " )---->+
	 |                                                           ^
	 v                                                           |
	 +---->( # )---->+---->| any character |-------------------->+
			 |                                           ^
			 |     +<------------------+                 |
			 |     |                   ^                 |
			 v     v                   |                 |
			 +---->+---->| digit |---->+---------------->+

A string is a sequence of characters.   It consists of any combination  of  the
following:

 -- A sequence of ASCII printable characters enclosed in single  or  double
    quote marks.

 -- A sharp symbol ( # ) followed by a single character.

 -- A sharp symbol ( # ) followed by an integer number which represents the
    ASCII value of a character.

The printable characters appearing between the single or double quote marks are
those  ASCII  characters  assigned  graphics  and  encoded by ordinal values 32
through 126 and 161 through 254.

A letter or symbol after a sharp symbol is equivalent to a  control  character.
For example, #G or #g encodes CTRL-G, the bell character. The system interprets
the letter or symbol according to the expression chr(ord(letter) mod 32). Thus,
the  ordinal  value of G is 71; modulus 32 of 71 is 7; and the ASCII value of 7
is the bell.

A number after a sharp symbol must be in the range 0..255.  It directly encodes
any  ASCII  character,  printing  or  non-printing.   For  example,  the string
#65#66#67 is equivalent to the string 'ABC'.

A  single quote in a string delimited by single quotes is denoted by two single
quotes.

A double quote in a string delimited by double quotes is denoted by two  double
quotes.
================================================================================
^LOAD SUBPART ABSOLUTE MI DRAWING FILES STORE PARTS
LOAD command

						  .----------------------->.
						  |                        |
-->(LOAD)--->+---------------->+--->|filename|--->+----->(ABSOLUTE)------->+-->
	     |                 |                  |                        |
	     `--->(SUBPART)--->'                  `--->|location point|--->'

LOAD loads a part from the named file into memory.   The file  must  have  been
created with STORE, or it must be an MI file, normally created with STORE MI.

SUBPART means that the new part is to be a subpart of the active part.
Otherwise, LOAD automatically chooses one of the following options:

 -- If the top part is empty and the new part is not shared than the new
    part replaces the top part. If the new part is shared the part
    is loaded as if you had said SUBPART.

 -- If the top is not empty the new part is loaded as a subpart of the
    top part.

Except of the first case, you  must  specify  where  the  new  part  is  to  be
positioned  geometrically.   You  do this by either saying ABSOLUTE, which says
that the new part should have the same location as it did when you  stored  it,
or by indicating a location point.   If you indicate a location point, the part
reference point (see CHANGE_PART_REF_PT) is placed there.

If you load a part directly into the top part, the drawing scale is taken  from
the drawing scale of the loaded part.  Otherwise, the loaded part is adapted to
the current drawing scale.
================================================================================
^LOAD_FONT STORE_FONT TEXT FONT
LOAD_FONT command

---->(LOAD_FONT)---->|file name|---->


LOAD_FONT loads all text fonts stored in the named file into memory.

The file must be the output of an earlier STORE_FONT.
================================================================================
^LOAD_MACRO STORE_MACRO MACRO
LOAD_MACRO function

---->(LOAD_MACRO)---->|file name|---->

LOAD_MACRO loads all macros stored in the named file into memory.

The file must be the output of an earlier STORE_MACRO.   If a macro was secured
with SECURE_MACRO before it was stored, it will not be visible  after  loading,
although it will be fully operational.
================================================================================
^MAPPING MODIFY STRETCH
Mapping options in MODIFY and STRETCH

This  section  describes  the  mapping  options  MOVE,  ROTATE,  MIRROR, SCALE,
SIMILAR, and AFFINE in the MODIFY and STRETCH commands.

In each option, DEL_OLD means that the original geometry is modified, and  COPY
means  that  the geometry is copied before modification.  The default is always
DEL_OLD.

Each  option  also  accepts a repeat factor.   The repeat factor tells how many
times the modification should be repeated.   Thus, a COPY with repeat factor  5
results in 5 copies, plus the original.   You can also use a repeat factor with
DEL_OLD for (primitive) kinematic investigations.   For example, you can ROTATE
a  robot  arm  a  little  at  a time to see at what point it touches some other
element.

It  is possible to select elements, then apply several transformations to them,
within one invocation of MODIFY or STRETCH.   If you are working this way,  and
you  change  the  repeat  factor,  this  factor  stays in effect for subsequent
modifications, until you leave the command.   The exception  is  MIRROR,  which
always sets the repeat factor back to 1.

The  descriptions  somewhat  loosely  speak  of "elements";  with STRETCH it is
sometimes only one end of an element that is modified.
================================================================================
^MOVE
MOVE option
	   ,--------<-------------,
	   |                      |
	   +---(repeat factor)----+
	   |                      |
	   |-----(COPY)----->-----'
	   |                      |
	   '-----(DEL_OLD--->-----'
	   |
-->(MOVE)--+--+(TWO_PTS)+------|begin point|-------|end point|--------------->
	   |  v         ^
	   |  '---------'
	   |
	   '---(HORIZONTAL)----|horizontal distance|------------------------->
	   |
	   |
	   '---(VERTICAL)------|vertical distance|--------------------------->
	   |
	   |                                       +--------<----------+
	   |                                       |                   |
	   '---(MULTIPLE)------|begin point|-------+---|end point|-----+----->


MOVE moves the selected elements from one place to another.

With TWO_PTS you specify a begin and end point of the move.

With HORIZONTAL and VERTICAL, you say how far  the  elements  should  be  moved
horizontally  or  vertically.   The  distance can also be negative, producing a
move to the left (HORIZONTAL) or down (VERTICAL).

MULTIPLE is used to create multiple copies (with COPY).   It is equivalent to a
series of TWO_PTS, with the new begin point the same as the old end point.

Example:  MODIFY (select) MOVE VERTICAL 10 moves the selected elements 10 units
up.
================================================================================
^ROTATE
ROTATE option
	    ,--------<-------------,
	    |                      |
	    +---(repeat factor)----+
	    |                      |
	    |-----(COPY)----->-----'
	    |                      |
	    '-----(DEL_OLD--->-----'
	    |
-->(ROTATE)-+-+(CENTER)+--|fix point|----+------|angle|---------+------------>
	    v v        ^                 |                      |
	    | '--------'                 +--|point1|--|point2|--+
	    |
	    +->(TWO_PTS)->--|ref point|---|imref point|--+---|angle|--------->
							 |               |
							 '-|pnt1|-|pnt2|-'

ROTATE rotates the elements about a fixed point.

With  CENTER,  you indicate a fixed point and an angle.   The angle can also be
indicated with two points.  In this case, the system uses the angle between the
two points with respect to the fixed point.

TWO_PTS includes a MOVE as well as a  ROTATE.   The  elements  are  moved  from
ref_point to imref_point, then rotated around imref_point as in CENTER.

Example:   MODIFY ROTATE 50,50 60 (select) rotates the selected elements around
the point 50,50 by the angle 60.
================================================================================
^MIRROR
MIRROR option

	    ,--------<-------------,
	    |                      |
	    |-----(COPY)----->-----'
	    |                      |
	    '-----(DEL_OLD--->-----'
	    |
-->(MIRROR)-+--+(TWO_PTS)+-------|pnt1|---->---|pnt2|----->--------------->
	    |  v         ^
	    |  '---------'
	    |
	    '---(HORIZONTAL)-+---|pnt|----->------------------------------>
	    |
	    '---(VERTICAL)---+---|pnt|----->------------------------------>
	    |
	    '---(CENTER)---------|pnt|----->------------------------------>

MIRROR  mirrors  the  elements across a given line or point.  The line or point
need not exist in the drawing.

With TWO_PTS, you give two points on the mirror line.

HORIZONTAL and VERTICAL mirror about  horizontal  and  vertical  mirror  lines,
respectively.  The input is a point on the line.

CENTER  is a point reflection, and has the same effect as a 180 degree rotation
around the given point.

Example:  MODIFY (select) MIRROR 0,0 1,1 mirrors the elements  about  the  line
through 0,0 and 1,1.
================================================================================
^SCALE
SCALE option
	    ,--------<-------------,
	    |                      |
	    +---(repeat factor)----+
	    |                      |
	    |-----(COPY)----->-----'
	    |                      |
	    '-----(DEL_OLD--->-----'
	    |
-->(SCALE)--+-+(CENTER)+-----|fix point|----+----|scale factor|----+---------->
	    | v        ^                    |                      |
	    | '--------'                    +--|point1|--|point2|--+
	    |
	    +->(TWO_PTS)---|ref point|---|imref point|-+--|scale factor|----+->
						       |                    |
						       +-|point1|--|point2|-+

SCALE scales the elements with respect to a fixed point.

With CENTER, you give the fix point, then a scale factor.  The factor 2 doubles
the elements sizes; the factor .5  or -2 halves  them.   You  can  specify  the
factor  with  two  points;  the resulting scale moves whatever was at the first
point to the second point.

TWO_PTS is a MOVE, then a SCALE.   The elements are  moved  from  ref_point  to
imref_point, then scaled about imref_point as in CENTER.

Example:  Suppose you want to scale a rectangle symmetrically around its center
by  a  factor  of  2.   Find the center point (possibly by drawing construction
lines as diagonals), then say MODIFY (select rectangle) SCALE (indicate center)
2.
================================================================================
^SIMILAR
SIMILAR option
	    ,--------<-------------,
	    |                      |
	    +---(repeat factor)----+
	    |                      |
	    |-----(COPY)----->-----'
	    |                      |
	    '-----(DEL_OLD--->-----'
	    |
-(SIMILAR)--+---|pnt1|----|pnt2|--->---|ipnt1|----|ipnt2|------------------->


SIMILAR has the same effect  as  a  MOVE,  ROTATE,  and  SCALE  together.   The
resulting  geometry  has  the  same  shape  as  the original, but it may have a
different size, point in a different direction, and lie somewhere else.

You indicate first two points, then two image points.   SIMILAR maps the  first
point onto the first image point, and the second onto the second.

SIMILAR  can  be useful for fitting a part into a drawing.   You indicate first
two points on the part, then the two places where these points should go.
================================================================================
^AFFINE ISOMETRIC DIMETRIC TRIMETRIC
AFFINE option

	    ,--------<-------------,
	    |                      |
	    +---(repeat factor)----+
	    |                      |
	    |-----(COPY)----->-----'
	    |                      |
	    '-----(DEL_OLD--->-----'
	    |
(AFFINE)--->+--|pnt1|---|pnt2|---|pnt3|---|ipnt1|---|ipnt2|---|ipnt3|------>


AFFINE is the most general transformation in the system.   It  maps  the  first
three  points  to the second three points.   For example, if you indicate three
points of a triangle, the second three points tell where each end point of  the
triangle  is  to  go.   Depending  on  the  input,  this can produce any of the
previous transformations, as well as a scale in only one direction (e.g., along
one axis, but not the other) that distorts circles into ellipses.

A useful visualization of an affine mapping is this.  Think of the first  three
points  as  being  the origin, unit X vector, and unit Y vector of a coordinate
system.   The next three points are then the same points of  a  new  coordinate
system.

AFFINE can mimic the results of any of the previous transformations.   Assuming
a rectangular coordinate system and degrees as the angle measure, the following
are equivalent:

      AFFINE: 0,0 1,0 0,1  1,1 2,1 1,2  and MOVE 0,0 1,1
      AFFINE: 0,0 1,0 0,1  0,0 0,1 -1,0 and ROTATE 0,0 90
      AFFINE: 0,0 1,0 0,1  0,0 1,0 0,-1 and MIRROR HORIZONTAL 0,0
      AFFINE: 0,0 1,0 0,1  0,0 2,0 0,2  and SCALE 0,0 2

An example of an effect not obtainable by the other transformations:

      AFFINE 0,0 1,0 0,1  0,0 2,0 0,3

scales along the X axis by 2 and along the Y axis by 3.

AFFINE  can  also  be  used  to  produce  axonometric  projections,   including
isometric, dimetric, and trimetric:

ISOMETRIC  front view: AFFINE 0,0 -1,0 0,1  0,0 COS(150),SIN(150) 0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 COS(30),SIN(30) 0,1
	   top view  : AFFINE -1,0 0,1 0,0  COS(150),SIN(150) COS(30),SIN(30)
					    0,0

DIMETRIC   front view: AFFINE 0,0 -1,0 0,1  0,0 COS(173),SIN(173) 0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 0.5*COS(45),0.5*SIN(45) 0,1
	   top view  : AFFINE -1,0 0,1 0,0  COS(173),SIN(173) 0.5*COS(45),
					    0.5*SIN(45) 0,0

TRIMETRIC  front view: AFFINE 0,0 -1,0 0,1  0,0 0.75*COS(126),0.75*SIN(126) 0,1
	   side view : AFFINE 0,0 1,0 0,1   0,0 0.75*COS(17),0.75*SIN(17) 0,1
	   top view  : AFFINE -1,0 0,1 0,0  0.75*COS(126),0.75*SIN(126)
					    0.75*COS(17),0.75*SIN(17) 0,0

Parameters for other axonometric views can be found in books on the subject.
================================================================================
^MEASURE_ANGLE MEASURE ANGLE
MEASURE_ANGLE function

---->(MEASURE_ANGLE)---->|pnt 1st elem|----->|pnt 2nd elem|----->

MEASURE_ANGLE measures the angle between  the  two  identified  elements.   The
angle is measured from the first element to the second, counterclockwise.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MEASURE_AREA MEASURE AREA
MEASURE_AREA function

---->(MEASURE_AREA)---->|id_point|---->

MEASURE_AREA  measures the area enclosed by the identified circle, arc, spline,
or fillet.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MEASURE_COORDINATE MEASURE COORDINATE
MEASURE_COORDINATE function

---->(MEASURE_COORDINATE)---->|point|---->

MEASURE_COORDINATE measures the coordinates of the indicated point.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MEASURE_DISTANCE MEASURE DISTANCE HORIZONTAL VERTICAL
MEASURE_DISTANCE function

->(MEASURE_DISTANCE)->+------------------>+-->|xy id_point|-->|xy id_point|--->
		      |                   |
		      +-->(HORIZONTAL)--->+
		      |                   |
		      `--->(VERTICAL)-----'

MEASURE_DISTANCE   measures   the   distance   between  the  indicated  points.
HORIZONTAL or VERTICAL specifies the horizontal or vertical distance;  this  is
independent of the input coordinate system.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MEASURE_LENGTH MEASURE LENGTH
MEASURE_LENGTH function

---->(MEASURE_LENGTH)---->|id_point|---->

MEASURE_LENGTH measures the length of the identified line, circle, arc, fillet,
or spline.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MEASURE_RADIUS MEASURE RADIUS
MEASURE_RADIUS function

---->(MEASURE_RADIUS)---->|id_point|---->

MEASURE_RADIUS measures the radius of the identified circle, arc or fillet.

If the system is being used interactively, the value is written in the keyboard
input buffer so it can be used as input without retyping.

The value is also written into the system inquiry array (see INQ).
During the measure functions ruler follow is off.
================================================================================
^MENU ICON
MENU function

-->(MENU)-->+---->|display_color|---->+---->|background_color|---->+
	    |                         |                            |
	    v                         v                            v
	    +<------------------------+<---------------------------+
	    |
	    v
	    +---->|display_text|---->+---->|action_text|---->+
	    |                        |                       |
	    v                        v                       v
	    +<-----------------------+<----------------------+
	    |
	    v
	    +---->|row|---->|column|----------------------------------->+
	    |                                                           |
	    v                                                           v
	    +-->(BOX)-->|startrow|-->|startcol|-->|endrow|-->|endcol|-->+---->

MENU defines the appearance and the action of screen menu  slots.   Unspecified
items retain their old (previous) values.   The crt screen is not updated every
time the MENU function is invoked, but rather  when  the  next  user  input  is
requested.   The  UPDATE_SCREEN  or  NEW_SCREEN  functions  may be used to show
changes immediately.

display_color:    color of the text or drawing in the menu slot
background_color: color of the menu slot background
display_text:     text defining the appearance of the menu slot (see below)
action_text:      text used as input if the menu slot is picked
row:              row number of the selected menu slot
col:              column number of the selected menu slot
startrow:         row number of the first selected menu slot
startcol:         column number of the first selected menu slot
endrow:           row number of the last selected menu slot
endcol:           column number of the last selected menu slot

Instead of entering a row and column number pair, you can digitize the required
menu slot.

If the first character of the display_text has an ordinal value  of  255,  then
the display_text is not displayed literally, but it is interpreted as a graphic
menu  icon  command  string.   The  format  of such a graphic menu icon command
string is:

   +<----------------------------------------+<------------------------+
   |                                         ^                         ^
   |                                         |                         |
   v                                         v                         |
-->+-->|move opcode|-->|x_move|-->|y_move|-->+-->|x_draw|-->|y_draw|-->+-->

move opcode:                     character with ordinal value 255.
x_move, y_move, x_draw, y_draw:  characters with ordinal values of 0..254.
================================================================================
^MENU_LAYOUT MENU
MENU_LAYOUT function

		       +<-------------------------+
		       |                          ^
		       v                          |
---->(MENU_LAYOUT)---->+---->+------------->+---->+---->(END)---->
			     |              |
			     +-->(UPPER)--->+
			     |              |
			     +-->(LOWER)--->+
			     |              |
			     +-->(RIGHT)--->+
			     |              |
			     +-->(LEFT)---->+
			     |              |
			     +-->|number|-->+
			     |              |
			     +-->|string|-->+

MENU_LAYOUT defines the location and the shape of the crt menu.   Number is the
height of the next menu row in pixels (range:   0..255).  The default value for
height is the character height (12 or 16, depending on the crt  type).   String
contains  information  about  the  menu  width  and the arrangement of the menu
slots.   There must be one string per row of the menu.   Within a string,  menu
slots  are separated by a bar (|).  The number of characters between bars shows
the width (in characters)  of the corresponding slot;   the  actual  characters
are  irrelevant,  and are typically blanks or numbers.   If no string is given,
the existing menu layout is moved to the specified corner.   The default corner
is LOWER RIGHT.

As  the  MENU_LAYOUT function is mostly used in personality macros, it does not
automatically remove any old screen menu from the crt screen.   The display  of
the  new  screen menu is deferred until the next user input is requested.   The
UPDATE_SCREEN or NEW_SCREEN functions may be used to show changes immediately.

The MENU_LAYOUT function initializes all menu slots with the following values:

  display_color:      WHITE
  background_color:   BLACK
  display_text:       ''
  action_text:        ''

You then use MENU to change these values.

Example:

  MENU_LAYOUT UPPER RIGHT
      '123456789012| | | | |  '
      '            | | | | |  '
   50 '            |          '
      '            |          '
  END

This defines a menu in the upper right corner of the screen.   There  are  four
lines  in the menu, each the width of 23 characters.   The first two lines have
six slots, the second, two.   The first slot in each row can contain up  to  12
characters.  The third line is 50 pixels high.
================================================================================
^MERGE SPLIT
MERGE command

	    ,----------------------------------------------,
	    v                                              ^
-->(MERGE)--+-->|elem 1|--->|elem 2|---+-->|merge pnt|---->+---->
				       |                   ^
				       '-------------------'

MERGE causes two elements to be merged into a single one.   Currently  you  can
only merge two lines into a line, two fillets into a fillet or a circle, or two
arcs  into an arc or a circle.  The merge is only allowed where it makes sense,
e.g.,  the lines must point in the same direction and have a common end  point,
and  the  arcs  or  fillets must have the same center and radius.   If two arcs
forming a circle are merged, the user must choose one of the two common  points
for  the  merge to take place;  the other point is left as the peripheral point
of the resulting circle.
================================================================================
^MODIFY MIRROR MOVE ROTATE SCALE SIMILAR AFFINE
MODIFY command

	     +--------<-------------+
	     |                      |
-->(MODIFY)--+->---|select|----->---+
	     |                      |
	     +->---|MOVE|------>----+
	     |                      |
	     +->---|ROTATE|---->----+
	     |                      |
	     +->---|MIRROR|---->----+
	     |                      |
	     +->---|SCALE|----->----+
	     |                      |
	     +->---|SIMILAR|--->----+
	     |                      |
	     +->---|AFFINE|---->----+
	     |                      |
	     +->---(UNDO)------>----+
	     |                      |
	     +->---(COPY)------>----+
	     |                      |
	     +->---(DEL_OLD)--->---+
	     |                      |
	     +->-(repeat factor)->--+

MODIFY  modifies elements with MOVE, ROTATE, MIRROR, SCALE, SIMILAR, or AFFINE.
See MAPPING for a description of these transformations, including the syntax.

There are two ways to use MODIFY.   You can select elements, then subject  them
to  one  or  more modifications, or you can specify a modification, then select
elements  one  or  more  times.   If  you  want  only  one  selection  and  one
modification, they can come in either order.

With  DEL_OLD,  the  selected elements are transformed; with COPY, it is a copy
that is transformed.  The default is DEL_OLD.

UNDO helps you undo mistakes.   With DEL_OLD, UNDO applies the reverse  of  the
most  recent  transformation to the selected elements.  With COPY, UNDO deletes
the copies (1 or more, depending on the repeat  factor)  created  by  the  most
recent transformation.  It is rarely possible to UNDO more than once.
================================================================================
^MOVE_DIMENSION TEXT_ONLY DIMENSION
MOVE_DIMENSION command

		     ,---------------------------------------------,
		     |                                             |
-->(MOVE_DIMENSION)--v--+---------------+----|id_pnt|--|move_pnt|--+--->
			v               ^
			|               |
			`--(TEXT_ONLY)--'

MOVE_DIMENSION  moves  the  identified  dimension.   With  TEXT_ONLY,  only the
dimension text is moved; otherwise, the dimension line and the extension  lines
are updated automatically.
================================================================================
^NAME KEYWORD MACRO
name

---->|letter|---->+--------->--------+---->
		  ^                  v
		  |                  |
		  +<----|letter|<----+
		  |                  |
		  ^                  v
		  +<----|digit|<-----+
		  ^                  |
		  |                  v
		  +<------(_)<-------+

This describes the syntax of a macro name.   Macros are defined by DEFINE, LET,
and READ.

Names must begin with a letter; subsequent characters can be letters,  numbers,
or underbar (_).  Included in letters are the standard ASCII letters as well as
the extended ASCII characters from (CHR 161) through (CHR 254).

It  is  usually  advisable  to avoid macro names that are the same as keywords,
which are the names known to the system on startup.   However,  if  you  really
must, it is possible to redefine a keyword to a certain extent.   Normally, you
can type macro names in upper or lower case, or even mixed;  keywords  must  be
either  upper  or  lower  case.   If  you  want to define a macro with the same
letters as a keyword, you must avoid typing the macro name in  one  case.   For
example,  'LINE'  and  'line' are always keywords, but 'Line' is available as a
macro name.  Once defined, the macro 'Line' can be invoked (and could have been
defined) with any mixture of upper and lower case letters.
================================================================================
^NCGL NC
Ncgl macro

---->(Ncgl)---->|filename|---->

Ncgl generates a file in the NCGL input language (used by NC programs).  If any
geometry  in  the active part has been labeled with the LABEL command, the file
describes that geometry; otherwise, it describes all the geometry in the active
part.  See also APT, COMPACT.
================================================================================
^NETUNAM LAN FILES
NETUNAM function

---->(NETUNAM)---->|network special file|---->|username:password|---->

The NETUNAM  function  sets  up  user  authentication  for  file  access  on  a
particular  remote  HP-UX  system.   |network  special  file| is a string which
identifies the remote system.  |username:password| is a string representing the
user's login name and password (if required) for the remote system.  A colon is
used to separate the login name from the password.  The  login  information  is
passed  to  the remote HP-UX system for immediate verification.  It is used for
the duration of the session to determine the access rights for all remote  file
accesses to that system.  Series 200 and 300 computers can have a maximum of 20
RFA connections per process.  Connections can be freed by executing the NETUNAM
function  with  the  network  special  file for the computer with which you are
terminating the connection and the empty string for the login.

Example:
  NETUNAM '/net/PC_Design1' 'john:deadbolt'
================================================================================
^NEW_SCREEN REDRAW
NEW_SCREEN function

---->(NEW_SCREEN)---->

NEW_SCREEN redraws the entire crt screen.
================================================================================
^NUMBER
number

--->+---------->+--->+--------------------->(.)-------->|integer|--->+
    |           |    |                                               |
    +--->(-)--->+    +--->|integer|--->+---------------------------->+
				       |                             |
				       +--->(.)--->+---------------->+
						   |                 |
						   +--->|integer|--->+
								     |
								     v
			       +<------------------------------------+
			       |
			       +---------------------------------------------->
			       |
			       +--->(E)--->+--->+---------->+--->|integer|---->
			       |           |    |           |
			       +--->(L)--->+    +--->(+)--->+
			       |           |    |           |
			       +--->(e)--->+    +--->(-)--->+
			       |           |
			       +--->(l)--->+

integer

---->+---->|digit|---->+---->
     ^                 v
     +--------<--------+

The format of a number is as shown.  The possible exponent specifiers (E, L, e,
or l) all have the same effect.

The exponent range supported is approximately -300 to 300.  However, the system
often computes the product of, say, point coordinates, which means that -150 to
150 is a more realistic exponent range.

Data accuracy is approximately 12 decimal places, in both environments.
================================================================================
^ON_ERROR
ON_ERROR function

---->(ON_ERROR)---->|string|---->

The string specified with the  ON_ERROR  function  is  used  as  input  at  the
occurrence  of the next error.   Once used in this way, the string is discarded
and ON_ERROR must be used again to reenable this feature.
================================================================================
^OPEN_INFILE OPEN_OUTFILE CLOSE_FILE READ_FILE WRITE_FILE FILES
OPEN_INFILE function

---->(OPEN_INFILE)---->|number|---->|filename|---->

OPEN_INFILE  first  closes any open file with the same id number and then opens
the named file for reading by the READ_FILE function.   Number is an integer in
the  range  from  1  to  10 which is used for all subsequent references to this
file.
================================================================================
^OPEN_OUTFILE OPEN_INFILE CLOSE_FILE READ_FILE WRITE_FILE FILES
OPEN_OUTFILE function

---->(OPEN_OUTFILE)---->|number|---->+------------------>+---->|filename|---->
				     |                   |
				     +---->(DEL_OLD)---->+
				     |                   |
				     +---->(APPEND)----->+

OPEN_OUTFILE first closes any open file with the same id number and then  opens
the named file for writing by the WRITE_FILE function.  Number is an integer in
the range from 1 to 10 which is used for  all  subsequent  references  to  this
file.  The file may be a printer.

 -- default:   If  the  file  specified already exists, an error message is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If the file specified already exists, its old  contents  are
    lost, otherwise a new file is created.

 -- APPEND:   If the file specified already exists, the information will be
    appended to the end of the file, otherwise a new file is created.
================================================================================
^ORIGIN
ORIGIN function

--->(ORIGIN)-------+--->(ON)---,
		   |           |
		   '--->(OFF)--+--->

ORIGIN switches the symbol for the input coordinate system origin on or off.
================================================================================
^OUTPUT_HP15 OUTPUT_HP16
OUTPUT_HP15 function

---->(OUTPUT_HP15)---->

OUTPUT_HP16 function

---->(OUTPUT_HP16)---->

OUTPUT_HP15 switches the output mode for kanji text to HP15  code,  OUTPUT_HP16
switches  it  to  HP16  code.   Regardless of this current kanji output mode ME
Series programs are able to read HP15 and HP16 codes from all files.

The  default  mode on HP-UX is HP15.  The default mode on Pascal Workstation is
HP16.
================================================================================
^OVERDRAW I_OVERDRAW
OVERDRAW macro
				  ,---------------------------------,
				  v                                 ^
---->(I_overdraw)---|begin pt|----+--->|pt on elem|-->|seg end pt|--+-->


OVERDRAW lets you draw a series of connected lines and  arcs  (a  biarc)   over
construction  geometry.   You  first  indicate  the begin point of the contour.
Then, for each line or arc that you want, you identify either  a  c_line  or  a
c_circle  for  the  contour  to  follow, then the end point of the line or arc.
When you identify a  c_circle,  there  are  two  possible  directions  for  the
contour.   The  system  chooses  the direction suggested by your identification
point.

OVERDRAW  is  actually  only  the  name  of  a  menu  slot;  the  macro name is
I_overdraw.
================================================================================
^PARTS
Parts

This section is a brief introduction to parts.   For help with  specific  parts
commands,  use HELP with the command name, or say HELP PARTS and then use the N
(Next) command of the help system.

A part is an element that contains other elements.   Thus parts group  elements
together.  Don't take the name "part" too literally.  The elements grouped into
a part needn't have any physical meaning;  they  are  simply  grouped  for  the
purposes of the drawing.

Parts impose a hierarchy on the elements of a  drawing.   At  the  top  of  the
hierarchy is a part named (initially) "Top".   The top part is the only element
that does not belong to a part.   It is present in every drawing,  even  before
you add any elements, and cannot be deleted.

Except  for  the  top  part,  all elements belong to exactly one part.   A part
belonging to another is known as its  "child";  similarly,  a  part  containing
another  is  its "parent".   Unlike human families, a part child never has more
(or less) than one parent.

One (and only one) part in the hierarchy is called the "active part".  The name
of this part is shown in the status line.  EDIT_PART lets you choose which part
is  active.   The  active  part  is  the  part  in  which  all new elements are
automatically placed.   Furthermore, you can only delete or modify elements  in
the  active  part.   (There  are  a  very  few  exceptions  to these two rules:
CREATE_DETAIL and LOAD can both produce elements in other parts, and GATHER can
remove elements from other parts.)

There are two ways to make a new part.   You  can  create  the  geometry,  then
impose  a  parts  structure on it, or you can create the parts first, then fill
them with geometry.   CREATE_SUBPART is  the  command  for  the  first  method.
INIT_PART and INIT_SUBPART are the commands for the second.

Once  you  have  a parts structure, GATHER allows you to move elements from one
part to another.

SMASH_SUBPART deletes a part but retains its elements.

Except for the commands already mentioned, which are all commands  that  change
the  parts  structure,  there  are few special commands for manipulating parts.
The reason is simple:   parts are elements, just as, say, lines are, and can be
manipulated  with  the same commands as other elements.   To delete a line, for
example, you say DELETE, then identify the line.   To delete a  part,  you  say
DELETE and identify the part.  You identify the part by digitizing any geometry
in it.

The fact that parts have several layers of structure introduces some complexity
into the process of identifying elements.   The problem is that (unless you use
SHOW_PART)  there is nothing on the screen that corresponds to a  part  itself;
you  see  only  the  geometry that it contains.   Thus, without some convention
imposed by the system, there would be no way to unambiguously identify  a  part
with the tablet or mouse.  (You can always enter the name of the part, but this
is often less convenient).  If you digitize a line, for example, and you are in
the DELETE command, do you want to delete the line, or the part containing  it,
or that part's parent, or ...?

To  make  the  identification unambiguous, we use the parts structure itself to
impose the following convention.   We assume that you always want  elements  in
the active part.   Thus, if a line is contained in part A, and part A is in the
active part, and you say DELETE and identify the line, then we assume you  want
to  delete  part  A.   Part A is, at this level, a single entity that cannot be
treated as individual elements.   Of course, you can always  make  part  A  the
active  part; then the members of part A can be manipulated individually.  This
is the reason for the rule, mentioned above, that you can only delete or modify
parts in the active part.

Unfortunately, this identification  convention  is  not  completely  consistent
throughout  the  system.   Sometimes  the  convention  would make little sense.
Consider EDIT_PART, for example.   We want to use EDIT_PART to edit a  part  on
the  screen.  We  would  like to digitize the new part.   It would be a serious
limitation to require that we could only identify parts  in  the  active  part.
Therefore,  EDIT_PART  has  its own rules about how parts are identified, rules
that allow you to identify parts anywhere in the parts tree.  There  are  other
commands that do not follow the "only in active part" convention, but they all,
like  EDIT_PART, are ones that do not change your drawing data.   Commands that
change your data (modify, delete,  change  text  parameters,  convert  splines,
etc.) are in general limited to the active part only.
================================================================================
^PARTNAME PARTS NAME
part name

			     ,-----------------------,
			     v                       ^
--+--'/'--+-->|simple name|--+--'/'-->|simple name|--+-->
  v       ^                  v                       ^
  '-------'                  '-----------------------'

A part name is a series of one or more simple names separated by  slashes,  and
possibly  beginning  with  a  slash.   A  simple name can contain any character
except slash.

Each part has a simple name.   If this simple name is unique, then the name can
be  used  to  identify the part, and no slashes are needed, regardless of where
the active  part is.   Simple names need not be unique, however, so  the  slash
notation  is used to give each part an unambiguous name.   The naming scheme is
very much like the UNIX or SRM file tree.   'abc' names a part in  the   active
part.   '/'  names the top-level part (root).   'abc/def' names the part def in
the part abc in the active  part. '/abc/def' is similar, except abc is found in
the top part instead of the current directory.

Within a part name, '..' refers to the parent of the part named so far, and '.'
refers to the part itself.   If these constructs appear at the beginning  of  a
part  name, the active  part is considered the "part named so far".   Thus, '.'
is a way of naming the active  part without having to remember its  real  name,
'../xxx'  names a part 'xxx' which is a sibling of the active  part, and so on.
If the part named so far is the top, then '..' is the same as '.'.

Currently  no  checks  are made to ensure that parts have unique names within a
given directory.   Furthermore, when a part is copied, the copy has exactly the
same name as the old part.  Thus, it is possible that a part has no unambiguous
name, and so must be identified in some other way, e.g.,  by picking an element
belonging to it.
================================================================================
^PARTS_LIST TREE PARTS
PARTS_LIST function

-->(PARTS_LIST)--+-->(TREE)--+--+----------------(SCREEN)-----------+-->
		 v           ^  |                                   |
		 '-----------'  '--+-----------+--|file specifier|--'
				   |           |
				   +-(DEL_OLD)-+
				   |           |
				   '-(APPEND)--'


PARTS_LIST normally shows the parts in the active   part  whose  names  do  not
begin with '.', along with a count of how many times each part occurs.

With  the  TREE  option,  all  parts are listed; the indentation shows the part
structure.  A '[*]' shows which part is the active one.   Symbols and isometric
views are labeled as such, and the shared parts are numbered.

SCREEN sends the output to the built-in editor (see  EDITOR).   Otherwise,  the
output is sent to the file specified.  With DEL_OLD, a file of the same name is
overwritten  without  comment.   With APPEND, the parts list goes at the end of
the named file, if it exists; otherwise, a new one is  created.   With  neither
DEL_OLD nor APPEND, the presence of a file with the same name is an error.

You can get a parts list into the drawing as follows.

 -- Send a parts list of either type to the screen editor.

 -- Edit the list as required, then use the O or W  command  to  write  the
    information to a temporary file.  Leave the editor.

 -- Invoke  the  TEXT  command with the option SCREEN.   You are now in the
    editor again.

 -- Load the temporary file with the L command, then leave the editor.

You now have a block text on your cursor, containing the parts list.
================================================================================
^PASSWORD
PASSWORD function

---->(PASSWORD)---->|string|---->

The PASSWORD function is used to enter the enable password into the system.
================================================================================
^PLOT AS_DISPLAYED CURRENT_WINDOW ALL OFF OFFSET ROTATE DEFAULT DRAWING
PLOT command

->(PLOT)->+------------->+->+------------------->+->+-------------------->+---.
	  |              |  |                    |  |                     |   |
	  `->|offs_pnt|->'  `-->|rotate_angle|-->'  `-->(AS_DISPLAYED)--->'   |
									      |
       .----------------------------------------------------------------------'
       |
       +--->(DEFAULT)--->|string|---.
       |                            |
       +<---------------------------'
       |
       `--->+----------->+--->+----------------->(ALL)---------------->+--->
	    |            |    |                                        |
	    `-->(OFF)--->'    +------------->(CURRENT_WINDOW)--------->+
			      |                                        |
			      +---------------->|string|-------------->+
			      |                                        |
			      `--->(TWO_PTS)--->|ll pnt|--->|ur pnt|-->'


PLOT plots a drawing on the plotter.

offs_pnt:   point  (default  0,0)
Causes the drawing to be moved on the paper by the specified  amount,  in  user
units.   This  can  be used to move the drawing so that it coincides with label
fields on the plot paper.

rotate_angle: number (default 0)
Gives the rotation angle of the drawing on the paper.

DEFAULT
Sends a string containing HPGL commands to the plotter after  the  initializing
and  before  any drawing element is plotted.  This is useful to change the plot
speed or other global plotter parameters.

AS_DISPLAYED

Means  that  the  drawing  is  to  be plotted as it is displayed in the current
viewport, with construction geometry, spotlighting,  vertex  points,  and  part
boxes.  This option tells HOW to plot the drawing, but not WHAT to plot.

If AS_DISPLAYED  is not specified the model is  plotted  as  a  normal  drawing
suppressing  vertex   points,   spotlighting,  show  changes,  part  boxes  and
construction geo, but including all geometry and dimensioning.

OFF
No paper advance before plotting.

ALL
CURRENT_WINDOW
string
ll_pnt, ur_pnt
This group of options tells WHAT to plot.

 -- ALL means the entire drawing, starting at the top part.

 -- CURRENT_WINDOW means only that part  of  the  drawing  visible  in  the
    current viewport.

 -- A  string  means that the characters of the string are sent directly to
    the plotter;  no model data is plotted  and  the  soft  limits  on  the
    plotter are not changed.

 -- Two points specify a box; elements within this box (starting at the top
    part) are plotted.
================================================================================
^DEFAULTS PATTERN IRON STEEL COPPER PLOT P1 P2
^DEFAULTS AS_DISPLAYED PLOT_ROTATE OFFSET FORMAT
^VARIABLES PLOTTER_TYPE GENERATE ORIGIN NODE PLOT_SCALE PLOT_DESTINATION
^VARIABLES PLOT_DESTINATION HPIB CURRENT_WINDOW
The file DEFAULTS contains default values used by plotting and some  predefined
hatch patterns (iron steel copper).
Most of the plot values can be set by the set up or plot menu.

Value default:
  Description
--------------

Sys_srm_node 'N':
  N can be replaced by the SRM node number or the unix terminal number.
Sys_plot_plotscale 1:
  Used for PLOT_SCALE (0 means FIT)
Sys_plot_rot 0
  Contains the rotate angle for plot.
Sys_plot_source ALL
  Contains ALL or CURRENT_WINDOW for PLOT
Sys_plot_as_displayed 0
  1 AS_DISPLAYED option in PLOT
Sys_plot_default ''
  String for DEFAULT in PLOT
Sys_plot_offset_x 0
Sys_plot_offset_y 0
  X and Y offset used by PLOT
Sys_plot_format 'A4'
  Format name to select the hard limits in plotdefs
Sys_plot_type 7550
  PLOTTER_TYPE
Sys_plot_filename_prefix '/me10/spooldir1/p'
  PLOT_DESTINATION for spooling
Sys_plot_filename_delold 0
  Use DEL_OLD option in PLOT
Sys_plot_filename_generate 1
  0 use only the filename_prefix
  1 append to the filename_prefix the format name, the node number and the
    current time. (Example: PREFIXA4_3_140600)
================================================================================
^PLOTDEFS PLOT FORMATS DEFAULTS
The file plotdefs contains offsets and hardlimits for all  plotters  and  paper
formats.  This  file  is  always  read by the plot personality for each spooled
plot.

The following format is used:

width_decrement height_decrement
'format names' 'plotter names' x_offset y_offset format_width format_height
...
''

From  all  format_width and format_height values the width and height decrement
is subtracted respectively.

If format_width < format_height the plot is rotated by 90 degrees.
================================================================================
^PLOTTER_TYPE SRM SPOOL 9872 7090 7470 7475 7550 7580 7585 7586
^PLOTTER_TYPE 7570 7595 7596
PLOTTER_TYPE function

--->(PLOTTER_TYPE)--->+--->|plotter number|--->+--->
		      |                        |
		      `---->|plotter name|---->'

PLOTTER_TYPE specifies the type of plotter  you  have.

The plotter number must be one of 9872,7090,7470,7475,7550,7580,7585,7586,
				  7570,7595,7596.

The plotter name is a string, and must be one of the following:

    9872   7090   7470   7475   7550   7570   7580   7585   7586   7595  7596
    9872A         7470A  7475A         7570A  7580A  7585A  7586B  7595A 7596A
    9872B                                     7580B  7585B
    9872C
    9872S
    9872T

Note  that  the  SRM  supports  only  some  of these plotters as spool devices,
depending on the revision of the OS.
================================================================================
^PLOT_CENTER CENTER ON OFF
PLOT_CENTER function

--->(PLOT_CENTER)--->+--->(ON)---->+--->
		     |             |
		     `--->(OFF)--->'

PLOT_CENTER tells whether  the  drawing  should  be  centered  in  the  plotter
viewport (ON) or not (OFF).  See PLOT_VIEWPORT.
================================================================================
^PLOT_DESTINATION DESTINATION DEL_OLD SPOOL
PLOT_DESTINATION function

--->(PLOT_DESTINATION)--->+---------------->+--->|spool file name|--->
			  |                 |
			  `--->(DEL_OLD)--->'

      spool file name : string

PLOT_DESTINATION  tells where the plot should be sent.  You give the name of  a
spool file. Unless DEL_OLD is entered, it is an error to name a file that
already exists.
================================================================================
^PLOT_FORMAT FORMAT FWIDTH FHEIGHT HARDLIMITS
PLOT_FORMAT function

--->(PLOT_FORMAT)--->|fwidth|--->|fheight|--->

      fwidth,fheight : number

PLOT_FORMAT defines the maximal plotting area (hard limits) which can be  used.
See PLOT_VIEWPORT for a picture.

The width and height is specified in user units.
================================================================================
^PLOT_LINETYPE_LENGTH LINETYPE ALL
PLOT_LINETYPE_LENGTH function

--->(PLOT_LINETYPE_LENGTH)--->+--->|length1|---> ... --->|length7|--->+--->
			      |                                       |
			      +----->|linetype|--->+----->|length|--->'
			      |                    |
			      `------->(ALL)------>'

PLOT_LINETYPE_LENGTH  specifies the length of the pattern (user units) for each
linetype.

You can enter seven different lengths, one for each linetype except solid;  see
LINETYPE for the correct order.   You can also enter a  single  linetype/length
pair, or, with ALL, a single length for all linetypes.
================================================================================
^PLOT_PEN_TABLE OLD
PLOT_PEN_TABLE function (OLD)

-->(PLOT_PEN_TABLE)--->|transformation row for solid|--->.
		  .<-------------------------------------'
		  `--->|transformation row for dashed|--->.
		  .<-------------------------------------'
		  `--->|transformation row for long_dashed|--->.
		  .<-------------------------------------------'
		  `--->|transformation row for dot_center|--->.
		  .<------------------------------------------'
		  `--->|transformation row for dash_center|--->.
		  .<-------------------------------------------'
		  `--->|transformation row for phantom|--->.
		  .<---------------------------------------'
		  `--->|transformation row for long_dotted|--->.
		  .<-------------------------------------------'
		  `--->|transformation row for dotted|------------->

PLOT_PEN_TABLE controls the mapping of linetypes and colors to plotter pens and
plotter linetypes.   For each linetype, in the order listed, you give a  string
describing the transformation.

The  transformation  row  for  a  linetype is a string consisting of 8 pairs of
characters, one for each color.   The first character in  the  pair  names  the
plotter  linetype,  'A'..'H'  for solid to dotted, and the second gives the pen
number.  The character pairs can be delimited by blanks.

You  can  change  the  plot pen table conveniently with EDIT_ENVIRONMENT.

The plot pen table normally supplied with the system  is  listed  below.   Note
that it is the default table with one exception:  cyan phantom lines are mapped
to pen 0, which means that they are not plotted.   The plotter frames available
on the plot menu use this color/linetype combination, which is why they are not
plotted.

PLOT_PEN_TABLE
	     {BLACK     RED   GREEN  YELLOW    BLUE MAGENTA    CYAN   WHITE}
	     {    0       1       2       3       4       5       6       7}
{A SOLID}       'A0      A2      A4      A3      A7      A6      A5      A1'
{B DASHED}      'B0      B2      B4      B3      B7      B6      B5      B1'
{C LONG_DASHED} 'C0      C2      C4      C3      C7      C6      C5      C1'
{D DOT_CENTER}  'D0      D2      D4      D3      D7      D6      D5      D1'
{E DASH_CENTER} 'E0      E2      E4      E3      E7      E6      E5      E1'
{F PHANTOM}     'F0      F2      F4      F3      F7      F6      F0      F1'
{G LONG_DOTTED} 'G0      G2      G4      G3      G7      G6      G5      G1'
{H DOTTED}      'H0      H2      H4      H3      H7      H6      H5      H1'

Use PLOT_TRANSFORMATION for new macros.
================================================================================
^PLOT_TRANSFORMATION COLOR LINEPATTERN PEN RESET ALL SAME PENNUMBER
PLOT_TRANSFORMATION function

--->(PLOT_TRANSFORMATION)--->+---------------->(RESET)---------------->+---->
 .<--------------------------'                                         ^
 +------------------>(ALL)---------------------.                       |
 |                                             v                       |
 `-->|first linetype|--+-->|second linetype|---+                       |
		       v                       |                       |
 .<--------------------+<----------------------'                       |
 |                                                                     |
 +------------------>(ALL)------------------------.                    |
 |                                                |                    |
 +----------------->|color|---------------------->+                    |
 |                                                |                    |
 `--->|first red int|---->|second red int|---.    |                    |
 .<------------------------------------------'    |                    |
 `-->|first green int|-->|second green int|--.    |                    |
 .<------------------------------------------'    v                    |
 `-->|first blue int|---->|second blue int|------>+                    |
 .<-----------------------------------------------'                    |
 |                                                                     |
 +------->(SAME)------>+----------------------->|pen|------------------'
 |                     ^
 `--->|new linetype|---'

first linetype, second linetype, new_linetype: LINEPATTERN functions
first red/green/blue, second red/green/blue intensity: number (range 0..1)
color: COLOR functions
pen: number

The  function  PLOT_TRANSFORMATION  defines a  mapping for all  elements during
plot, which have, firstly,  a linetype equal to the first  linetype or between,
(and including), the first and second linetypes, and secondly, an equal element
color or an element color within the color cube defined by the first and second
red/green/blue  intensities.   All  these  elements  are  plotted  with the new
linetype and with the specified pen.  Instead of specifying the linetype  range
SOLID  DOTTED  ALL  can  be used.   Also use ALL for color to specify the whole
color cube (0 1 0 1 0 1).   If the new linetype should be the same as  the  old
linetype   then   SAME   can   be   specified   for  the  new  linetype.    The
PLOT_TRANSFORMATION function  can  be  used more than once to specify different
transformations.  If the last specified plot transformation includes the  range
of  a  previously  defined plot transformation then the previous transformation
is  overwritten  by  the  new  one.  All  elements  which  results  in  a  plot
transformation with pen equal 0 are not plotted. The specified pen number  must
be valid with respect to the plotter to be used.

The default plot transformation (accomplished by PLOT_TRANSFORMATION RESET) is:

PLOT_TRANSFORMATION ALL 0.000 1.000 0.000 1.000 0.000 1.000 SAME 1
PLOT_TRANSFORMATION ALL BLACK SAME 0
PLOT_TRANSFORMATION ALL RED SAME 2
PLOT_TRANSFORMATION ALL GREEN SAME 4
PLOT_TRANSFORMATION ALL YELLOW SAME 3
PLOT_TRANSFORMATION ALL BLUE SAME 7
PLOT_TRANSFORMATION ALL MAGENTA SAME 6
PLOT_TRANSFORMATION ALL CYAN SAME 5
PLOT_TRANSFORMATION PHANTOM CYAN SAME 0
================================================================================
^SCREEN_TRANSFORMATION COLOR LINEPATTERN RESET ALL SAME
SCREEN_TRANSFORMATION function

--->(SCREEN_TRANSFORMATION)--->+------------>(RESET)------>+---->
 .<----------------------------'                           ^
 +------------------->(ALL)---------------------.          |
 |                                              v          |
 `-->|first linetype|-->+-->|second linetype|---+          |
			v                       |          |
 .<---------------------+<----------------------'          |
 |                                                         |
 +------------------->(ALL)---------------------.          |
 v                                              v          |
 +------------------>|color|------------------->+          |
 |                                              |          |
 `--->|first red int|---->|second red int|---.  |          |
 .<------------------------------------------'  |          |
 `-->|first green int|-->|second green int|--.  |          |
 .<------------------------------------------'  v          |
 `-->|first blue int|---->|second blue int|---->+          |
 .<---------------------------------------------'          |
 v                                                         |
 +------->(SAME)------>+----+------->(SAME)------->+-------'
 |                     ^    |                      ^
 `--->|new linetype|---'    `----->|new color|-----'

first linetype, second linetype, new_linetype: LINEPATTERN functions
first red/green/blue, second red/green/blue intensity: number (range 0..1)
color, new color: COLOR functions

The  function  SCREEN_TRANSFORMATION  defines a mapping for all elements during
the normal redraw, which have, firstly,  a linetype equal to the first linetype
or between, (and including), the first and second linetypes,  and secondly,  an
equal element color or an element color within the color cube  defined  by  the
first and second red/green/blue intensities. All these elements are drawn  with
the new linetype and with the specified new color.  Instead of  specifying  the
linetype range SOLID DOTTED ALL can be used.  Also use ALL for color to specify
the whole color cube (0 1 0 1 0 1).   If the new linetype should be the same as
the old  linetype  then SAME can be specified for the new linetype.  If the new
color  should  be the  same as the element color then SAME can be specified for
the new color. The SCREEN_TRANSFORMATION function can be used more than once to
specify different transformations.  If the last specified screen transformation
includes  the  range  of  a  previously defined  screen transformation then the
previous transformation is overwritten by the new one.

The default screen transformation (SCREEN_TRANSFORMATION RESET)  is  such  that
all elements are drawn in their own color and linetype attributes.

The input of SCREEN_TRANSFORMATION RESET is the same as
	     SCREEN_TRANSFORMATION ALL ALL SAME SAME.
================================================================================
^PLOT_SCALE SCALE SYMBOL TEXT DIMENSION
PLOT_SCALE function

--->(PLOT_SCALE)--->+--->|scale factor|--->+--->
		    |                      |
		    `------>(AUTO)-------->'

scale factor: number

PLOT_SCALE gives the factor  by  which  the  entire  drawing  (including  text,
dimensioning,  and  symbols)   is  scaled  before  being  plotted.    See  also
DRAWING_SCALE, which leaves text, dimensioning,  and  symbols  unchanged.  AUTO
means that the drawing is to be automatically fitted into the plotter viewport.
See also PLOT_VIEWPORT.
================================================================================
^PLOT_VIEWPORT OFFSET VWIDTH VHEIGHT FORMAT HARDLIMITS SOFTLIMITS P1 P2
PLOT_VIEWPORT function

--->(PLOT_VIEWPORT)--->+--------------------->(FORMAT)------------------->+-->
		       |                                                  |
		       `-->|xoffset|-->|yoffset|-->|vwidth|-->|vheight|-->'

   xoffset,yoffset,vwidth,vheight: number in user units

PLOT_VIEWPORT  locates  the  plotter  viewport (soft limits) within the maximum
plotting area (hard limits, specified by PLOT_FORMAT).  The soft limits must as
a minimum partially overlap the hard limits.  The layout is as follows:


      physical paper area
      +___________________________________________________________________
      |  maximum plotting area (hard limits)                             |
      |  +_____________________________________________________________  |
      |  |                                                        ^   |  |
      |  |                                                        |   |  |
      |  |                        plotter viewport (soft limits)  |   |  |
      |  |                        +__________________ P2          |   |  |
      |  |                        |<----vwidth----->| ^           |   |  |
      |  |                        |                 | |           |   |  |
      |  |                        ^y                | vheight     |   |  |
      |  |                        |   x             | |           |   |  |
      |  |<------xoffset--------->|___>_____________| v        fheight|  |
      |  |                     P1 ^                               |   |  |
      |  ^y                       |                               |   |  |
      |  |                        yoffset                         |   |  |
      |  |(0,0) x                 |                               |   |  |
      |  |______>_________________v_______________________________v___|  |
      |  <------------------------fwidth------------------------------>  |
      |__________________________________________________________________|


FORMAT means that the soft limits should be the same as the hard limits.
================================================================================
^VECTOR POINT POINT_3D
point token

---->|number|---->( , )---->|number|---->

point_3d token

---->|number|---->( , )---->|number|---->( , )---->|number|---->

A point is given by X,Y coordinates, a point_3d is given by X,Y,Z coordinates.
================================================================================
^POINT MIX
POINT command

-->(POINT)--+-->|point|--+-->-----------------------------------------,
	  | ^            |                                            |
	  | '------------'                                            |
	  |                                                           |
	  '-(MIX)->--|pnt1|->--|pnt2|->-|frac|------>-----------------'
					|pnt|

POINT creates point elements.   You indicate where the element should go either
directly  or  with MIX.   MIX takes two (ordinary) points and generates a point
element, either with a fraction  or  a  third  point.   With  a  fraction,  MIX
generates  the  point pnt1 + frac*(pnt2 - pnt1).   With a third point, MIX uses
the perpendicular projection of this  point  on  the  imaginary  infinite  line
between the first two points.
================================================================================
^PROBLEM TROUBLE
A Few Simple Problems and their Solutions


Cannot draw any geometry (or construction geometry).

 -- Be sure the current color isn't black.   Black elements are  invisible.
    Try LINE WHITE END and C_LINE WHITE END.

 -- Be  sure  you  haven't used VIEW in such a way that your active part is
    not visible.  Try VIEW TOP.

Hatching not visible.

 -- Be  sure  the  hatch  color  isn't   black.  Use HATCH <color> or see
    CURRENT_HATCH_PATTERN.

 -- Be  sure  the  hatch  distance  is  small  enough.   See HATCH_DIST and
    CURRENT_HATCH_PATTERN.

Dimensions disappear as they are drawn.

 -- Turn the dimensions on with SHOW DIMENSIONS ON.   If the dimensions are
    turned off, even new ones will be invisible.

Cannot turn on the grid.

 -- If there  are  too  many  grid  points  in  a  viewport,  the  grid  is
    suppressed.   Zoom  in  closer  with  WINDOW  ZOOM,  or change the grid
    spacing with GRID_FACTOR.

Cannot select an element (computer beeps).

 -- Commands that modify elements usually require that these elements be in
    the active part.  Use EDIT_PART to change your active part.

 -- Check the catching mode.   If you set it to, say, INTERSECTION, then it
    is an error to try to catch to anything but an intersection.  Try CATCH
    ALL.
================================================================================
^PURGE_FILE PURGE_DIRECTORY FILES RECURSIVE
PURGE_FILE function

-->(PURGE_FILE)-->|filename|->+-+------------------>+->+->+-->(CONFIRM)-->+->
			      | ^                   |  ^  |               ^
			      | |                   |  |  |               |
			      | |                   v  |  v               |
			      | +<-|expr|-(SELECT)<-+  |  '-->(SCREEN)--->'
			      |                        |
			      v                        |
			      '--->(RECURSIVE)-------->'

|expr|

--->|item|-------+-------->+------>|value|------>
		 |         |
		 +->(=)--->+
		 |         |
		 +->(<>)-->+
		 |         |
		 +->(>)--->+
		 |         |
		 +->(<)--->+
		 |         |
		 +->(>=)-->+
		 |         |
		 +->(<=)-->+

PURGE_FILE purges the specified files from the mass storage  medium.  The  file
'hp_catfile'  is  considered to be a system file and cannot be purged with this
function.

Wildcards can be used in filenames.  See SELECT (the entry in this  help  file)
for a description of wildcards.

See CATALOG (the entry in this help file) for a  description of the  'SELECT'
option and see  DEFINE_CATALOG for a description of |expr|.

With  the  option 'RECURSIVE' you can purge files, empty directories and entire
non empty directories (that means trees).  Without the option 'RECURSIVE'   you
can purge only files and empty directories.

The option 'SCREEN' enters the built-in editor (see EDITOR) and allows  you  to
verify  the  list of selected files and directories;  any changes in the screen
are ignored.  With an unsuccessful exit (STOP/BREAK) from the editor you do not
purge anything.
================================================================================
^PUT_PROPERTIES PROPERTIES PROP
PUT_PROPERTIES command

			  +<-----------------+
			  |                  |
---->(PUT_PROPERTIES)---->+---->|select|---->+---->

PUT_PROPERTIES  changes  the  properties (color, linetype, etc) of the selected
elements to be the current ones.   For a complete list of which properties  are
affected, see GET_PROPERTIES.
================================================================================
^READ MACRO LITERAL NUMBER STRING PNT PNT3 PROMPT FEEDBACK DEFAULT
^READ RUBBER_LINE RUBBER_LINE_HORIZONTAL RUBBER_LINE_VERTICAL
^READ RUBBER_LINE_ANG RUBBER_BOX RUBBER_CIRCLE_CEN RUBBER_CIRCLE_2_PTS
^READ RUBBER_ARC_BEG_END RUBBER_ARC_CEN_BEG RUBBER_ARC_CEN_END
READ function

-->(READ)-->+-------------->+-->+-------------->+-->+--------------->+-->+
	    |               |   |               |   |                |   |
	    +-->(LITERAL)-->+   +-->|prompt|--->+   +-->|feedback|-->+   |
	    |               |                                            |
	    +-->(NUMBER)--->+                                            |
	    |               |                                            |
	    +-->(STRING)--->+                                            |
	    |               |                                            |
	    +-->(PNT)------>+                                            |
	    |               |                                            |
	    +-->(PNT3)----->+                                            |
									 |
									 v
	    +<-----------------------------------------------------------+
	    |
	    v
	    +-->+------------------------>+-->|macro name|-->
		|                         |
		+-->(DEFAULT)-->|token|-->+

feedback:

---->+---->(RUBBER_LINE)---->|start point|---->
     |
     +---->(RUBBER_LINE_HORIZONTAL)---->|start point|---->
     |
     +---->(RUBBER_LINE_VERTICAL)---->|start point|---->
     |
     +---->(RUBBER_LINE_ANG)---->|start point|---->|angle|---->
     |
     +---->(RUBBER_BOX)---->|corner point|---->
     |
     +---->(RUBBER_CIRCLE_CEN)---->|center point|---->
     |
     +---->(RUBBER_CIRCLE_2_PTS)---->|1. periph point|---->|2. periph point|-->
     |
     +---->(RUBBER_ARC_BEG_END)---->|begin point|---->|end point|---->
     |
     +---->(RUBBER_ARC_CEN_BEG)---->|center point|---->|begin point|---->
     |
     +---->(RUBBER_ARC_CEN_END)---->|center point|---->|end point|---->

READ (re)defines a macro.   See NAME for a  description  of  permissible  macro
names.

The READ request is always directed to the user.   If the READ function is used
within a macro,  macro  execution  is  suspended  until  the  READ  request  is
satisfied  by entering a legal token or expression, after which macro execution
is resumed.

LITERAL,  NUMBER,  STRING,  PNT  and  PNT3 are possible type specifiers; a type
specifier may also be omitted.   LITERAL means that the token  entered  by  the
user is assigned directly to the macro without being evaluated.  Otherwise, the
token is evaluated.  If the result is a command, macro execution is aborted and
the  command executed.   If the result is a function, the function is executed,
then the READ  request  resumed.   With  NUMBER,  STRING,  PNT,  or  PNT3,  the
evaluated   input   must  be  a  number,  string,  2-D  point,  or  3-D  point,
respectively.   Without a type specifier, the input may be any of these  types.
Anything else causes the computer to beep, and the READ request is repeated.  A
2-D  point may be digitized; in this case, it is caught using the current catch
mode and range.

The prompt is a string used as prompt for the READ request.   If the prompt  is
omitted, the system uses a default prompt string ('Enter <macro_name>').

A feedback option may be specified.  The various kinds of possible feedback and
the required parameters are listed in the syntax diagram above.

The DEFAULT option evaluates  its  parameter  and  puts  the  result  into  the
keyboard  entry  line.   Pressing  RETURN will then enter the (possible edited)
value to satisfy the READ request.

Macro_name  may  be  any  identifier  not  reserved by the system for commands,
functions, options, etc.
================================================================================
^READ_FILE OPEN_INFILE OPEN_OUTFILE CLOSE_FILE WRITE_FILE FILES
READ_FILE function

---->(READ_FILE)---->|number|---->|macro name|---->

READ_FILE  reads one line of text from the specified file and assigns this line
as a string to the named macro.   If READ_FILE hits the end of  the  file,  the
string 'END-OF-FILE' will be assigned to the macro.  See also OPEN_INFILE.
================================================================================
^RECALL_WINDOW WINDOW
RECALL_WINDOW function

---->(RECALL_WINDOW)---->

RECALL_WINDOW  changes  the window of the current viewport to the window stored
with STORE_WINDOW.  See also LAST_WINDOW.
================================================================================
^REDRAW
REDRAW function

---->(REDRAW)---->

REDRAW redraws the contents of the current viewport.
================================================================================
^RENAME_PART PARTS
RENAME_PART command

---->(RENAME_PART)---->|new name|---->

RENAME_PART  gives  a new name to the active  part.   The name must be a simple
name,  without '/'s; the exception is that if you are at the top part, you  can
rename it to '/'.
================================================================================
^ROTATE_DIM_TEXT TEXT ROTATE DIMENSION
ROTATE_DIM_TEXT command

		       ,----------------------------------,
		       |                  +------------,  |
		       |                  |            |  |
-->(ROTATE_DIM_TEXT)---v--|rotate_angle|--v--|id_pnt|--+--+---->

ROTATE_DIM_TEXT rotates the identified dimension text by the given angle.
================================================================================
^RULER CS GRID
RULER function

-->(RULER)--+-->(ON)---,
	    |          |
	    v          |
	    '-->(OFF)--+-->

RULER turns the ruler ON or OFF.  If ON, the ruler appears in all viewports.

The ruler origin and axes are determined by the input coordinate system, set by
the commands  beginning  with  "CS_".   The  location  of  the  axis  ticks  is
determined  by  the  input  coordinate  system and by the ruler spacing, set by
GRID_FACTOR.   You can catch to a ruler tick, or to an intersection between the
ruler and an element; see CATCH for details.

The drawing of the ticks is suppressed in viewports where they  are  too  close
together.

See also FOLLOW.
================================================================================
^RUN GRAPHIC SHELL
RUN function

---->(RUN)---->+------------------>+---->|shell command line|---->
	       |                   |
	       +---->(GRAPHIC)---->+

The RUN function suspends HP-ME and starts the UNIX shell program.

If  the  string  'shell  command  line'  is  empty  (null  string),  the  shell
interactively requests commands from the user.  Execution of the command 'exit'
or input of CONTROL D causes the shell to terminate.

If the string 'shell command line' is not empty, it is passed  as  argument  to
the  shell  program.   The  shell  terminates  automatically after execution of
'command line'.

Termination  of the shell causes HP-ME to resume at the same point where it was
left.   If no option is specified, HP-ME tries to  save  the  contents  of  the
graphics  crt  and  switches  to alpha mode before starting the shell.   If the
option GRAPHIC is given, HP-ME stays in graphics mode and  does  not  save  the
contents of the graphics crt.

Example:

 -- RUN 'mkdir wolfgang'    calls the system program mkdir to create the
			    directory 'wolfgang'.

 -- RUN 'vi myfile'         calls the system editor vi to edit the file
			    'myfile'.
================================================================================
^SAVE INPUT
SAVE command

-->(SAVE)--+---------------+-->|filename|-->
	   |               ^
	   |-->(DEL_OLD)-->|
	   `-->(APPEND)--->'

SAVE saves the drawing in memory to the named file, using  the  normal  command
input language.  The output is in a form readable by INPUT.
The output of SAVE contains the current DRAWING_SCALE.

With DEL_OLD, an existing file of the same name is overwritten without comment.
With APPEND, output is added to the end of the named file, if it exists.   With
neither option, it is an error if the named file already exists.

SAVE does not save dimensioning  or  hatching.   The  saving  of  shared  parts
including  detail  parts  and  isometric  parts  is rejected.   They have to be
unshared or smashed before SAVE.   For these reasons, SAVE is not suitable  for
archiving; use STORE or STORE MI for this purpose.
================================================================================
^SAVE_ENVIRONMENT ENVIRONMENT
SAVE_ENVIRONMENT function

---->(SAVE_ENVIRONMENT)---->+------------------>+---->|string|---->
			    |                   |
			    +---->(DEL_OLD)---->+
			    |                   |
			    +---->(APPEND)----->+

SAVE_ENVIRONMENT writes the environment to the named file.   This file may be a
printer.     The   output   is   in  a  form  readable  by  INPUT.    See  also
EDIT_ENVIRONMENT.

 -- default:   If the named file already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  named file already exists, its old contents are
    lost.

 -- APPEND:   If the named file already exists, the information is
    appended to the end of the file.  Otherwise a new file is created.
================================================================================
^SAVE_FONT STORE_FONT TEXT FONT
SAVE_FONT function

-->(SAVE_FONT)-+->|fontname|-+->+--------------+-->|filename|-->
	       |             ^  |              ^
	       '--->(ALL)----'  |-->(APPEND)-->|
				|              |
				`-->(DEL_OLD)--'

SAVE_FONT saves the named font or ALL fonts to the named file.   The output  is
in a form readable by INPUT.  Fontname and filename are strings.

If the file already exists, it is an error, unless you use  DEL_OLD,  in  which
case  the  old file is deleted, or APPEND, in which case the output is added to
the end of the old file.
================================================================================
^SAVE_MACRO STORE_MACRO MACRO
SAVE_MACRO function

-->(SAVE_MACRO)-->+-->|macro name|-->+-->+-------------->+-->|string|-->
		  |                  |   |               |
		  +----->(ALL)------>+   +-->(DEL_OLD)-->+
					 |               |
					 +-->(APPEND)--->+

SAVE_MACRO saves the named macro or ALL macros to the named  file.   This  file
may be a printer.  The output is in a form readable by INPUT.

 -- default:   If the file specified already exists, an  error  message  is
    issued.  Otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified already exists, the information is
    appended to the end of the file.  Otherwise a new file is created.
================================================================================
^SAVE_MENU MENU
SAVE_MENU function

---->(SAVE_MENU)---->+------------------>+---->|string|---->
		     |                   |
		     +---->(DEL_OLD)---->+
		     |                   |
		     +---->(APPEND)----->+

SAVE_MENU  saves  the  current  crt  menu  definition  and the current viewport
configuration in the named file.  This file may be a printer.  The output is in
a form readable by INPUT.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If  the  file  specified  already  exists, the information is
    appended to the end of the file, otherwise a new file is created.
================================================================================
^SAVE_TMENU TABLET MENU
SAVE_TMENU function

---->(SAVE_TMENU)---->+------------------>+---->|filename|---->
		      |                   |
		      +---->(DEL_OLD)---->+
		      |                   |
		      +---->(APPEND)----->+

SAVE_TMENU saves the current tablet menu definition in the  named  file.   This
file may be a printer.  The output is in a form readable by INPUT.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified  already  exists,  the  information  is
    appended to the end of the file, otherwise a new file is created.
================================================================================
^SEARCH FILES PATH
SEARCH command

---->(SEARCH)---->+----------------->+---->(END)---->
		  |                  |
		  +<----|string|<----+

SEARCH  specifies the  directories in the search list. The  directories in this
list are searched (in the order here  specified) when a file that the system is
trying to read is not found in the current directory.

At  system  startup  time  the  search  list is  initialized  by the  following
algorithm:

 -- the search list is  initialized  to the value of the HP-UX  environment
    variable MEDIR.

 -- if MEDIR is not  defined,  the search list is  initialized  to the same
    absolute path (starting with '/') which was used to start the program.

 -- if MEDIR is not defined, and no absolute path was  used  to  start  the
    program, the search list is initialized to '.'.

The search list may be edited using the EDIT_ENVIRONMENT function.
================================================================================
^SECURE_MACRO MACRO
SECURE_MACRO function

---->(SECURE_MACRO)---->+---->|macro name|---->+---->
			|                      |
			+-------->(ALL)------->+

SECURE_MACRO protects the named macro or ALL macros from being listed,  edited,
saved, or traced.  Secured macros may be stored with STORE_MACRO.
================================================================================
^SELECT SELECTION IMPLICIT AND OR EXOR NOT ADD SUBTRACT GLOBAL
select

--->+--------------->{implicit selection}----------------------------+--->
    |                                                                ^
    |                                                                |
    |                                                                |
    |            ,-----------------------------------,               |
    |            v                                   ^               |
    `->(SELECT)->+->{selection}-->+---->+----------->+-->(CONFIRM)---'
		 |                ^     |--AND------>|
		 `--->(UNDO)------'     |--OR------->|
					|--EXOR----->|
					|--NOT------>|
					|--ADD------>|
					`--SUBTRACT->'

{implicit selection}

--->+-------------->+--->+-----------------+--->+--->|pt on vertex|-----+--->
    |               ^    |                 ^    |                       ^
    `--->(GLOBAL)-->'    |--> POINTS    -->|    |-->|pt on elem|------->|
			 |--> LINES     -->|    |                       |
			 |--> ARCS      -->|    |-->|pts of box|------->|
			 |--> FILLETS   -->|    |                       |
			 |--> CIRCLES   -->|    |-->(ALL)-------------->|
			 |--> TEXTS     -->|    |                       |
			 |--> SPLINES   -->|    |-->(VERTEX)->|pt|----->|
			 |--> C_LINES   -->|    |                       |
			 |--> C_CIRCLES -->|    |-->(BOX)->|pts of box|>|
			 |--> PARTS     -->|    |                       |
			 |--> LEADER_LINES |    |-->(INFOS)--|string|-->|
			 |--> HATCHING  -->|    |                       |
			 |--> GEO       -->|    '-->|part name|-------->'
			 '--> C_GEO     -->'


{selection}

--->+-------------->+--->+-----------------+--->+--->|pt on vertex|-----+--->
    |               ^    |                 ^    |                       ^
    `--->(GLOBAL)-->'    |--> POINTS    -->|    |-->|pt on elem|------->|
			 |--> LINES     -->|    |                       |
			 |--> ARCS      -->|    |-->|pts of box|------->|
			 |--> FILLETS   -->|    |                       |
			 |--> CIRCLES   -->|    |-->(ALL)-------------->|
			 |--> TEXTS     -->|    |                       |
			 |--> SPLINES   -->|    |-->(VERTEX)->|pt|----->|
			 |--> C_LINES   -->|    |                       |
			 |--> C_CIRCLES -->|    |-->(BOX)->|pts of box|>|
			 |--> PARTS     -->|    |                       |
			 |--> LEADER_LINES |    |------>|color|-------->|
			 |--> HATCHING  -->|    |                       |
			 |--> GEO       -->|    |----->|linetype|------>|
			 `--> C_GEO     -->'    |                       |
						|-->(INFOS)--|string|-->|
						|                       |
						`----->|part name|----->'


Selection is used within many commands to select  the  elements  on  which  the
command will operate.  In this help file, the syntax diagrams for such commands
always use the word "select".

There are basically two ways to select elements, corresponding to the first two
diagrams  above.   You  can  make the selection directly, or you can say SELECT
first and CONFIRM at the end.   Both methods  use  the  same  basic  selection,
designated above by "{selection}", which we consider first.

The  basic selection consists of an optional type specifier, listed in the left
column of  {selection},  followed by something from the right  column.   Assume
for the moment that the type specifier is omitted.   The possible inputs (right
column) are then either a point, an option, or a part name.

If the input is a point, its meaning depends on where it is.  If the point lies
on  a  vertex, all elements ending in that vertex are selected.   Otherwise, if
the point is on an element, that element is selected.   Otherwise, the point is
the  corner  of  a  box, and you must then enter the opposite corner, selecting
every element within the box.   You can force a  point  to  be  interpreted  as
selecting a vertex or a box with the options VERTEX and BOX.

Other possible inputs are ALL, a color, a linetype, a part name, or INFOS.  ALL
selects  all  elements  (in  the active part, as always).   A color selects all
elements with that color, and similarly with linetype.  A part name selects the
named part.   INFOS must be followed by a string;  all elements having an  info
matching  the  string  are  selected.   The  string  may  contain wildcards, as
follows:

    *     Matches any string including the null string.
    ?     Matches any single character.
    [...] Matches any one of the enclosed characters.  A pair of characters
	  separated by - matches any character lexically between the pair,
	  inclusive.  A NOT operator, !, can be specified immediately following
	  the left bracket to match any single character not enclosed in the
	  brackets.
    \     Removes any special meaning of the following character.
	  Any other character matches itself.

Now consider the left column of {selection}.  This column acts as a modifier to
whatever was selected with the right column, discarding those elements  not  of
the specified type.  In this column, C_GEO means c_lines and c_circles, and GEO
means  everything  else  in  the  list  except  texts and hatching.   It is not
possible to select dimensioning.  A few examples:

	DELETE ALL              Deletes all elements.
	DELETE C_GEO ALL        Deletes all construction geometry.
	DELETE LINES ALL        Deletes all lines.

The situation is complicated by the fact that each  command  tells  {selection}
what  types  it  cares to see.   Thus, CONVERT_SPLINE accepts only splines, and
almost no command accepts HATCHING.  The computer beeps if none of the elements
identified by the right-column input have the expected type.

The second selection method is to  say  SELECT  at  the  beginning,  make  your
selection,  then  say CONFIRM at the end.   Here the basic selection process is
the same as in method 1.  The differences are three.

First, the selected elements are highlighted.   This is  slower,  but  in  some
cases safer.

Second,  you can say UNDO to undo the result of the previous selection, as long
as you have not yet said CONFIRM.   Actually, even  using  method  1,  you  can
sometimes say UNDO, as some commands (e.g.  DELETE) themselves accept UNDO.

And  third,  you  can  use  the  logical options (ADD, SUBTRACT, etc.).   These
options are described below.   In the description "current  result"  means  the
elements currently highlighted, and "elements selected next" means the elements
selected with the next invocation of {selection}.

 AND  results in a logical AND (set intersection) of the current result and
    the elements selected next.

 ADD  adds  the elements selected next to the current result.   This is the
    default if no logical options (other than NOT)  are  specified  between
    two invocations of {selection}.

 OR results in a logical OR (set union)  of  the  current  result  and  the
    elements selected next.

 EXOR  results  in  a  logical  EXOR of the current result and the elements
    selected next.

 SUBTRACT removes the elements selected next from the current result.

 NOT makes the current result unselected.   All other elements  become  the
    current result.

Note  that  the  type specifier in the left column of {selection} is valid only
for that invocation.   Thus, DELETE  SELECT  LINES  GREEN  ADD  YELLOW  CONFIRM
deletes all green lines and all yellow elements of any type.

If you enter the qualifier GLOBAL before  an  invocation  of  {selection}  this
means that the selected elements of that invocation of {selection} need not  be
in the active part otherwise {selection} only  finds  elements  in  the  active
part.  Using the qualifier GLOBAL means further that the following  {selection}
prefers the elements of a part to the part itself e.g.  if you select  a  whole
part in a box you get the part itself (without GLOBAL)  or its  elements  (with
GLOBAL). You can see the difference if you work with highlighting.
An example:

DELETE SELECT
  BOX  |pts of box| ......................  box with cmpnts in the active part
  ADD GLOBAL BOX  |pts of box| ...........  box with cmpnts from any part
  ADD GLOBAL VERTEX  |pt| ................  vertex somewhere in a part
  ADD VERTEX  |pt| .......................  vertex in the active part only
  SUBTRACT BOX  |pts of box| .............  box in the active part part only
  ADD  |pt| ..............................  cmpnt in the active part only
  SUBTRACT GLOBAL  |pt| ..................  cmpnt somewhere in a part
CONFIRM END
================================================================================
^SHARE_PART UNSHARE_PART SHARE PARTS
SHARE_PART command

		   ,----------------------,
		   v                      ^
---->(SHARE_PART)--+-->|part identifier|--+-->

part identifier:
	part name
	point on a part box
	point on a geometry element (selects the containing part)

SHARE_PART causes the identified part to become shared.  When a part is shared,
and you copy it (with GATHER or MODIFY COPY), the original part and  the  copy,
though they look distinct on the screen, actually use the same geometry.

The  advantages  of sharing are a) you save memory, b)  moves, copies, rotates,
etc.   of the part are significantly faster, and c) any changes you make to the
shared  part  are  reflected  in all its  instances . See  also  UNSHARE_PART .
================================================================================
^SHOW LAYER VERTEX DIMENSIONS
SHOW function

--->(SHOW)--->+---->(VERTEX)---->+------>+--->(ON)--->+-->+--->
	      |                  ^       |            ^   ^
	      +-->(DIMENSIONS)---'       `--->(OFF)---'   |
	      |                                           |
	      |                                           |
	      `------>|select|------->+------>(OFF)------>+
				      |                   |
				      +------>(BOX)------>+
				      |                   |
				      +----->|color|----->+
				      |                   |
				      `------->(ON)------>'

SHOW allows you to selectively turn on and off various  elements,  or  to  show
them  in different colors or only the outline as a box.   Items that are turned
off are not drawn on the screen, nor can you catch to them or select  them  in,
for  example,  the  DELETE  command (except by selecting ALL).   Items set to a
particular color are drawn in that color;  they revert to their original  color
when you use the ON option.  See  color  functions for  specifying  the desired
color.

See SELECT for an explanation of the options available in the selection.
The selection in show cannot select to parts  (with part name or pick part box)
because show operates only on the elements.

The info option allows you to think of  the  elements  as  being  in  different
layers,  each  layer  with its own associated info.   The tablet or screen menu
offers CURRENT, ADD, and CHANGE commands under  the  rubric  LAYER;  these  are
really  macros  that invoke the appropriate info commands, giving to an element
in layer n the info "LAYER: n".  Since layers are implemented with infos, it is
perfectly reasonable for an element to be on more than  one  layer,  or  in  no
layer  at  all.

Dimensions cannot be assigned infos, and thus are not in any layer.

SHOW DIMENSIONS OFF turns off all dimensioning.   Even if you then  create  new
dimensions,  they  will  not  be visible until you turn them back on with SHOW.

Elements behave differently; SHOW can  turn  off  existing  elements,  but  new
elements are always visible.

SHOW VERTEX ON turns on all vertices  of  visible  elements.   Vertex  catching
works a little differently in this case.  With SHOW VERTEX ON, you can catch to
any visible vertex.   With SHOW VERTEX OFF, you cannot  catch  to  vertices  of
unshown  elements,  nor  can  you  catch  to  center points of circles or arcs,
peripheral points of circles, internal support  points  (i.e.,  support  points
between  the first and last)  of splines, vertices of construction lines or the
origin vertices of texts.   This sounds complicated, but in general the rule is
that you cannot catch to that which you cannot see.

The status line shows the visibility of dimension (D), c_geo (C)  ,  hatch  (H)
and  texts  (T).   If  there  is  any  element of one of these groups invisible
(except dimension), then the corresponding group letter is shown in lower case,
otherwise in upper case.   If show dimensions off/on is used then the dimension
letter is always lower/upper case independent of the number of dimensions.
================================================================================
^SHOW_PART PARTS BOX PART_BOX
SHOW_PART function

		  ,--------------------,
		  v                    ^
---->(SHOW_PART)--+-->|level number|---+----->
		  |                    |
		  +----->(ALL)---------+
		  |                    |
		  +-->|point on part|--+
		  |                    |
		  +--->|part name|-----'
		  |                          ,--------------------,
		  |                          v                    ^
		  +------>(PART_BOX)---------+-->|point|----------+-->
					     |                    |
					     +--->|part name|-----'

SHOW_PART changes  the  way  parts  are  displayed  in  the  current  viewport.
SHOW_PART can make a boxed part visible, and vice versa.  A boxed part is drawn
as  a box just big enough to include all its elements, which are not drawn.   A
visible part is drawn by drawing each of its elements.

If you enter a level number, all parts down to that level are visible, and  the
deeper  ones  are  boxed.   The  levels  are  counted beginning from the top of
whatever part is being VIEWed in the viewport (normally  the  top  part);   the
top-level elements there are at level 1.   ALL makes all parts visible.  If you
identify a boxed part, it becomes visible.   If you give a part name, that part
becomes visible.

SHOW_PART  PART_BOX  causes  visible  parts  to  become boxed.   After entering
PART_BOX, you identify an element (which may itself be a part),  and  the  part
containing  that element becomes boxed.   Alternatively, you enter a part name,
and the named part becomes boxed.
================================================================================
^SMASH_SUBPART PARTS
SMASH_SUBPART command
		      ,-------------,
		      v             ^
---->(SMASH_SUBPART)--+-->|select|--+-->

SMASH_SUBPART  brings  all  the  elements in the selected part, which must be a
subpart of the active  part, into the active  part, and  deletes  the  subpart.
SMASH_SUBPART does not move the elements in space; it only deletes one level of
part structure.
================================================================================
^SPLINE NATURAL DAMP TANGENTIAL CYCLIC PERIODIC
SPLINE command

	   ,----------------------------------------------------------------,
	   |                         ,------------------------------------, |
	   |                         | ,-------------------------,        | |
	   v                         v v                         |        | |
->(SPLINE)-+->(NATURAL)-------+------+-+-+---|data pnt|--------+-+->(END)-+-+->
	   |                  ^    |     |                     ^
	   |------------------'    |     |-->(DAMP)->|damping|-|
	   |                       |     |                     |
	   |->(TANGENTIAL)->{1}--->|     `---->(UNDO)--------->'
	   |                       |
	   |->(PERIODIC)---------->|
	   |                       |
	   `-->(CYCLIC)------------'

{1}---->|angle_1|-->|angle_2|-->

SPLINE  creates  a  rational  cubic spline, a special type of smooth curve that
passes through the given data points.   A  spline  must  have  at  least  three
different data points.  Four types of spline are possible:

    NATURAL - The spline has zero acceleration at its end points.   This is
    the default type.

    TANGENTIAL - The start and end angles are specified by the user.  A bug
    moving along the spline from begin to end would be traveling  at  these
    angles at the begin and end points.

    PERIODIC - The begin and end angles are the same.

    CYCLIC - The begin point and end points are the same, and the spline is
    smooth there.  With this option, you can omit the end point, as it will
    be automatically supplied.

You must say END to indicate the end of each spline.

DAMP  controls  the damping factor at each data point.   Increasing the damping
factor makes the spline more rigid.   Each data point has its own factor.   The
default  is  0.   Once you enter a damping factor, it applies to all subsequent
data points, until you use DAMP again.

UNDO backs up over entered data points.   It is only possible if you  have  not
yet said END.

Once a spline is created, it is not possible to change the  damping  factor  of
one  or more data points directly.   If you must do so, it may be convenient to
SAVE the spline to a file, then edit the damping values in the file, then INPUT
it.  Otherwise, you must create the spline again.

See also CONVERT_SPLINE.
================================================================================
^SPLIT MERGE
SPLIT command
	    ,--------------------------,
	    v                          ^
-->(SPLIT)--+-->|elem|----->|point|--+-+
	    |                          |
	    +-->|select|------->-------+

SPLIT splits elements.  Only lines, circles, arcs, and fillets can be split.

There are two ways to use SPLIT.   With method 1, you identify an element, then
indicate a point on the element where it is to be split.   With method  2,  you
select  a  group  of elements, and all lines, circles, arcs, and fillets in the
group are split at every intersection with  other  lines,  circles,  arcs,  and
fillets in the group.

Splitting a circle results in two arcs.   The two resulting  vertices  are  the
split  point  and the original vertex of the circle.   In this as well as other
cases, SHOW VERTEX ON can be useful.

See also MERGE.
================================================================================
^SPLITTING
SPLITTING function

-->(SPLITTING)--+---(ON)----+--------->
		|           |
		'---(OFF)---'

SPLITTING turns automatic splitting and merging ON or OFF.

Automatic splitting/merging has the following effects:

 -- Whenever a new element is created, the system checks to see if its  end
    points  lie  on  other  elements.   If so, it splits the other elements
    there if possible (see SPLIT).

 -- With each DELETE (except DELETE ALL), if the deleted element shared  an
    end  point  with  two  other elements, these two are merged if possible
    (see MERGE).

 -- With CIRCLE TAN2_PT,  the  resulting  "circle"  is  actually  two  arcs
    forming a circle, whose vertices are the tangent points.

These operations keep contours clean (important for automatic hatching), at the
expense  of  search  time,  which  can  be considerable in a viewport with many
elements.
================================================================================
^SPOTLIGHT PARTS LINETYPE COLOR
SPOTLIGHT function

-->(SPOTLIGHT)----+--(ON)---+---->
		  |         |
		  +--(OFF)--+

SPOTLIGHT causes all geometry outside the active part to be  drawn  in  magenta
and  with  dotted lines.   It is intended to help you remember where the active
part is when you have a drawing with a complex  part  structure.   Spotlighting
changes only the display, and not the drawing itself.
================================================================================
^STORE MI ALL DEL_OLD
STORE command

-->(STORE)-->+------>+-+--->(ALL)------>+-->+-------------->+->|file name|--->
	     |       | |                |   |               |
	     `-(MI)->' `-->|partname|-->'   `-->(DEL_OLD)-->'

STORE stores the drawing to the named file.   If the named file already exists,
you must use the DEL_OLD option.  STORE can produce either of two formats.

MI selects the MODEL INTERFACE STANDARD format.  This is a text format intended
for long-term archiving and for interfacing with other systems.

The default format is an internal binary format.   Files  in  this  format  are
smaller than MI files, and can be written and read faster.

Files in either format are readable with LOAD.

ALL  means  to  store the entire drawing, from the top part down.  You can also
name a part, and only that part will be stored.
================================================================================
^STORE_FONT SAVE_FONT LOAD_FONT TEXT FONT
STORE_FONT function

-->(STORE_FONT)-->+-->|font name|-->+-->+-------------->+-->|file name|-->
		  |                 |   |               |
		  +------>(ALL)---->+   +-->(DEL_OLD)-->+

STORE_FONT stores the named font or ALL fonts to the named file.   It  uses  an
internal  binary  format.   Files created by STORE_FONT may only be read by the
LOAD_FONT command.  They cannot be INPUT.  See also SAVE_FONT.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

The format used by STORE_FONT depends on the revision of HP-ME.  A file created
with  one  revision  may not be loadable with another revision.   To avoid this
problem, keep copies in text form of all fonts, even if you use the binary form
from day to day for  speed.   Such  a  copy  can  always  be  (re)generated  by
SAVE_FONT.
================================================================================
^STORE_MACRO SAVE_MACRO MACRO
STORE_MACRO function

-->(STORE_MACRO)-->+-->|macro name|-->+-->+-------------->+-->|file name|-->
		   |                  |   |               |
		   +------>(ALL)----->+   +-->(DEL_OLD)-->+

STORE_MACRO stores the named macro or ALL macros to the named file.  It uses an
internal binary format.  STORE_MACRO  can  store  both  unsecured  and  secured
macros.   Files  created  by  STORE_MACRO  may  only  be read by the LOAD_MACRO
function.  They cannot be INPUT.  See also SAVE_MACRO.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

The  format  used  by  STORE_MACRO  depends  on the revision of HP-ME.   A file
created with one revision may not be loadable with another  revision.   Or,  it
may  produce  unexpected  results when the macros are executed.   To avoid this
problem, keep copies in text form of all macros, even if  you  use  the  binary
form  from  day  to day for speed.   Such a copy can always be (re)generated by
SAVE_MACRO, as long as no macros have been secured with SECURE_MACRO.
================================================================================
^STORE_WINDOW WINDOW
STORE_WINDOW function

-->(STORE_WINDOW)-->

STORE_WINDOW  stores the window coordinates of the current viewport.   A window
stored  with  STORE_WINDOW  can  be  recalled  with  RECALL_WINDOW.   See  also
LAST_WINDOW.
================================================================================
^STRETCH MOVE ROTATE MIRROR SCALE SIMILAR AFFINE
STRETCH command

	     +<---------------------+
	     |                      |
	     +<-----(GLOBAL)<-------+
	     |                      |
-->(STRETCH)-+->-(pnt1)-+>-------+--+
	     |          |        |  |
	     |          +-(pnt2)-+  |
	     |                      |
	     +->---|MOVE|------>----+
	     |                      |
	     +->---|ROTATE|---->----+
	     |                      |
	     +->---|MIRROR|---->----+
	     |                      |
	     +->---|SCALE|----->----+
	     |                      |
	     +->---|SIMILAR|--->----+
	     |                      |
	     +->---|AFFINE|---->----+
	     |                      |
	     +-----(UNDO)-----------+
	     |                      |
	     +-----(COPY)-----------+
	     |                      |
	     +-----(DEL_OLD)--------+
	     |                      |
	     +---(repeat factor)----+

STRETCH stretches lines, circles, arcs, splines, and leader_lines.

Stretching a line means that one end  is  kept  fixed,  and  the  other  moved.
Stretching a circle consists of moving the peripheral point, holding the center
point  fixed;  neither  of these points is normally visible, but SHOW VERTEX ON
makes them so.   Stretching an arc means that one vertex moves, and  the  other
stays  fixed;  the  resulting  arc  has the same opening angle as the original.
Stretching splines and leader_lines means that one or more  data  points  of  a
spline  (use  SHOW VERTEX ON to see them) or vertex points of a leader_line are
moved while the others stay fixed.

There  are  two ways to identify the elements to be stretched.   First, you can
identify a vertex.   Once you have selected a transformation (e.g.   MOVE;  see
MAPPING),  the  vertex  is  moved,  and the elements ending there are stretched
accordingly.   Second, you can indicate two corners of a box.   Elements  whose
vertices are all within the box are modified as with MODIFY.  Elements with one
vertex  inside  the box and the other outside are stretched so that the outside
vertex remains fixed.   (Splines and leader_lines  may  have  several  vertices
inside or outside the box.)  If you  enter  the  qualifier  GLOBAL  before  you
identify a vertex or before you indicate the second corner of the box then  the
selected elements need not be in the active part,  otherwise they have to be in
the active part. The qualifier GLOBAL only influences one  vertex  or  one  box
therefore you have to enter  GLOBAL each time  you want to select elements from
parts other than the active part.

As with MODIFY, you can mix element selection and transformation  selection  in
any order.

With  DEL_OLD,  the  selected elements are transformed; with COPY, it is a copy
that is transformed.  The default is DEL_OLD.

If you request a stretch of an element  that  would  produce  an  impermissible
result,  for  example  a  line  of  length  0,  the  system leaves that element
unchanged.
================================================================================
^SYMBOL_PART PARTS SIZE DRAWING_SCALE PLOT REF_PT
SYMBOL_PART command

			     ,----------------------,
			     v                      ^
---->(SYMBOL_PART)--+--------+-->|part identifier|--+-->
		    v        ^
		    '->(OFF)-'

part identifier:
	part name
	point on a part box
	point on a geometry element (selects the containing part)

SYMBOL_PART  causes  the  selected  part to become a symbol.   A symbol behaves
exactly like a part, except that, like dimensioning and text, its size relative
to the plotter paper does not change with the DRAWING_SCALE command.   A useful
symbol, for example, might be a rectangle around the edge of the plotter paper.

The point on a symbol that is fixed relative to other elements is the reference
point of the part.  See CHANGE_PART_REF_PT.

Symbols  are  most  conveniently  created when the drawing scale is 1.  You can
STORE them to a file, the  LOAD  them  into  whatever  drawing  requires  them,
regardless of drawing scale.

With the OFF option, you pick a symbol, and it becomes a normal part again.

The system is supplied with a number of finishing symbols, available by picking
SYMBOLS on the menu.   These are just characters in a special  font,  and  have
nothing to do with symbol parts.
================================================================================
^TABLET_RESET RESET TABLET
TABLET_RESET function

---->(TABLET_RESET)---->

TABLET_RESET asks the system to re-establish contact with the tablet.   This is
required if the tablet is accidentally turned off (turn it back on  first),  or
when an interface failure occurs.
================================================================================
^TECHO TABLET ECHO
TECHO function

---->(TECHO)---->+------------------>+---->+---->|filename|--->+---->
		 |                   |     |                   |
		 +---->(DEL_OLD)---->+     +------>(OFF)------>+
		 |                   |
		 +---->(APPEND)----->+

TECHO opens or closes the TECHO file.   If a TECHO file  is  open,  all  points
digitized on the tablet or read with TINPUT are written to the named file.  The
points are specified in the tablet coordinate system (units millimeters, origin
lower left), just as in TINPUT or TMENU.  The format is readable by TINPUT.

With OFF, the current TECHO file is closed.  With a filename, the current TECHO
file  is closed and a new one with the given name is opened.   The filename may
specify a disc file or a device file.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified already exists, the information will be
    appended to the end of the file, otherwise a new file is created.
================================================================================
^TEXT SIZE
TEXT command

	   ,-----------------------------------,
	   | ,-------------, ,--------------,  |
	   v v             | v              |  |
-->(TEXT)--+-+-->|string|--+-+---->|point|--+--+-->
	     v             ^
	     `->(SCREEN)---'

TEXT creates texts.

The text can be entered as a string, or by saying SCREEN, which puts you in the
built-in editor (see EDITOR).   You can define multi-line text  blocks,  either
with  the SCREEN option, or by entering the lines as consecutive strings.   You
then indicate one or more points where the text is to go; it is the text origin
that is placed at these points (see TEXT_ADJUST).

The appearance of the text is affected by  TEXT_ANGLE,  TEXT_FILL,  TEXT_FRAME,
TEXT_LINESPACE  (multi-line texts only), TEXT_RATIO, TEXT_SIZE, and TEXT_SLANT,
not to  mention  by  the  text  fonts  themselves,  which  are  definable  with
DEFINE_FONT and CHAR_LAYOUT.
================================================================================
^TEXT_ADJUST ADJUST
TEXT_ADJUST function

-->(TEXT_ADJUST)-->|number|-->

TEXT_ADJUST specifies the position of the  text  origin  for  new  texts.   The
origin  is a vertex point, visible and catchable with SHOW VERTEX ON, which can
be useful for alignment.

The number gives the location point according to the following pattern:

	     7  8  9
	     4  5  6
	     1  2  3

For example, if the text is a capital letter:

       1  lower left corner of letter
       5  center of letter
       9  upper right corner of letter

The default adjust value is 1.

Adjust points 1, 2, and 3 are always on the text baseline, below  which,  in  a
conventional  font, letters like 'g' and 'j' extend.  Adjust points 7, 8, and 9
are determined by the height of the characters in the  text,  and  not  by  the
default height of the font (see DEFINE_FONT).
================================================================================
^TEXT_ANGLE ANGLE
TEXT_ANGLE function

-->(TEXT_ANGLE)-+->|angle|-------------+-->
		|                      ^
		'-->|point|-->|point|--'

TEXT_ANGLE  specifies  the  current text angle, which is measured between the X
axis and the text baseline.   The angle can also be specified with two  points.
This angle is used for all new texts.
================================================================================
^TEXT_FILL FILL
TEXT_FILL function

-->(TEXT_FILL)--+-->(ON)---+-->
		|          ^
		'-->(OFF)--'

TEXT_FILL turns the filling of characters ON (drawn  solid)   or  OFF  (outline
only).  The default is OFF.  This affects new texts, but only those in fillable
fonts.   A font is fillable if every character in it consists  only  of  closed
polygons.
================================================================================
^TEXT_FRAME BOX BALLOON FRAME
TEXT_FRAME function

-->(TEXT_FRAME)-+-->(OFF)---------+-->
		|                 ^
		|-->(BOX)-------->|
		|                 |
		+-->(BALLOON)---->+

TEXT_FRAME  sets the current text frame type.   This is the frame type used for
new texts.   OFF is no frame at all, BOX a rectangular  frame,  and  BALLOON  a
frame with rounded corners.   If the text has one or two characters on a single
line, BALLOON is a circle.  The default is OFF.
================================================================================
^TEXT_LINESPACE LINESPACE
TEXT_LINESPACE function

-->(TEXT_LINESPACE)-->|number|--->

TEXT_LINESPACE sets the current linespacing, which is used for new texts.   The
distance  between  baselines  of a multi-line text is linespace*text_size.  The
default is 2.2.
================================================================================
^TEXT_RATIO RATIO WIDTH HEIGHT SIZE TEXT_SIZE
TEXT_RATIO function

-->(TEXT_RATIO)-->|number|-->

TEXT_RATIO  sets  the current ratio of character width to height.   This is the
ratio used for new texts.   The default is 1.  The text height is determined by
TEXT_SIZE.
================================================================================
^TEXT_SIZE SIZE
TEXT_SIZE function

-->(TEXT_SIZE)-->|number|-->

TEXT_SIZE sets the current text height, which is used for new texts.  As usual,
this number is in user units.   The text size  is  normally  the  height  of  a
capital letter (see DEFINE_FONT).  The default is 3.5 mm.
================================================================================
^TEXT_SLANT SLANT
TEXT_SLANT function

-->(TEXT_SLANT)-->|number|-->

TEXT_SLANT  sets the current text slant, which is the slant used for new texts.
The slant is the deviation of an 'I' from its usual position  perpendicular  to
the  baseline.  The  permissible  range  is  -80..80 degrees (in user units, of
course), where a positive angle denotes a forward slant.
================================================================================
^TINPUT TABLET FILES
TINPUT function

---->(TINPUT)---->+----------------->+---->|string|---->
		  |                  |
		  +---->|number|---->+

TINPUT switches cursor tracking from  the  tablet  to  the  file  specified  by
string.   Points  specified in the file are interpreted just as though they had
been digitized on the tablet.   Normally the file is the output of  a  previous
TECHO (see TECHO for format information).

Number  (default  1)  specifies the number of points to be interpolated between
two digitized points; this affects the cursor feedback only.   TINPUT files may
not be nested.  The TINPUT function should not be used inside macros.  If TECHO
is  active,  then  all points read from the TINPUT file will also be written to
the TECHO file.

Note that changing the tablet or screen menu can invalidate  old  TECHO  files,
since points that digitized menu slots may now be interpreted differently.
================================================================================
^TMENU TRACKING TABLET MENU
TMENU function

---->(TMENU)---->+---->(TRACKING)---->|point|---->|point|-------------->+---->
		 |                                                      |
		 +---->|point|---->+---------------->+---->|string|---->+
				   |                 |
				   +---->|point|---->+

TMENU defines the tablet menu.

TMENU TRACKING redefines the tracking area on the tablet.  After execution, the
crt screen is mapped onto this area.

To  define  a  new  tablet menu field, you enter opposite corners of the field,
then give the action text.

To redefine an existing field, you enter a point anywhere in  the  field,  then
give the action text.

Points  may  be  specified  in the tablet coordinate system (units millimeters,
origin lower left), or may be picked with the stylus on the tablet.
================================================================================
^TOKEN
token

-->-+-->|command|------->+-->
    |                    |
    |-->|option|-------->|
    |                    |
    |-->|arithm funct|-->|
    |                    |
    |-->|symbol|-------->|
    |                    |
    |-->|identifier|---->|
    |                    |
    |-->|string|-------->|
    |                    |
    |-->|number|-------->|
    |                    |
    |-->|point|--------->|
    |                    |
    |-->|point_3d|------>|
    |                    |
    |-->|name|---------->|
    |                    |
    '-->|expression|-----'
================================================================================
^TONE NOTE
TONE function

-->(TONE)-->+-->|frequency|-->|duration|-->|amplitude|-->+-->(END)-->
	    ^                                            |
	    |                                            v
	    +<-------------------------------------------+

The TONE function generates one or more audible tones with specific parameters.
Frequency is in Hz, duration in seconds, and amplitude in the range from  0  to
1.  See also BEEP.

Note:

Significance,  range  and  resolution  of  the  parameters depend on the actual
hardware used.
================================================================================
^TRACE
TRACE function

---->(TRACE)---->+------------------>+---->+---->|string|---->+---->
		 |                   |     |                  |
		 +---->(DEL_OLD)---->+     +------>(OFF)----->+
		 |                   |
		 +---->(APPEND)----->+

TRACE opens or closes the TRACE file.  If a TRACE file is open, a copy  of  all
tokens  processed by the system (including macro bodies and expression results)
is written there.

With OFF, the current TRACE file is closed.  With a filename, the current TRACE
file is closed and a new one with the given name is opened.   The filename  may
specify a disc file or a device file.

 -- default:   If the file specified already exists, an  error  message  is
    issued, otherwise a new file is created.

 -- DEL_OLD:   If  the  file specified already exists, its old contents are
    lost.

 -- APPEND:   If the file specified already exists, the information will be
    appended to the end of the file, otherwise a new file is created.

TRACE files are useful for debugging macros or menus (send the output  to  your
alpha screen, if you have one).   Although they are text files, they are rarely
readable by INPUT, since macro bodies appear directly after the macro name, and
expression results directly after the expression.
================================================================================
^UNITS
UNITS function

---->(UNITS)---->+----------------->+---->+---->(CM)------->+---->
		 |                  |     |                 |
		 +---->|number|---->+     +---->(METERS)--->+
					  |                 |
					  +---->(KM)------->+
					  |                 |
					  +---->(MM)------->+
					  |                 |
					  +---->(UM)------->+
					  |                 |
					  +---->(INCHES)--->+
					  |                 |
					  +---->(FEET)----->+
					  |                 |
					  +---->(YARDS)---->+
					  |                 |
					  +---->(MILES)---->+
					  |                 |
					  +---->(MILS)----->+
					  |                 |
					  +---->(UINCHES)--->+
					  |                 |
					  +---->(DEG)------>+
					  |                 |
					  +---->(GRD)------>+
					  |                 |
					  +---->(RAD)------>+

UNITS  specifies  the  current units of measure for distances and angles.  With
very few exceptions, commands and functions assume that  all  distance,  angle,
and coordinate input is in these units.  The default is MM and DEG.

UM  is  micro-meters,  UINCH  micro-inches,  DEG  degrees, GRD grads (sometimes
called gradians), and RAD radians.

The optional number can be used to create new units.   For example, UNITS 5  MM
allows you to work in 5mm units.

UNITS does not change the size of any existing elements.   It does  not  change
the spacing of grid points or ruler ticks.  It does change the unit distance in
both the absolute and the input coordinate system; see CS for details.
================================================================================
^UNSHARE_PART SHARE_PART UNSHARE PARTS
UNSHARE_PART command

		     ,-----------------------------------,
		     v                                   ^
---->(UNSHARE_PART)--+-->|name or pnt to identify part|--+-->

UNSHARE_PART takes a shared part and makes it unshared.  See SHARED_PART.
================================================================================
^UPDATE_SCREEN
UPDATE_SCREEN function

---->(UPDATE_SCREEN)---->

UPDATE_SCREEN  displays  any previous primitives that are not yet displayed due
to device or driver buffering.  It also forces an update of the status line and
the crt menu.   This function is only useful if executed from a macro or  input
file.
================================================================================
^VERSION REVISION
VERSION function

-->(VERSION)-->

VERSION displays version information.
================================================================================
^VIEW PARTS
VIEW command

-->(VIEW)----------+->|part name|-----+-->
		   |                  ^
		   |--->|point|------>|
		   |                  |
		   |--->(PARENT)----->|
		   |                  |
		   '----->(TOP)-------'

VIEW causes the selected part to be viewed in the current  viewport.   You  can
select the part in several ways -- by entering its name, by identifying its box
if  it  is  boxed,  by  identifying  any element in it (except a part) if it is
visible, or by entering PARENT or TOP.

The name of the VIEWed part is shown in the upper-left corner of each viewport.
================================================================================
^WAIT
WAIT function

---->(WAIT)---->|number|---->

The  WAIT  function  causes  the  computer  to wait approximately the number of
seconds specified.
================================================================================
^WINDOW FIT ZOOM CENTER PAN
WINDOW function

---->(WINDOW)--+-->| point 1 |-->| point 2 |--------------------+-->
	       |                                                ^
	       |-->(FIT)--------------------------------------->|
	       |                                                |
	       |-->(ZOOM)-->| scale factor |------------------->|
	       |                                                |
	       |-->(CENTER)-->| new center point |------------->|
	       |                                                |
	       '-->(PAN)-->| drawing pnt |-->| screen point |---'

WINDOW allows the user to control what part of the drawing will be shown in the
current viewport.

With  two points, it changes the window to the box determined by the two points
(possibly stretching the box to fit the shape of the viewport).

With FIT, it fits the entire drawing into the port.

With ZOOM, it scales the window by the factor given.  WINDOW ZOOM 2 zooms in by
a factor of 2;  WINDOW ZOOM -2 and WINDOW ZOOM .5  both zoom out by a factor of
2.

With  CENTER, the point given is made the center of the new window.

With  PAN,  the  window  is  moved so that the drawing point coincides with the
screen point.

The  WINDOW  function  has  been designed for all practical drawing techniques.
However, if you attempt freak zooms/windows the system may  report  an  integer
overflow  error  (for  example  if you zoom in on an element whose size is more
than 1,000,000 times the window size).  You should be able to recover from such
errors by windowing out.   Also  note  that  although  spline  elements  appear
strangely on the screen if you use a large zoom, in the data structure they are
represented very accurately.
================================================================================
^WRITE_FILE OPEN_INFILE OPEN_OUTFILE CLOSE_FILE READ_FILE FILES
WRITE_FILE function

---->(WRITE_FILE)---->|number|---->|token|---->

WRITE_FILE evaluates a token and writes its value as one line of  text  to  the
specified  file.   Token  may  be  a number, a point, a string, a macro name, a
name, an expression, ...  See also OPEN_OUTFILE.
================================================================================
