"Fossies" - the Fresh Open Source Software Archive

Member "brlcad-7.32.4/doc/mged/a.tex" (29 Jul 2021, 31651 Bytes) of package /linux/misc/brlcad-7.32.4.tar.bz2:

As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) TeX and LaTeX source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 \title{\bf{\huge{
    2 DRAFT *** DRAFT *** DRAFT \\
    3 Users Manual for \\
    4 BRL-CAD Graphics Editor \\
    5 MGED
    6 }}}
    7 \author{
    8 Keith A. Applin \\
    9 Michael J. Muuss \\
   10 Robert J. Reschly \\
   11 {\em US Army Ballistic Research Laboratory} \\
   12 {\em Aberdeen Proving Ground, MD} \\
   13 \and
   14 Alan Collier \\
   15 {\em US Army Foreign Science and Technology Center} \\
   16 {\em Charlottesville, VA} \\
   17 \and
   18 Mike Gigante \\
   19 Ian Overend \\
   20 {\em The Royal Melbourne Institute of Technology} \\
   21 {\em Australia}
   22 }
   24 \date{6-October-1988}
   26 \maketitle
   28 \tableofcontents
   29 \listoffigures
   31 % ---------------------------------------------------------------------------
   33 \chapter{INTRODUCTION}
   35 Computer graphics is one of the fastest growing fields
   36 in the computer industry.
   37 Computer graphics has applications in many diverse areas, from electronic
   38 games to medicine; from cartoons to the space industry.  Just
   39 what is interactive computer graphics and why is it so versatile?
   40 Human visual perception is quite keen and communicating with a
   41 computer is generally faster and easier
   42 with images, rather than with
   43 numbers. Furthermore, by
   44 having the computer continuously updating a display,
   45 the display itself becomes the communications medium.
   46 The user converses with the computer through the display using
   47 devices such as light pens,
   48 mice, data tablets, buttons, and
   49 knobs.  The response of the computer is immediately reflected
   50 on the display,
   51 providing a fast communication channel between person and machine.
   52 This technology is called interactive computer graphics.
   54 As the Army's lead laboratory for vulnerability technology, the
   55 Ballistic Research Laboratory (BRL) constantly performs
   56 analyses for a wide variety of military systems.
   57 Three dimensional computer models of the
   58 physical characteristics of these systems
   59 are vital to these studies.
   60 Since the mid-1960's, BRL has used a solid modeling technique
   61 called Combinatorial Solid Geometry (CSG or COMGEOM)
   62 for representing these models.
   63 The COMGEOM technique uses
   64 Boolean logic operations to combine basic geometric
   65 shapes or primitives to produce complex three-dimensional objects.
   66 The COMGEOM geometric models are processed by
   67 the Geometric Information
   68 For Targets (GIFT)
   69 \cite{gift1,gift2}
   70 and LIBRT
   71 \cite{solid-models}
   72 for use in follow-on engineering analysis.
   74 Geometric models are large collections
   75 of numerical data which have traditionally
   76 been created and edited manually, and analyzed in a batch environment.
   77 The production and modification of geometric models has been a slow,
   78 labor-intensive
   79 process.
   80 In 1980, BRL initiated an effort to improve the response
   81 time of the geometric modeling process by applying interactive
   82 computer graphics techniques.
   83 As a result of this work, BRL
   84 developed the Multi-device Graphics EDitor (MGED),
   85 an interactive editor for solid models
   86 based on the COMGEOM technique.
   87 Using MGED, a designer can build, view, and modify model descriptions
   88 interactively by manipulating the graphical representation,
   89 receiving immediate visual feedback on a graphics display.
   90 MGED replaces the manual method for the production
   91 and modification of geometric models.
   93 Before MGED was built,
   94 existing packages were evaluated with respect to
   95 their utility for the geometric modeling process.
   96 Quite an exhaustive search of commercially available systems
   97 was conducted and none were found which met
   98 the BRL requirements.
   99 A study was initiated to examine the feasibility of producing
  100 the required capability in-house;
  101 a preliminary version of MGED which
  102 quite convincingly demonstrated the
  103 feasibility of such an undertaking \cite{interactive-construction}.
  104 It was then decided to develop MGED into a full production code.
  105 Production MGED code has been used since January 1982 to
  106 build models interactively at BRL.
  108 This report is intended to serve as  a user manual
  109 for the MGED program.
  110 The process of viewing and editing a description using MGED
  111 is covered in detail.  The internal data structure is also covered, as
  112 it is an important part in the overall design.
  113 All the commands will be discussed and a command summary table presented.
  114 Also, a section will be devoted to the hardware interfaces for each
  115 major class of workstations which MGED supports.
  117 \section{Philosophy}
  119 The role of CAD models at BRL differs somewhat from
  120 that of CAD models being built in the automobile and aerospace industries,
  121 resulting in some different design choices
  122 being made in the BRL-CAD software.
  123 Because BRL's main use for these models is to conduct detailed
  124 performance and survivability analyses of large complex vehicles,
  125 it is required that the model of an entire vehicle be completely contained
  126 in a single database suitable for interrogation by the application codes.
  127 This places especially heavy demands on the database software.
  128 At the same time, these analysis codes require less detail
  129 than would be required if NC machining were the primary goal.
  131 At BRL, there are only a small number of primary designers responsible
  132 for the design of a vehicle, and for the construction of the corresponding
  133 solid model.  Together they decide upon and construct the
  134 overall structure of the model,
  135 then they perform the work of building substructures in parallel,
  136 constantly combining intermediate results into the full model database.
  137 Because of the need to produce rapid prototypes (often creating a full design
  138 within a few weeks), there is no time for a separate integration stage;
  139 subsystem integration must be an ongoing part of the design process.
  141 Once an initial vehicle design is completed, there is usually the
  142 need for exploring many alternatives.  Typically, between three and twelve
  143 variations of each design need to be produced, analyzed, and optimized
  144 before recommendations for the final design can be made.
  145 Also, there is a constantly changing definition of performance;
  146 new developments may necessitate rapidly re-evaluating
  147 all the designs of the past several years for trouble spots.
  149 The user interface is designed to be powerful and ``expert friendly'' rather
  150 than foolproof for a novice to use.
  151 However, it only takes about two days for new users to start doing useful
  152 design work with MGED.
  153 True proficiency comes with a few months practice.
  155 Finally, it is vitally important that the software offer the same capabilities
  156 and user interface across a wide variety of display and processor hardware.
  157 Government procurement regulations make single-vendor solutions difficult.
  158 The best way to combat this is with highly portable software.
  160 \section{Displays Supported}
  162 It is important for a CAD system to have a certain degree of independence
  163 from any single display device in order to provide longevity of the
  164 software and freedom from a single equipment supplier.
  165 The MGED editor supports serial use of multiple displays by way of
  166 an object-oriented programmatic
  167 interface between the editor proper and the display-specific code.
  168 All display-specific code for each type of hardware is isolated
  169 in a separate {\em display manager} module.
  170 High performance of the display manager was an important design goal.
  171 Existing graphics libraries
  172 were considered, but no well established standard existed with the necessary
  173 performance and 3-dimensional constructs.
  174 By having the display manager modules incorporated as a direct part of
  175 the MGED editor, the high rates of display update necessary to deliver
  176 true interactive response are possible, even when using CPUs of modest power.
  178 An arbitrary number of
  179 display managers may be included in a copy of MGED, allowing the user
  180 to rapidly and conveniently move his editing session from display to display.
  181 This is useful for switching between several displays, each of
  182 which may have unique benefits:  one might have color capability,
  183 and another might have depth cueing.
  184 The {\bf release} command closes out MGED's use of the current
  185 display, and does an implicit attach to the ``null'' display manager.
  186 This can be useful to allow another user to briefly examine an image
  187 on the same display hardware without having to lose the state of
  188 the MGED editing session.  The {\bf attach} command is used to
  189 attach to a new display via its appropriate display manager routines.
  190 If another display is already attached, it is released first.
  191 The null display manager also allows the MGED editor to be run from a normal
  192 alphanumeric terminal with no graphic display at all.  This can be useful
  193 when the only tasks at hand involve viewing or changing
  194 database structures, or entering or adjusting geometry parameters
  195 in numerical form.
  197 Creation of a new display manager module in the ``{\bf C}'' language
  198 \cite{c-prog-lang}
  199 generally takes an experienced
  200 programmer from one to three days.
  201 The uniform interface to the display manager provides two levels
  202 of interactive support.
  203 The first level of display support includes
  204 the Tektronix 4014, 4016, and compatible displays,
  205 including the Teletype 5620 bit-mapped displays.
  206 However, while storage-tube style display devices allow MGED to
  207 deliver the correct functionality, they lack the
  208 rate of screen refresh needed for productive interaction.
  209 The second level of support, including real-time interaction,
  210 is provided by
  211 the Vector General 3300 displays,
  212 the Megatek 7250 and 7255 displays,
  213 the Raster Technologies Model One/180 display,
  214 the Evans and Sutherland PS300 displays
  215 with either serial, parallel, or Ethernet attachment,
  216 the Sun workstations,
  217 and the Silicon Graphics IRIS workstation family.
  219 \section{Portability}
  221 Today, the half-life of computer technology is
  222 approximately two to three years.
  223 To realize proper longevity of the modeling software, it needs to be written
  224 in a portable language to allow the software to be moved readily from
  225 processor to processor without requiring the modeling software or users
  226 to change.
  227 Then, when it is desirable to
  228 take advantage of the constantly increasing
  229 processor capabilities and similarly increasing memory capacity by replacing
  230 the installed hardware base, there are a minimum of ancillary costs.
  231 Also, it may be desirable to connect together processors from a variety
  232 of vendors, with the workload judiciously allocated to
  233 the types of hardware that best support the requirements of each particular
  234 application program.
  235 This distribution of processing when coupled with the fact that
  236 users are spread out over multiple locations makes networking a vital
  237 ingredient as well.
  239 BRL's strategy for achieving this high level of portability was to target
  240 all the software for the UNIX operating system,
  241 \cite{unix-ts-sys},
  242 with all the software written in the ``{\bf C}''
  243 programming language \cite{c-prog-lang}.
  244 The entire BRL-CAD Package, including the MGED editor
  245 is currently running on all UNIX machines at BRL,
  246 under several versions of the UNIX operating system, including
  247 Berkeley 4.3 BSD UNIX, Berkeley 4.2 BSD UNIX, and AT\&T System V UNIX.
  249 The list of manufacturers and models of CPUs that support the UNIX
  250 operating system \cite{modern-tools-hi-res}
  251 is much too lengthy to include here.  However, BRL
  252 has experience using this software on
  253 DEC VAX 11/750, 11/780, 11/785 processors,
  254 Gould PN6000 and PN9000 processors,
  255 Alliant FX/8 and FX/80 processors (including systems with eight CPUs),
  256 Silicon Graphics IRIS 2400, 2400 Turbo, 3030, 4-D, and 4-D/GT workstations,
  257 the Cray X-MP, the Cray-2,
  258 and the ill-fated Denelcor HEP H-1000 parallel supercomputer.
  260 \section{Object-Oriented Design}
  262 The central editor code has four sets of object-oriented interfaces
  263 to various subsystems, including database access, geometry processing,
  264 display management, and command parser/human interface.
  265 In each case, a common interface has been defined for the set of
  266 functions that implement the subsystem;
  267 multiple instances of these function sets can exist.
  268 The routines in each instance of a subsystem are completely independent
  269 of all the routines in other functions sets, making it easy to add new
  270 instances of the subsystem.  A new type of primitive geometry,
  271 a new display manager, a new database interface, or a new command
  272 processor can each be added simply by writing all the routines
  273 to implement a new subsystem.
  274 This approach greatly simplifies software maintenance, and allows
  275 different groups to have responsibility for the
  276 creation and enhancement of features within each of the subsystems.
  280 \section{Background}
  282 Since the MGED system is presently based on the COMGEOM solid modeling
  283 technique, a brief overview of the COMGEOM technique is required
  284 to effectively use MGED.
  285 For more detailed information on the COMGEOM technique see
  286 \cite{gift1,gift2}.
  288 \begin{figure}[tb]
  289 \begin{tabular}{l l}
  290 Symbol & Name \\
  291 \\
  292 ARS & Arbitrary Triangular Surfaced Polyhedron \\
  293 ARB & Arbitrary Convex Polyhedron \\
  294 ELLG    & General Ellipsoid \\
  295 POLY    & Polygonal Faceted Solid \\
  296 SPL & Non-Uniform Rational B-Spline (NURB) \\
  297 TGC & Truncated General Cone \\
  298 TOR & Torus \\
  299 HALF    & Half Space (Plane)
  300 \end{tabular}
  301 \caption{Basic Solid Types \label{list-of-basic-solids} }
  302 \end{figure}
  303 \begin{figure}[tb]
  304 \begin{tabular}{l l}
  305 Symbol & Name \\
  306 \\
  307 RPP & Rectangular Parallelepiped \\
  308 BOX & Box \\
  309 RAW & Right Angle Wedge \\
  310 SPH & Sphere \\
  311 RCC & Right Circular Cylinder \\
  312 REC & Right Elliptical Cylinder \\
  313 TRC & Truncated Right Cylinder \\
  314 TEC & Truncated Elliptical Cylinder \\
  315 \end{tabular}
  316 \caption{Special-Case Solid Types \label{list-of-special-case-solids} }
  317 \end{figure}
  318 The COMGEOM technique utilizes two basic entities - a solid and a region.
  319 A solid is defined as one of fifteen basic geometric shapes or
  320 primitives.  Figure \ref{list-of-basic-solids} lists the
  321 basic solid types, and Figure \ref{list-of-special-case-solids}
  322 lists special cases of the basic solid types for which support exists.
  323 The individual parameters of each solid define the solid's
  324 location, size, and orientation.  A region is a combination of
  325 one or more solids and is defined as the volume occupied
  326 by the resulting combination of solids.
  327 Solids are combined into regions using any of three logic
  328 operations: union (OR), intersection (+), or difference (-).
  329 The union of two solids is defined as the volume in either
  330 of the solids.
  331 The difference of two solids is defined as the volume of the first
  332 solid minus the volume of the second solid.
  333 The intersection of two solids is defined as the volume
  334 common to both solids.
  335 %%% XXX Figure 1 presents a graphical representation of these operations.
  337 Any number of solids may be combined to produce a region.
  338 As far as the COMGEOM technique is concerned, only a region can
  339 represent an actual component of the model.
  340 Regions are homogeneous;  they are composed of a single material.
  341 Each region represents a single object in the model;
  342 the solids are only building blocks which are combined to
  343 define the {\em shape} of the regions.
  344 Since regions represent the components of the model, they
  345 are further identified by code numbers.
  346 These code numbers either identify the region as
  347 a model component (nonzero item code)
  348 or as air (nonzero air code).
  349 Any volume not defined as a region is assumed to be ``universal air'' and
  350 is given an air code of ``01''.
  351 If it is necessary to distinguish between universal ``01'' air and any
  352 other kind of air, then that volume must be defined as a region
  353 and given an air code other than ``01''.
  354 Normally, regions cannot occupy the same volume (overlap),
  355 but regions identified with
  356 air codes can overlap with any region identified as a component
  357 (i.e. one that has a nonzero item code).
  358 Regions identified with different air codes, however, can not overlap.
  360 \section{Directed Acyclic Graph and Database Details}
  362 One of the critical aspects of a graphics software package
  363 is its internal data structure.
  364 Since geometric models often result
  365 in very large volumes of data being generated,
  366 the importance of the data structure here is emphasized.
  367 Thus it is felt that a brief introduction to the
  368 organization of the MGED database is
  369 important for all users.
  371 The database is stored as a single,
  372 binary, direct-access
  373 UNIX file for efficiency and cohesion,
  374 with fixed length records called database {\em granules}.
  375 Each object occupies one or more granules of storage.
  376 The user sees and manipulates the directed acyclic graphs
  377 like UNIX paths (e.g., car/chassis/door),
  378 but in a global namespace.
  379 There can be many independent or semi-independent
  380 directed acyclic graphs within the same database,
  381 each defining different models.
  382 The figure also makes heavy use of the {\em instancing} capability.
  383 As mentioned earlier, the
  384 {\em leaves} of the graph are the primitive solids.
  386 Commands exist to import sub-trees from other databases and libraries,
  387 and to export sub-trees to other databases.
  388 Also, converters exist to dump databases in printable form for
  389 non-binary interchange.
  391 \section{Model Building Philosophy}
  393 The power of a full directed acyclic graph structure for representing
  394 the organization of the database gives a designer a great deal of
  395 flexibility in structuring a model.
  396 In order to prevent chaos, most designers at BRL choose to
  397 design the overall structure of their model in a top-down manner,
  398 selecting meaningful names for the major structures and sub-structures
  399 within the model.
  400 Actual construction of the details of the
  401 model generally proceeds in a bottom-up
  402 manner, where each sub-system is fabricated from component primitives.
  404 The first sub-systems to be constructed are the chassis and skin of the
  405 vehicle, after which a set of analyses are run to validate the geometry,
  406 checking for unintentional gaps in the skin or for solids which overlap.
  407 The second stage of model construction is to build the features of the
  408 main compartments of the vehicle.  If necessary for the analysis
  409 codes that will be used, the different types of air compartments within
  410 the model also need to be described.
  411 The final stage of model construction is to build the internal
  412 objects to the desired level of detail.
  413 This might include modeling engines, transmissions, radios,
  414 people, seats, etc.
  415 In this stage of modeling, the experienced designer will draw heavily on the
  416 parts-bin of model components and on pieces extracted from earlier
  417 models, modifying those existing structures to meet his particular
  418 requirements.
  420 Throughout the model building process it is important for the model builder
  421 to choose part names carefully, as the MGED database currently has a
  422 global name space, with individual node names limited to 16 characters.
  423 In addition, BRL has defined conventions for naming the elements in the
  424 top three levels of database structure,
  425 allowing people to
  426 easily navigate within models prepared at
  427 different times by different designers.
  428 This naming convention
  429 facilitates the integration of design changes into existing models.
  433 \section{Interaction Forms}
  435 Textual and numeric interaction with the MGED editor is the most
  436 precise editing paradigm because it allows exact
  437 manipulation of known configurations.
  438 This works well when the user is designing the model
  439 from an existing drawing, or when all dimensions are known (or are computable)
  440 in advance.
  442 The use of a
  443 tablet or mouse, knob-box or dial-box, buttons, and a joystick
  444 are all simultaneously supported by MGED for analog inputs.
  445 Direct graphic interaction via a ``point-push-pull'' editing paradigm
  446 tends to be better for
  447 prototyping, developing arbitrary geometry, and fitting
  448 together poorly specified configurations.
  449 Having both types of interaction capability available at all times
  450 allows the user to select the style of interaction that best
  451 meets his immediate requirements.
  453 \section{The Faceplate}
  455 \begin{figure}
  456 \centering \includegraphics{faceplate.ps}
  457 \caption{The MGED Editor Faceplate.}
  458 \label{faceplate}
  459 \end{figure}
  461 \begin{figure}
  462 \centering \includegraphics{buttonmenu.ps}
  463 \caption{The Pop-Up Button Menu.}
  464 \label{buttonmenu}
  465 \end{figure}
  467 When the MGED program has a display device attached, it
  468 displays a border around the region of the screen being used
  469 along with some ancillary status information.  Together, this
  470 information is termed the editor ``faceplate''.
  471 See Figure \ref{faceplate}.
  472 In the upper left corner of the display is a small enclosed area
  473 which is used to display the current editor state;
  474 this is discussed further in the Editor States section, below.
  476 Underneath the state display is a zone in which three ``pop-up'' menus
  477 may appear.
  478 The top menu is termed the ``button menu,'' as it
  479 contains menu items which duplicate many of the functions assigned to
  480 the button box.
  481 Having these frequently used
  482 functions available on a pop-up menu
  483 can greatly decrease the number of times that the user needs to remove
  484 his hand from the pointing device (either mouse or tablet puck)
  485 to reach for the buttons.
  486 An example of the faceplate and first level menu is shown in
  487 Figure \ref{buttonmenu}.
  488 The second menu is used primarily for the various editing states,
  489 at which time it contains all the editing operations which are generic
  490 across all objects (scaling, rotation, and translation).
  491 The third menu contains selections for object-specific editing operations.
  492 The choices on these menus are detailed below.
  494 It is important to note that while some display hardware that MGED runs on
  495 has inherent support for pop-up menus included, MGED does not
  496 presently take advantage of that support, preferring to depend
  497 on the portable menu system within MGED instead.
  498 It is not clear whether the slight increase in functionality that might
  499 accrue from using display-specific menu capabilities would offset the
  500 slight nuisance of a non-uniform user interface.
  502 Running across the entire bottom of the faceplate is a thin rectangular
  503 display area which holds two lines of text.
  504 The first line always contains a numeric display of the model-space
  505 coordinates of the center of the view and the current size of
  506 the viewing cube, both in the currently selected editing units.
  507 The first line also contains the current rotation rates.
  508 The second line has several uses, depending on editor mode.
  509 Normally it displays the formal name of the database that is being
  510 edited, but in various editing states this second line will instead
  511 contain certain path selection information.
  512 When the angle/distance cursor function is activated, the second
  513 line will be used to display the current settings of the cursor.
  515 It is important to mention that while the database records all
  516 data in terms of the fixed base unit of millimeters, all numeric interaction between
  517 the user and the editor are in terms of user-selected display [or local] units.
  518 The user may select from millimeters, centimeters, meters, inches, and
  519 feet, and the currently active display units are noted in the first
  520 display line.
  522 The concept of the ``viewing cube'' is an important one.
  523 Objects drawn on the screen are clipped in X, Y, and Z, to the size
  524 indicated on the first status line.
  525 This feature allows extraneous wireframes which are positioned within view
  526 in X and Y, but quite far away in the Z direction to not be seen,
  527 keeping the display free from irrelevant objects when zooming in.
  528 Some display managers can selectively enable and disable Z axis clipping
  529 as a viewing aid.
  531 \section{The Screen Coordinate System}
  533 \begin{figure}
  534 \centering \includegraphics{coord-axes.ps}
  535 \caption{The Screen Coordinate System.}
  536 \label{coord-axes}
  537 \end{figure}
  539 The MGED editor uses the standard right-handed
  540 screen coordinate system,
  541 as shown in Figure \ref{coord-axes}.
  542 The Z axis is perpendicular to the screen and the positive Z direction is
  543 out of the screen.  The directions of positive (+) and negative (-) axis
  544 rotations are also indicated.  For these rotations, the ``Right
  545 Hand Rule'' applies:  Point the thumb of the right hand along the direction
  546 of +X axis and the other fingers will describe the sense of positive
  547 rotation.
  549 \section{Changing the View}
  551 At any time in an editing session, the user may add one or more
  552 subtrees to the active model space.  If the viewing cube is
  553 suitably positioned, the newly added subtrees are drawn on the display.
  554 (The ``reset'' function can always be activated to get the entire active
  555 model space into view).
  556 The normal mode of operation is for users to work with wireframe
  557 displays of the unevaluated primitive solids.  These wireframes can be
  558 created from the database very rapidly.
  559 \begin{figure}
  560 \centering \includegraphics{crod.ps}
  561 \caption{An Engine Connecting Rod.}
  562 \label{crod}
  563 \end{figure}
  565 \begin{figure}
  566 \centering \includegraphics{crod-close.ps}
  567 \caption{Close-Up Connecting Rod, Showing Z-clipping.}
  568 \label{crod-close}
  569 \end{figure}
  571 On demand, the user can request the calculation of
  572 approximate boundary wireframes that account for
  573 all of the boolean operations specified along the arcs of the
  574 directed acyclic graph in the database.
  575 This is a somewhat time consuming process, so it is not used
  576 by default, but it is quite reasonable to use whenever the
  577 design has reached a plateau.
  578 Note that these boundary wireframes are not stored in the database,
  579 and are generally used as a visualization aid for the designer.
  580 Figure \ref{crod} shows an engine connecting rod.
  581 On the left side is the wireframe of the unevaluated primitives
  582 that the part is modeled with, and on the right side is the approximate
  583 boundary wireframe that results from evaluating the boolean expressions.
  585 Also, at any time the user can cause any part of the active model space
  586 to be dropped from view.
  587 This is most useful when joining two complicated subsystems
  588 together;  the first would be called up into the active model space,
  589 manipulated until ready, and then the second subsystem would also be
  590 called up as well.  When any necessary adjustments had been made,
  591 perhaps to eliminate overlaps or to change positioning tolerances,
  592 one of the subassemblies could be dropped from view,
  593 and editing could proceed.
  595 The position, size, and orientation of the viewing cube can be
  596 arbitrarily changed during an editing session.
  597 The simplest way to change the view is by selecting one of nine
  598 built in preset views, which can be accomplished by a simple keyboard
  599 command, or by way of a button press or first level menu selection.
  600 The view can be rotated and translated to any arbitrary position.
  601 The user is given the ability to execute a {\bf save view} button/menu
  602 function that attaches the current view to a {\bf restore view} button/menu
  603 function.
  605 The rate of rotation around each of the X, Y, and Z axes
  606 can be selected by knob, joystick, or keyboard command.
  607 Because the rotation is specified as a rate, the view
  608 will continue to rotate about the view center until the rotation
  609 rate is returned to zero.
  610 (A future version of MGED will permit selection of rate or value
  611 operation of the knobs).
  612 Similarly, the zoom rate (in or out) can be set by keyboard
  613 command or by rotating a control dial.
  614 Also, displays with three or more mouse buttons have binary (2x) zoom
  615 functions assigned to two of the buttons.
  616 Finally, it is possible to set a slew rate to translate the view
  617 center along any axis in the current viewing space, selectable
  618 either by keyboard command or control dial.
  619 In VIEW state, the main mouse button translates the
  620 view center;  the button is defined to cause the indicated point to become
  621 the center of the view.
  623 The assignment of zoom and slew functions to the mouse buttons tends to
  624 make wandering around in a large model very straightforward.
  625 The user uses the binary zoom-out button to get an overall view, then
  626 moves the new area for inspection to the center of the view and uses
  627 the binary zoom-in button to obtain a ``close up'' view.
  628 Figure \ref{crod-close}
  629 shows such a close up view of the engine connecting rod.
  630 Notice how the wireframe is clipped in the Z viewing direction
  631 to fit within the viewing cube.
  633 \section{Model Navigation}
  635 In order to assist the user in creating and manipulating a complicated
  636 hierarchical model structure, there is a whole family of editor commands
  637 for examining and searching the database.
  638 In addition, on all keyboard commands, UNIX-style regular-expression
  639 pattern matching, such as ``*axle*'' or ``wheel[abcd]'', can be used.
  640 The simplest editor command ({\bf t}) prints a table of contents, or directory,
  641 of the node names used in the model.  If no parameters are specified,
  642 all names in the model are printed,
  643 otherwise only those specified are printed.
  644 The names of solids are printed unadorned, while the names of combination
  645 (non-terminal) nodes are printed with a slash (``/'') appended to them.
  647 If the user is interested in obtaining detailed information about the
  648 contents of a node, the list ({\bf l}) command will provide it.
  649 For combination (non-terminal) nodes, the information about all departing
  650 arcs is printed, including the names of the nodes referenced, the boolean
  651 expressions being used, and an indication of any translations and rotations
  652 being applied.
  653 For leaf nodes, the primitive solid-specific ``describe yourself''
  654 function is invoked, which provides a formatted display of the parameters
  655 of that solid.
  657 The {\bf tops} command is used to find the names of all nodes which are
  658 not referenced by any non-terminal nodes;  such nodes are either
  659 unattached leaf nodes, or tree tops.
  660 To help visualize the tree structure of the database,
  661 the {\bf tree} command exists to
  662 print an approximate representation of the database subtree below the
  663 named nodes.
  664 The {\bf find} command can be used to find the names of all non-terminal
  665 nodes which reference the indicated node name(s).  This can be very helpful
  666 when trying to decide how to modify an existing model.
  667 A related command ({\bf paths}) finds the full tree path specifications
  668 which contain a specified graph fragment, such as ``car/axle/wheel''.
  669 In addition to these commands, several more commands exist
  670 to support specialized types of searching through the model database.
  672 \section{Editor States}
  674 The MGED editor operates in one of six states.
  675 Either of the two PICK states can be entered by button press,
  676 menu selection, or keyboard command.  The selection of the desired
  677 object can be made either by using {\em illuminate mode}, or by
  678 keyboard entry of the name of the object.
  680 Illuminate mode is arranged such that if there are {\bf n} objects visible on
  681 the screen, then the screen is divided into {\bf n} horizontal bands.
  682 By moving the cursor (via mouse or tablet) up and down through these bands,
  683 the user will cause each solid in turn to be highlighted on the screen,
  684 with the solid's name displayed in the faceplate.
  685 The center mouse button is pressed when the desired solid is located, causing
  686 a transition to the next state (Object Path, or Solid Edit).
  688 Illuminate mode offers significant advantages over more conventional pointing
  689 methods when the desired object lies in a densely populated region of the
  690 screen.  In such cases, pointing methods have a high chance of making an
  691 incorrect selection.
  692 However, in sparsely populated regions of the screen, a pointing paradigm
  693 would be more convenient, and future versions of MGED will support this.
  695 \section{Model Units}
  697 All databases start with an ``ident'' record which contains
  698 a title string that identifies the model, the
  699 current local units (e.g., mm, cm or inches) of the model,
  700 and a database version identification number.
  701 As noted, all numerical information
  702 in the database is stored in the fixed base
  703 unit of millimeters,
  704 and all work (input and output) is done in a user-selected local unit.
  705 The user can change his local unit at any time
  706 by using the {\bf units} command.
  707 This way of handling units was selected to free the user from worrying
  708 about units conversion when components are drawn from the ``parts bin''.