

		GCAD-3D-UM			99-07-29

Changes from glarea_jun08.tgz to glarea_jul29.tgz

	1) gcad_db.h:typedef union {DB_att_stat att; long istat;} UN_att_istat;

	2) variable testing programs
		tst_line
		tst_object_status
		tst_pnt_db

Modified by Uchida Masatomo
	masatomo@nisiq.net
	http://www.hi-ho.ne.jp/linux/gcad3d/

Original Author:
  Franz Reiter
  franz.reiter@telecom.at
  http://members.telecom.at/~freiter


Description:
  Testprogram (OpenGL - Driver) for CAD (3D) - Functions.
  For programmers only !
  Includes CommandInterpreter (CI), UserInterface (UI),
    DataBase (DB, just for testing purposes), OpenGLDriver (GR).


Prereqisites:
	glib-1.2.1-2
	glib-devel-1.2.1-2
	gtk+-1.2.1-10
	gtk+-devel-1.2.1-10

	MesaLib-3.0.tar.gz
	MesaDemos-3.0.tar.gz
	gtkglarea-1.2.1.tar.gz

  I use glib and gtk+ out of RedHat 6.0.

  A gtkglarea-1.2.1.tar.gz you can get from:
	http://www.student.oulu.fi/~jlof/gtkglarea/



Unpack:
  tar xvfz glarea_****.tgz

Build:
  cd glarea
  make

Start:
  ./gCAD3D.exe



Customisation:
==============
  gCAD3D does not use environment variables.
  All parameters are read in from file gCAD3D.rc.  
  This file can be located in ./ or in $HOME.



Abbreviations:
==============
  M1 means "click the mouse-left-Button",
  M2 means "click the mouse-middle-Button"
  M3 means "click the mouse-right-Button"
  Ctrl + M3 means "push the Ctrl Key (keep it pushed) AND klick M3"
  drag: keep buttons (and keys) clicked, drag mouse.
  keyIn - with cursor in graf.win, do not key the quotation marks.



Startup:
=========== 
At startup automatically model 'DIRDWG'/gCAD3D.dwg is loaded (which is
  written at FILE exit). If this model does not exist, some dummy-objects
  are displayed.



Using   (see also gcad.specs):
=============================
Functions of version 0.01 (99-01-03):
  Some Objects are displayed (triangles, points).
  Select / VIEW / View Iso
  Pan the object by dragging with M3.
  Rotate the obj's by dragging with Ctrl + M3.
  Zoom objects with CursorUp / Down - keys.
  Select / EDIT / Thickness / 3 / <object>
  Select / EDIT / Linetyp / dash short / <object>
  Select / EDIT / Colour / magenta / <object>
  Try shading - / VIEW / Visu Shaded /



New functions version 0.02 (99-01-31):

  Select / POINT /
    indicate position (Ctrl + M1)
    key ",1,2" (key coordinates)
  Select / Point - Polar /
    key "30" (Angle), key "1" (Length)
  Select / Point - Relativ /, unselect / Point - Polar /
    select a point (basepoint),
    key "1,,," (the relative offset)

  Select / LINE /
    indicate 2 positions (Ctrl + M1)
    select 2 points
    key "1,,,", indicate or select 2. point
    key "2" (length), select point, key "x" (or y or z - the direction)
    Select / Line - unlimited /
    select x-axis (or y or z - the direction),  key "1,1,1" (the startpoint)
    key "x" (or "y" or "z" - the direction), indicate or select point
  
New functions version 0.03 (99-02-12):

  FILE / Save
    Always writes to 'DIRDWG'/gCAD3D.dwg.
  FILE / Save as
    Key in the modelname (without filetyp), select OK. The actual model
    is then written to 'DIRDWG'/modelname.dwg.
  FILE / Open
    Select file to load. The filename will be the defaultfilename for
    following "Save as" - operations.
  FILE / New
    Init new model (destroys active model). Only the Axis is present;
    the X-axis red, the y-axis yellow, the z-axis magenta / dashed.

  hide 
    select objects to hide
  hidden
    display all hidden objects; select hidden again to switch back to
    normal display. You can use hidden objects for all operations.
  delete
    select objects to delete



New functions version 0.04 (99-02-22):

  UNDO 
    provides a list for undo / redo of the last 10 operations.
    With the ESC - key you can undo / redo the last operation.

  EDIT /Relimit
    Select point and line or 2 lines. First line will be cutted at
    crossing of line 2 or at the nearest position of the point.
    But at the moment it uses a dummy (MidPoint)-function.
    For correct operation we need a project_Point_on_Line - function
    (cut line with point) and a find_nearest_points_of_2_lines - function
    for cutting 2 lines. These routines I cannot provide !



New functions version 0.05 (99-03-02):

    Analyze / Object
      Select object to analyze; the objname (like "$pt123"), and
      all links to vertices are displayed.


    EDIT / Translate
      Translate (move) objects.
      First define the translation-vector (key "1,1,0"), then
      select the object to translate (duplicate). Replace deletes the
      original object.


    UserMacro
      to execute user-written macroprograms (ascii-commands. Each inter-
      active command (should) have its commandtext).
      Try the supplied test.mac. Select File/New, then key "umac test.mac".
      For use with the interactive function UserMacro the macroprogramfiles
      should be stored in Directory DIRMAC (see gCAD3D.rc).
      The interactive commands are not yet written into a recover-file.
      At the moment this is used for testing purposes; create macroprogramfiles
      with the editor. Look in file test.mac for already available commands.
      Auxiliary functions for usermacro's: 
        sysfun sleep 2			// wait for 2 seconds

    Instead of selecting objects with the mouse now it is possible to keyIn
      the objectnames (find objectnames with ANALYZE).
      KeyIn of "$oi1" selects object with DB-index 1.
      KeyIn of "$pt1" selects point with DB-indexnr. 1 (DB-obj # 1 MUST be
        a point)

    Multiselections
      First select the function (try Edit/Translate, key translation-vector
      "1,1,0"); now select Button "M-SEL".
      KeyIn "$pt*"  (means all points), select the "APPLY" Button or hit
      the CR-key (empty line also does APPLY).
      KeyIn "$all" (all objects), keyIn "-$ln*" (all lines are excluded),
      add objects by manually selecting them, APPLY.
      Selecting an object for the second time unselects the object.
      "Done" switches back to single-selection-mode.
      Filtering at the moment is restricted to some few objecttypes; it should
      include layers, colours .. - all types of objects.
      $all - ($ln* & $col"red") should select all except red lines.
      Graf. traps / boxes are not implemented yet.


  Select / FILE / Exit.
    This automatically saves the model to 'DIRDWG'/gCAD3D.dwg.






=======================================================================
Next steps:
===========
  - multiselections
  - model - part - layer-structure ..
  - objectEditor-window (modify the vertices, the links, ..)

  Then the most dependencies should be clear and interface-specs should
    be the next job.



ToDo:
=====
  CI (CommandInterpreter = GeomEngine):
    already works ..
    resolv objectnames ("$pt5")
    resolv wildcarding with objectnames ("$pt*" or "$* - $pt*")

  UI (UserInterface):
    too much ..

  EX (execute DB - GR - functions):
    too much ..

  DB:
    routines to separate / merge parts (layers ?)
    Packingroutines (removing deleted objects)
    too much objecttypes missing ..
    Add Attributs (Text, ObjNames, specialColours, ..)
    Add DB-resolvRoutines
    Add the native, dxf, iges - IO-drivers.

  GR (GL-Driver):
    Text is not yet sensitive to selects
    Improve rotation (trackball.c ??) - define RotAxis ...
    Reframe space
    Graf.Text not in DispList; see example  Mesa/Mesa-2.5/book/font.c
    Circles
    ZoomBox
    Add FeedbackBufferSupport (for the plotterdriver)

  OE (ObjectEditor):
    too much ..

  GTK - auxiliary functions:
    need improvments ..

  Geom utilities:
    We need many many many geom.utility-routines ..



Thats it.  Franz.
