Abstract:
A schematic display system for displaying selected areas of interest of a schematic includes a display screen, preprocessed display data stored in a data structure, and a digital processor for controlling the level of detail of the display in accordance with level of detail values preassigned to component primitives of the schematic objects. The level of detail values are, in part, a function of the resolution of the display screen, and are selected to display details of the schematic as such detail would become visually meaningful to a human user of the system. The system includes provision for user defined restricted schematics which eliminate objects, connections, etc. from that display (but not from the basic underlying schematic) as specified by the user. It also includes provision for custom schematics which simultaneously display areas of interest on the screen, the displayed areas of interest being non-adjacent areas, areas from different functional schematics (electrical and structural), etc. based on the basic underlying schematic(s). Both restricted schematics and custom schematics are stored economically for future selection and retrieval. The system allows the user to change the displayed scale of the area of interest, while keeping the center of view on the schematic substantially constant as the displayed scale is changed.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates to the display of schematics, such as those used in inspection and repair of equipment, and more particularly to a system for display of such schematics which is particularly suited for use by a human operator during the inspection/repair process. 
     With the widespread use of computer aided design and computer aided manufacturing, electronic (predominantly raster) versions of various schematics are now available. These can take the form of stand-alone electronic drawings, in the simplest case, or can be part of electronic technical manuals. The drawings can represent the simplest of consumer products, or complex systems like automobiles and aircraft. Such drawings are particularly useful for maintenance technicians, since they provide (1) ready access to supplemental data relating to a product, (2) learning aids to increase the technicians skill and knowledge with respect to the product, and (3) invaluable assistance in trouble-shooting a problem. They are, of course, also used in the design and manufacture of products and systems. It would be desirable to tie together all these various functions together in one, easily available system. 
     Although electronic schematics drawings are readily displayable using conventional computer equipment, they could be improved. For example, electronic schematics can be displayed on a desktop CRT display, but for some purposes (such as inspection and trouble-shooting) it would be preferable to have a portable display. Portable schematic display systems have been designed, which house all the information a technician needs to perform each maintenance task. But with these systems (as indeed with stationary display systems) display of graphical information is the greatest challenge. The computer screen of portable display systems is smaller and oriented differently than a paper page, and the resolution is far inferior (300-600 dpi paper to approximately 90 dpi screen, for example). Even stationary displays conventionally lack the resolution of a paper schematic. 
     Although the resolution of computer screens is adequate for text applications, the coarse resolution and (in the case of portable display systems) small overall screen size make the display of detailed graphic information difficult. Most procedural graphics are capable of being decomposed into small chunks and simplified for clear display; however, schematics used for troubleshooting are not amenable to such treatment. Unfortunately, of all technical data in the field, schematics are probably used the most and in the most desperate of circumstances. Current schematic displays on a small screen usually force the user to zoom, pan, and scroll to view the full schematic. Users are easily lost and must manipulate the display to get what they need to see on the screen in a usable form. 
     Schematics are often complicated and hard to read for the novice. And when translated to a small computer screen, even a skilled technician may find them difficult to use, in part because of the immense amount of detail. It would be desirable to both facilitate the manipulation of an electronic schematic on a computer screen, and simplify the display of information on the schematic itself. 
     SUMMARY OF THE INVENTION 
     Among the various objects and features of the present invention may be noted the provision of a schematic display system which improves the display of needed information on a schematic without adding unnecessary and unwanted detail. 
     Another object is the provision of such a schematic display system which facilitates the use of an electronic schematic. 
     A third object is the provision of such a schematic display system which displays only needed portions of a schematic. 
     A fourth object is the provision of such a schematic display system which controls in a meaningful and visually significant manner the level of detail at which a schematic is displayed. 
     A fifth object is the provision of such a schematic display system which facilitates the display of the schematic at a different level of detail at the technician&#39;s request. 
     A sixth object is the provision of such a schematic display system which allows the technician to move easily from one schematic to another, or from one area of interest to another in a given schematic. 
     A seventh object is the provision of such a schematic display system which allows the technician to control the sequence of presentation. 
     An eighth object is the provision of such a schematic display system which allows authorized personnel to define restricted and custom schematics, and which facilitates their storage, retrieval and use. 
     A ninth object is the provision of such a schematic display system which facilitates a return to the portion of a schematic which was last viewed by the technician. 
     A tenth object is the provision of such a schematic display system which requires relatively conventional computer hardware for its implementation. 
     An eleventh object is the provision of such a schematic display system which may be readily and reliably updated as the basic engineering schematic is updated. 
     A twelfth object is the provision of such a schematic display system which enhances troubleshooting procedures through intelligent schematic techniques. 
     Other objects will be in part apparent and in part pointed out hereinafter. 
     Briefly, in a first aspect of the present invention, a schematic display system includes a memory having stored therein a data structure corresponding to a schematic to be displayed, a processing unit operatively connected to the memory for retrieving data from the memory data structure, and a visual display device under control of the processing unit for displaying at least selected portions of the schematic. The system also has manually operable inputs operatively connected to the processing unit for initiating manual requests for changing the scale at which at least a selected portion of the schematic is displayed on the display device. The processing unit is responsive to the manual requests to change the schematic scale correspondingly. The data structure stored in the memory includes at least a plurality of data representations of schematic objects, at least some of the schematic objects being composed of a plurality of component data objects, each component data object of a schematic object having an assigned level of detail, which assigned level of detail may differ for different component data objects of a given schematic object. The data structure further includes data representations of connections between the schematic objects. The processing unit is responsive to the selected scale at which the schematic is to be displayed to display only those component data objects whose assigned level of detail corresponds to the selected scale of display. 
     In a second aspect of the present invention, a schematic display system includes a memory having stored therein preprocessed data representative of a schematic to be displayed, a digital processor operatively connected to the memory for retrieving preprocessed data from the memory, a visual display device under control of the processor for displaying at least selected portions of the schematic, and inputs operatively connected to the processor for requesting a change in the scale at which at least a selected portion of the schematic is displayed on the display device. The processor is responsive to said requests to change the schematic scale correspondingly. The preprocessed data representative of the schematic includes data representations of schematic objects, at least some of said schematic objects being composed of a plurality of component data objects, and at least some of the component data objects of a schematic object having an assigned level of detail, which assigned level of detail may differ for different component data objects of a given schematic object. The assigned level of detail is automatically preassigned as a function of at least one display parameter of the visual display device, such as display resolution. 
     In a third aspect of the present invention, a schematic display system includes a memory having stored therein preprocessed data representative of a schematic to be displayed, a digital processor operatively connected to the memory for retrieving preprocessed data from the memory, and a visual display device under control of the processor for displaying at least selected portions of the schematic, the displayable area of said visual display device being known and being taken into account in preparing the preprocessed data. Inputs are operatively connected to the processor for selecting areas of interest of the schematic, the inputs requesting a widening or narrowing of an area of interest. The processor is responsive to an input indicative of a request for changing the width of the area of interest to determine, from the preprocessed data and the size of the area of interest, the level of detail at which the requested area of interest is to be displayed on the display device. 
     In a fourth aspect of the present invention, a schematic display system includes a memory having stored therein data representative of a schematic to be displayed, a digital processor operatively connected to the memory for retrieving schematic data from the memory, and a visual display device under control of the processor for displaying at least selected portions of the schematic. Inputs are operatively connected to the processor for selecting areas of interest of the schematic, the inputs defining at least a pair of separate areas of interest (which can, for example, be non-contiguous or from functionally different schematics for the same piece of equipment), and associating the pair of areas of interest together in a custom schematic. The processor is responsive to the inputs to store the identities of the selected areas of interest in the memory so that upon an input requesting display of the custom schematic the digital processor retrieves the identities from memory and controls the display device to display the custom schematic. 
     In a fifth aspect of the present invention, a schematic display system includes a memory having stored therein data representative of a schematic to be displayed, a digital processor operatively connected to the memory for retrieving schematic data from the memory, and a visual display device under control of the processor for displaying at least selected portions of the schematic. Inputs are operatively connected to the processor for selecting areas of interest of the schematic and for requesting a widening or narrowing of an area of interest. The processor is responsive to an input indicative of a request for changing the width of the area of interest to keep the geometric center of the displayed area interest substantially the same irrespective of the amount of requested change of the width of the area of interest. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the schematic display system of the present invention; 
     FIG. 2 is a block diagram illustrating data structures used by the schematic display system of FIG. 1; 
     FIG. 3 is a simplified flow chart illustrating the preprocessing of schematic data for the data structures of FIG. 2; 
     FIG. 4 is a simplified flow chart illustrating the display procedure of the schematic display system of FIG. 1; 
     FIGS. 5A-5Q are illustrative screens of the schematic display system of FIG. 1; 
     FIGS. 6A and 6B are simplified screens illustrating the difference in appearance of a schematic when displayed at different levels of detail by the schematic display system of FIG. 1; and 
     FIGS. 7A and 7B are simplified screens illustrating the change in level of detail as the area of interest of a schematic is widened and narrowed in the schematic display system of FIG. 1. 
     Similar reference characters indicate similar parts throughout the several views of the drawings. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Turning now to the drawings, there is shown a schematic display system 11 of the present invention, operable by a user/technician 13. By way of illustration system 11 is embodied in a portable computer 15 having a processor 17, a memory 19, a display 21, and a user interface 23. All of these components can be, and preferably are, conventional. The user interface, for example, includes a keyboard and pointing device (such as a track ball, pointing pad, or equivalent) by means of which the user can enter requests and information. The memory can include RAM, various forms of ROM, and hard-drive storage. 
     The memory 19 has stored therein a data structure particularly suited for the display of schematics on display 21 in a clear and logical manner. The present display system does not display electronic schematic files in the form generated by conventional computer aided design/manufacturing tools. Rather, these electronic schematic files are preprocessed by system 11 to be put into the data structure form described below. Specifically, the system converts an input file from an engineering design tool into a format that is useful to the run-time display of schematics. This processing creates a hierarchy of relationships within the schematic data which is absent from the input file. 
     At the top of the hierarchy are ModelFiles. The ModelFiles contain schematics of three types: base, restricted, and custom (as labeled in FIG. 2). The restricted and custom schematics are special cases of the base schematics. They are defined using the base schematic and leaving out components (restricted schematics) or defining multiple simultaneous Areas of Interest (AOI) (custom schematics). 
     The base schematic construct contains several data entities. The schematic graphic data is made up of AOIs (Areas of Interest), devices, connectors, and connectivity information. 
     Areas of Interest are pre-defined views of the schematic information. In other words, they are pre-defined views within a schematic for display in a presentation viewport (display 21). The AOI location, height, and width control what is displayed in the display viewport. System 11 utilizes a user-centric data model that reverses the logical hierarchy and references the schematic from the selected AOI. This is because the user 13 normally thinks of a particular screen image (pump, circuit breaker box, robot arm assembly, etc.) rather than the schematic that contains the image. Therefore, user 13 selects an AOI label and that AOI label points to that portion of the schematic which contains this AOI. 
     As illustrated in block-diagram form in FIG. 2, there are two types of devices: fixed shapes and routable lines. Fixed shapes are a set of graphic primitives (also called component data objects) grouped together as one graphic entity. Graphics primitives are those components (lines, circles, arcs, text, etc.) which are drawn directly on the display screen 21 by the graphics system. In the memory 19, these primitives are grouped together and assigned to a fixed shape using a geometry --  list --  type data structure, described below. In general terms, a group of graphics primitives and their attributes make up graphic entities (also called schematic objects) which are objects of interest in the graphic system, such as pumps, switch boxes, tanks, etc. Additionally, other information is associated with the fixed shape using the device --  fixed --  shape --  type data structure, also described below. 
     Similarly, routable lines are collections of lines grouped together and treated as one graphic entity. The geometry --  list --  type data structure is used to describe the lines comprising a routable line entity. Other information is associated with the routable line using a device --  routable --  line --  type data structure. These devices are grouped in a schematic using the device --  list --  type data structure. 
     Connectors define the entities where devices connect. The connectors are associated with the devices they are part of and are described in the data file using the connector --  list --  type data structure. This data definition supports the tracing of device connectivity. Connectivity is defined by cross-referencing several data structures: a connector --  id --  list --  type, a device --  id --  list --  type, a dev --  to --  con --  list --  type, a con --  to --  dev --  list --  type, and a schematic --  to --  connector --  list --  type. This data relation allows the creation of a connectivity web where devices have associated connectors which are connected to other connectors attached to other devices and the like. 
     Restricted schematics are limited qualifications of base schematics with some devices, connectors, and connectivity data removed. This is easily managed by creating a list of pointers to the data in the base schematic that is included in the restricted schematic. The data is stored only once, in the base schematic portion of the file, giving system 11 efficient data storage and consistent data portrayal. A restricted schematic simplifies the data of the base schematic to place emphasis on particular structures or processes. All of the underlying information from the original base schematic is still valid but, in this special case, some of it is not displayed. 
     Custom schematics are collections of AOI from a base or restricted schematic identified for simultaneous display. They have all of the information available in the underlying base or restricted schematic in the multiple opened display AOI. Custom schematics support specific procedures where multiple distant locations must be displayed without need to show the detail between them or where different systems (electrical, hydraulic, mechanical, etc.) must be viewed simultaneously. 
     Storage of a Base Schematic 
     The preprocessing of the schematic data in more specific terms involves the following steps: 
     For each device the processor (or a preprocessor if the preprocessing step is implemented on a computer other than that illustrated in FIG. 1) sets the following device information: 
     device id 
     device label (not on Routables) 
     device label coordinate 
     device description 
     device icon type 
     This information is stored in class variables until the geometry for the device is processed and the device is stored in a linked list. 
     Based on the device icon type, the device will be either a fixed shape or a routable line. The difference is how the geometry is processed. For fixed shapes, the geometry is collected by repeated calls to either an Add --  circle or an Add --  line routine. Both routines simply add the geometry to the same current device geometry list. For routable lines, the geometry is collected by parsing the routable points into lines calling the Add --  line routine to store them into the current device geometry list. Device information is added to a linked list with the other devices in the schematic. 
     The description and geometry are written to file at this time because no further processing is done to them. This storage of device information is handled by routines Store --  device --  fixed --  shape and Store --  device --  routable --  line, both of which call routines named Write --  geometry --  to --  file and Write --  description --  to --  file. Writing of the Device list to file is handled by routines Write --  routable --  device --  list --  to --  file and Write --  fixed --  device --  list --  to --  file, which are separate to assure that the proper information is saved for each type. 
     Connectors in the schematic are preprocessed in a similar manner. Specifically, The connector&#39;s id is captured by a call to a Set --  connector --  id routine. In response a node on the current --  connector --  list is created and this information is placed in that node. Spaces for geometry location (both pointer in memory, and in the geometry file) are initially NULL. The connector geometry is collected by repeated calls to either Add --  circle or Add --  line. Both simply add the geometry to the same current connector geometry list. When all the geometry for the current connector has been added to the current connector geometry list, the list is attached to the current connector node on the current --  connector --  list. 
     A copy of the current --  connector --  list is saved once all the connectors for the schematic have been read in using a routine called Write --  connector --  geometry --  to  --  temp --  file. Once the base schematic is saved, the list of connectors is added to another list, and pointed to a node with the base schematic name in it. This is used to recall the original connectors when dealing with Restricted Schematics. The file this creates holds the geometry so when the connectors in the restricted schematics are recreated, system 11 has the original geometry to work from. The connector information is not written to file until the connectivity has been computed. 
     The preprocessing of connectivity is accomplished in a sequence that starts by calling a routine named Set --  connectivity with the device and connector ids from one line of connectivity in the schematic file. Set --  connectivity is called for each line of connectivity. The first call Set --  connectivity makes is to Get --  connectivity --  list. This is sent the connector ids that need to be connected. It returns a list (current --  connectivity --  list) that contains the information about those connectors that is in the current --  connector --  list (id&#39;s and geometry). The routine Set --  connectivity then sends this list to a routine named Remove --  redundant --  geometry, which takes the geometry of the first connector and compares it to the other connector&#39;s geometry, removing those that are within tolerance. It then loops down through the list, checking the next connector against the ones below it, until all have been checked. The set --  connectivity routine then takes the current --  connectivity --  list and sends it through a Group --  connector --  geometry routine, which groups the remaining geometry together into one list and returns that list. 
     The set --  connectivity routine sends the geometry list to a Create --  new --  connector routine, which creates a node on the New --  connector --  list, puts the new --  connector --  id in it and adds the geometry. The set --  connectivity routine then calls a Add --  connector --  to  --  device --  to --  connector --  list routine, which sends the list of devices that are associated with the original connectors. The routine knows what the new --  connector --  id is, so it loops through the device --  to --  connector list, adding the connector --  id to each of the device&#39;s device --  to --  connector entry. 
     Similarly, to add a device to the connector list, the Set --  connectivity routine calls a Create --  connector --  to --  device --  node routine, which attaches the device to the current --  connector --  to --  device --  list. It attaches a copy of the device list (the listing of devices associated with the original connectors). 
     The device --  to --  connector and connector --  to --  device lists are saved using Write --  con --  to --  dev --  list --  to --  file and Write --  dev --  to --  con --  list --  to --  file routines, which are similar in function. The file record used to store either list has one field for the Primary item (the first one, i.e. connector for Connector --  to --  device or device for device --  to --  connector) and two fields for the secondary items. This means that if there is more than a one to two ratio, it will be spanned across two or more records. This is achieved by putting the same Primary item id on each record, and taking the next two secondary items and putting them in. This is done until all of secondary data is saved. If there is an odd number of secondary data, the second spot of the last record entry for that node, is filled with a zero id. 
     The connector information is stored with Write --  connector --  list --  to --  file. This uses the Write 13  geometry 13  to --  file routine for the geometry. It simply writes the New --  connector --  list to file, using one record per node. As each node of device --  to --  connector and connector --  to --  device in the list is written out, its memory is freed. The list for connectors is not. A new node on the schematic --  to --  connector --  list is created, and the connector list is attached to this node. 
     Area of Interest (AOI) information is preprocessed as follows: 
     Basic AOI information is gathered with calls to routines to set the AOI name, set the AOI header, set the grouping, set the schematic upper left point, set the schematic height and set the schematic width. Once this information has been gathered, it is added, as a node, to the current --  aoi --  list. 
     Once all the AOIs for the given schematic have been added to the current --  aoi --  list, a Write --  aoi --  list --  to --  file routine is called to save them to file. The structure being written to file contains all the AOI data, plus an extra field that is used with custom schematics. For base and restricted schematics, this field is set to zero. As each node in the list is written out, its memory is freed. 
     Storage of the schematic information at the schematic level is handled by a Store --  schematic --  info --  to --  file routine. This procedure calls the Write --  connector --  list --  to --  file routine to save the connector data. The Write --  connector --  list --  to --  file routine returns the file location of the first connector, and this is stored in the outgoing --  schematic structure. It performs this same pattern for routines labeled Write --  dev --  to --  con --  list.sub. to --  file, and Write --  con --  to --  dev --  list --  to --  file. On routable lines and fixed shapes, only the device starting point is saved. The device records point to the routable lines or fixed shape records. The schematic --  device --  file --  pointer is stored in the outgoing --  schematic structure before the routable lines and fixed shape lists are saved. They are saved by calls to a Write --  routable --  device --  list --  to --  file routine. In this routine, along with the above information, the schematic size, schematic origin, and schematic type (base, restricted, and custom) are stored in to the outgoing --  schematic structure and then written to file. 
     Processing of a Restricted Schematic 
     To store a restricted schematic, system 11 loads the base schematic information (discussed above) into memory. System 11 then calls an Add --  device --  to --  list routine to send the devices to be in the restricted schematic. This function also calls an Add --  device --  to --  dev --  to --  con --  list routine, which searches the base schematics dev --  to --  con --  list and copies that device&#39;s entry into the current --  device --  to --  connector --  list. System 11 then calls an Add --  connectors --  to --  list routine, which takes the connectors in the current --  device --  to --  connector --  list and searches the base schematics con --  to --  dev --  list and adds that information to current --  connector --  to --  device --  list. System 11 then calls a Create --  restricted --  schematic routine, which recreates the connectors that need geometry removed (described in connectors section). 
     In constructing the data structures for a restricted schematic, only the device information nodes are rewritten to the file structure. Since there is no change in devices from base schematic to restricted schematic, the device information simply points back to the routable line and fixed shape entries. 
     Storage of a restricted schematic is accomplished with the Write --  restricted --  devices --  to --  file routine. 
     The treatment of connectors in the restricted schematics is as follows: Within the routine Create --  restricted --  schematic, the connector --  to --  device list is examined entry by entry, checking if the list has devices that are not part of the Restricted Schematic. Entries that do are checked to determine if they have any lines. If they do, their geometry is rechecked to remove any lines and circles that are connected to the devices that are not part of the restricted schematic. Connectors altered in this manner are placed on the new --  connector --  list. 
     Only the connectors on the new --  connector --  list need their geometry data saved for restricted schematics. (The others are mapped back to the already saved geometry). To do this, the Write --  connector --  list --  to --  file has a parameter flag for Save geometry or not. In this case it would be set to save. The connectors left on the current --  connector --  list did not change and are saved with the DONT --  SAVE --  GEOMETRY flag. 
     In restricted schematics, connectivity is processed by reading the dev --  to --  con and con --  to --  dev entries from the base schematic the restricted schematic is based on. Only those entries that are part of the restricted schematic are copied. The con --  to --  dev list (which was created by retrieving all the connectors that are listed in the dev --  to --  conn list), lists all of the devices connected to that connector, even devices not in the restricted schematic. To remove these the system calls a routine labeled Remove --  access --  devices --  from --  con --  to --  dev --  list. Storage for connectivity is handled the same as with base schematics (discussed above). 
     Areas of Interest (AOIs) for restricted schematics are handled the same as AOIs for base schematics (see above). 
     Processing of a Custom Schematic 
     Custom schematics only combine existing AOIs, so there is no processing of devices and connectors. AOIs are processed as follows: The system gets the name of the AOI to be included and calls the routine Load --  aoi. This pulls up the AOI&#39;s information so it can be used to create the custom AOI. The system then calls routines to set the window upper left point, window height, and window width information for the AOI. This information is stored on the current --  aoi --  list by the routine Store --  aoi --  to --  file. 
     The custom schematic name is put on all the AOIs for that custom schematic. Saving of a custom AOI is the same (Write --  aoi --  list --  to --  file) except that along with each having the same name, the next pointer is not zero. Instead, only the last entry will be zero, all the others will point to the next one. This is how the system knows a custom schematic, and where the next AOI for the custom schematic is located. 
     Major Data Structures 
     The schematic display system 11 of the present invention has the following major data structures: 
     
         ______________________________________typedef struct {long int x; long int y;} coordinate.sub.-- type;typedef struct {coordinate.sub.-- type up.sub.-- left; coordinate.sub.-- type lower.sub.-- right;} bounding.sub.-- area.sub.-- type;typedef struct geometry.sub.-- list.sub.-- type { primitive.sub.-- type primitive.sub.-- class; coordinate.sub.-- type first.sub.-- point; coordinate.sub.-- type second.sub.-- point; color.sub.-- type color; int line.sub.-- width; line.sub.-- style.sub.-- type line.sub.-- style; int level.sub.-- of.sub.-- detail boolean.sub.-- type circle.sub.-- fill; struct geometry.sub.-- list.sub.-- type *next;} geometry.sub.-- list.sub.-- type;typedef struct device.sub.-- fixed.sub.-- shape.sub.-- type { char device.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; device.sub.-- icon.sub.-- type device.sub.-- icon; char device.sub.-- label MAX.sub.-- DEV.sub.-- LABEL.sub.--LEN+1!; coordinate.sub.-- type label.sub.-- coordinate; charbase.sub.-- schematic.sub.-- name MAX.sub.-- SCH.sub.-- NAME.sub.--LEN+1!; unsigned long int geometry.sub.-- location; unsigned long int description.sub.-- location; struct device.sub.-- fixed.sub.-- shape.sub.-- type *next;} device.sub.-- fixed.sub.-- shape.sub.-- type;typedef struct device.sub.-- routable.sub.-- line.sub.-- type { char device.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; flow.sub.-- type flow.sub.-- direction; bounding.sub.-- area.sub.-- type bounding.sub.-- area; charbase.sub.-- schematic.sub.-- name MAX.sub.-- SCH.sub.-- NAME.sub.--LEN+1!; unsigned long int geometry.sub.-- location; unsigned long int description.sub.-- location; struct device.sub.-- routable.sub.-- line.sub.-- type *next;} device.sub.-- routable.sub.-- line.sub.-- type;typedef struct connector.sub.-- list.sub.-- type { unsigned long int old.sub.-- connector.sub.-- id; char device.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; char old.sub.-- string.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; unsigned long int new.sub.-- connector.sub.-- id; unsigned long int geometry.sub.-- location; geometry.sub.-- list.sub.-- type *connector.sub.-- geometry.sub.--location; struct connector.sub.-- list.sub.-- type *next;} connector.sub.-- list.sub.-- type;typedef struct device.sub.-- list.sub.-- type { char device.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; device.sub.-- icon.sub.-- type device.sub.-- icon; unsigned long int device.sub.-- location; unsigned long int geometry.sub.-- location; int number.sub.-- of.sub.-- ids; struct device.sub.-- list.sub.-- type *next;} device.sub.-- list.sub.-- type;typedef struct connector.sub.-- id.sub.-- list.sub.-- type { unsigned long int connector.sub.-- id; struct connector.sub.-- id.sub.-- list.sub.-- type *next;} connector.sub.-- id.sub.-- list.sub.-- type;typedef struct dev.sub.-- to.sub.-- con.sub.-- list.sub.-- type { char device.sub.-- id MAX.sub.-- ID.sub.-- LEN+1!; unsigned long int number.sub.-- of.sub.-- connectors; connector.sub.-- id.sub.-- list.sub.-- type *old.sub.-- connector.sub.-- ids; connector.sub.-- id.sub.-- list.sub.-- type *new.sub.-- connector.sub.-- ids; int number.sub.-- of.sub.-- ids; struct dev.sub.-- to.sub.-- con.sub.-- list.sub.-- type *next;} dev.sub.-- to.sub.-- con.sub.-- list.sub.-- type;typedef struct device.sub.-- id.sub.-- list.sub.-- type { char device.sub.-- ids MAX.sub.-- ID.sub.-- LEN+1!; struct device.sub.-- id.sub.-- list.sub.-- type *next;} device.sub.-- id.sub.-- list.sub.-- type;typedef struct con.sub.-- to.sub.-- dev.sub.-- list.sub.-- type { unsigned long int new.sub.-- connector.sub.-- id; int number.sub.-- of.sub.-- devices; device.sub.-- id.sub.-- list.sub.-- type *device.sub.-- ids; struct con.sub.-- to.sub.-- dev.sub.-- list.sub.-- type *next;} con.sub.-- to.sub.-- dev.sub.-- list.sub.-- type;typedef struct schematic.sub.-- to.sub.-- connector.sub.-- list.sub.--type { charbase.sub.-- schematic.sub.-- name MAX.sub.-- SCH.sub.-- NAME.sub.--LEN+1!; connector.sub.-- list.sub.-- type *original.sub.-- connectors; dev.sub.-- to.sub.-- con.sub.-- list.sub.-- type * new.sub.--con.sub.-- id.sub.-- to.sub.-- old.sub.-- id.sub.-- list; struct schematic.sub.-- to.sub.-- connector.sub.-- list.sub.-- type*next;} schematic.sub.-- to.sub.-- connector.sub.-- list.sub.-- type;typedef struct name.sub.-- struct { char string 40!; struct name.sub.-- struct *next;} name.sub.-- struct;______________________________________ 
    
     Level of Detail 
     The schematic display system 11 of the present invention differs fundamentally from known systems in that graphics primitives (component data objects such as lines, circles, arcs, text, etc. which make up a graphic entity) are preprocessed to have an assigned level of detail value. This is illustrated in FIG. 3, in which the preprocessing step (discussed in general terms above) includes identifying the graphics primitives, setting a threshold for display of each graphics primitive (usually in terms of numbers of pixels required to meaningfully display the graphics primitive), and then using that threshold to set a level of detail value for the corresponding graphics primitive in the data structure. This is not a display step, but rather a preprocessing step for determining how graphic entities (pumps, switches, etc. on the schematic) are to be displayed as the schematic is displayed at varying levels of detail. The display step (illustrated in block form in FIG. 4) uses the level of display value for the graphics primitives in a given AOI to retrieve for display only those graphics primitives which have a level of detail value which corresponds to the current level of detail of the AOI displayed. (As will become apparent, this means that as the level of detail of the display increases, more and more graphics primitives are displayed, while at the same time a smaller and smaller area of the overall schematic is displayed. A graphics primitive in the field of view is displayed automatically when its level of detail value equals the level of detail of the display, and it continues to be displayed at all higher levels of detail. It is automatically removed from display when the level of detail of the display falls below its preassigned level of detail value.) 
     The present scheme of assigning level of detail values to graphics primitives, and displaying the primitives automatically when the display is at the same (or higher) level of detail provides sharp, crisp displays even on small computer screens by controlling the density of the graphics entities being displayed. This is accomplished in two steps. The first step is the LOD (level of detail) assignment procedure, which examines each graphics primitive in each graphic entity and assigns a level of detail value to that primitive. This procedure is a component of the preprocessing step for graphics data preparation, discussed above. The second component is a real-time display procedure, which determines, at display time, those graphic primitives of an entity which are to be displayed. This procedure is a component of the real-time display program of processor 17. Both procedures are discussed below. 
     The Level of Detail Assignment Procedure 
     The objective of the level of detail assignment procedure is to determine the lowest level of detail (LOD) at which a graphics primitive should be displayed. This procedure is executed during the graphics data preprocessing step. One approach to the objective is to develop a LOD Table which correlates LOD value with per cent reduction of each graphic primitive of each graphic entity being drawn (the smaller the per cent reduction, the higher the LOD). These values are determined experimentally based on user preferences, the objects being displayed, and the particular display screen being used. Similar tables are developed for graphic attributes like fonts, line sizes, and line styles (see discussion of Level of Detail Real-Time Algorithm below). 
     In determining the proper level of display values for a particular display screen, it is necessary to determine the display screen parameters DISPLAY --  WIDTH --  PIXELS  --  PER --  IN and DISPLAY --  HEIGHT --  PIXELS --  PER --  IN, both of which are constant. It is also necessary to associate a threshold number of pixels with each graphic primitive. For example, a circle which takes up only four pixels on a particular display screen is not recognizable as a circle, and so should not be displayed as a circle. 
     Once the pixel threshold is determined, the level of detail at which each graphic primitive of each graphic entity is first displayed is determined. At a given per cent reduction (and its associated LOD), if the number of pixels required to display a graphics primitive falls below the corresponding threshold number of pixels, the graphics primitive will NOT be displayed. From this threshold information, system 11 determines the LOD value for which the graphics primitive should first be displayed. This level of detail value is recorded with the graphics primitive. 
     The following pseudocode is intended to illustrate the LOD assignment procedure, and is not meant to indicate that it depends on any specific graphics windowing system. It is designed to allow user preferences to be accommodated by supporting adjustment of the parameters mentioned above. Values in the LOD --  TABLE, for example, may be changed according to user tastes. 
     The global variables for the LOD assignment procedure are as follows: 
     
         ______________________________________1. Determination of the number of pixels/inch (These values are constant for a given display device.) DISPLAY.sub.-- WIDTH.sub.-- IN   Width of display in inches. DISPLAY.sub.-- WIDTH.sub.-- PIXELS   Width of display in pixels. DISPLAY.sub.-- HEIGHT.sub.-- IN   Height of display in inches. DISPLAY.sub.-- HEIGHT.sub.-- PIXELS   Height of display in pixels. DISPLAY.sub.-- WIDTH.sub.-- PIXELS.sub.-- PER.sub.-- IN = (DISPLAY.sub.-- WIDTH.sub.-- PIXELS) / (DISPLAY.sub.-- WIDTH.sub.-- IN) DISPLAY.sub.-- HEIGHT.sub.-- PIXELS.sub.-- PER.sub.-- IN = (DISPLAY.sub.-- HEIGHT.sub.-- PIXELS) / (DISPLAY.sub.-- HEIGHT.sub.--IN)2. Other global variables: NUMBER.sub.-- PIXELS.sub.-- REQUIRED.sub.-- TO DISPLAY.sub.-- CIRCLE (Constant used to control the number of pixels required in the side ofthe bounding box for a circle before the circle is displayed, which is preferably at least five) NUMBER.sub.-- PIXELS.sub.-- REQUIRED.sub.-- TO.sub.-- DISPLAY.sub.--LINE (Constant used to control the number of pixels required in determining whether or not a line should be displayed, which is preferably at leasttwo pixels) LOD.sub.-- TABLE (Gives the minimum % reduction for a given LOD. Used to determine LOD settings for each component to be drawn. Note that the values can be adjusted to meet user tastes.)______________________________________  %LOD    Reduction     Comments______________________________________1      95%           Basic object outline displayed2      75%3      55%4      35%5      15%6       0%           Entire object is displayed______________________________________ POINTER.sub.-- TO.sub.-- CURRENT.sub.-- GRAPHIC.sub.-- ENTITY (Pointer to current graphic entity of interest: device-fixed shapes,device- routable lines, schematic.sub.-- connector) POINTER.sub.-- TO.sub.-- CURRENT.sub.-- GRAPHIC.sub.-- ENTITY.sub.--GEOMETRY (Pointer to graphic component of current graphic entity. Value deter- mined from the value stored in POINTER.sub.-- TO.sub.-- GEOMETRY of the current device or of one of its geometry components.) DEVICE.sub.-- FIXED.sub.-- SHAPES (File or structure containing device.sub.-- fixed.sub.-- shapeinformation) DEVICE.sub.-- ROUTABLE.sub.-- LINES (File or structure containing device.sub.-- routable.sub.-- linesinformation) SCHEMATIC.sub.-- CONNECTOR (File or structure containing schematic.sub.-- connector______________________________________information) 
    
     The following pseudocode illustrates the various functions of the LOD assignment procedure. ##SPC1## 
     Level of Display Real-Time Display Procedure 
     The objective of the level of display real-time display procedure is to determine, at display time, those graphic primitives of an entity which are to be displayed. This procedure is a component of a real-time display program. Its approach is that for a given Area of Interest (AOI) that is to be displayed, the system: 
     1. Computes the % reduction required to draw the AOI in the display window (viewport). 
     2. From the LOD --  TABLE determines the proper LOD level (corresponding to the % reduction) at which to display AOI. 
     3. For each graphic primitive in each graphic entity in the AOI to be displayed: 
     Determines whether or not the LOD value of the graphics primitive is less than or equal to the LOD value at which to display the AOI. 
     If the LOD value of the graphic primitive is less than or equal to the LOD value for displaying the AOI: 
     Determine appropriate attributes for each component (based on display LOD) 
     Display the graphics primitive. 
     ELSE do NOT display graphics primitive. 
     In detail, the LOD real-time display procedure includes the following global variables: 
     1. FONT --  TABLE Size of font to display for a given font at a given LOD. If font size does not support display at a certain LOD, a zero entry in the table indicates that the font should NOT be displayed. The size values shown in the table are examples. Actual font size values are dependent on the display device resolution and must be determined experimentally based on user preferences and the physical limitations of the font being used. For example, the Font Table could be as follows: 
     
         ______________________________________   LOD  Font Size______________________________________   1     0   2     0   3     6   4     8   5    10   6    11______________________________________ 
    
     Each of the following line tables are similar to the FONT --  TABLE except they show the line size to be used for the line style (LineSolid, LineOnOffDash, LineDoubleDash) at each LOD.  A zero entry would indicate that the line should NOT be displayed.! These tables show the unreduced line length which reaches the corresponding LOD threshold after reduction. The smaller of the values from this table or the Schematic Data File are actually used to determine the line display. The size values shown in the table are examples. Actual line size values are dependent on the display device resolution and must be determined experimentally. Note that tables similar to these can be used to set LODs for other graphical primitive attributes. 
     
         ______________________________________   LOD  Line Size______________________________________LineSolid.sub.-- LINE.sub.-- TABLE   1    60   2    30   3    20   4    14   5    10   6     7LineOnOfffDash.sub.-- LINE.sub.-- TABLE   1    60   2    30   3    20   4    14   5    10   6     7LineDoubleDash.sub.-- LINE.sub.-- TABLE   1    60   2    30   3    20   4    14   5    10   6     7______________________________________ 
    
     2. FLOW --  INDICATOR --  TABLE Each entry in this table shows the line size to be used in drawing flow indicators for each LOD.  A zero entry indicates that the indicator should NOT be drawn.! This table shows the unreduced line length which reaches the corresponding LOD threshold after reduction. The smaller of the values from this table or the Schematic Data File are actually used to the line display. The size values shown in the table are examples. Actual line size values are dependent on the display device resolution and must be determined experimentally. Thus, the Flow Indicator Table could appear as follows: 
     
         ______________________________________   LOD  Line Size______________________________________   1    60   2    30   3    20   4    14   5    10   6     7______________________________________ 
    
     3. LOD --  FOR --  DISPLAYING --  GRAPHICS 
     Level of Detail at which graphics entities will be displayed. 
     The functions in the real-time display procedure are illustrated by the following: ##SPC2## 
     Device Selection 
     As will become apparent, system 11 allows the user to select devices, lines, etc. on the displayed schematic for various reasons. For example, certain devices (a pump, for example) may have specifications, exploded views, or other additional information associated therewith which is not normally available on the base schematic. By selecting a displayed device and signalling a request for the additional information (by double-clicking, right-button clicking, etc.), the user can use system 11 to access such additional information as is available in the database for the selected device. 
     System 11 uses a procedure Determine --  device --  hit to decide whether a user&#39;s cursor selection is within or on a graphically portrayed device or not. The procedure uses a routine Convert --  viewport --  to --  schematic --  coordinates to translate from the display drawing area coordinates to the absolute data file coordinates which are the basis for all the acceptance or rejection calculations. 
     Several procedures are used by the Determine --  device --  hit procedure in specific graphic contexts. Determine --  bounding --  box --  hit identifies all graphic objects whose bounding box encloses the user&#39;s cursor selection. Center --  of --  area --  hit provides functionality to accept a center of mass cursor selection for any graphic object. Geometry --  hit identifies a selected graphic object based on the selection of one of its graphic primitives. Line --  hit selects a line graphic primitive by accepting any user cursor selection within an acceptance region of the line. Point --  distance determines whether a user&#39;s cursor selection is within an acceptance region of a point. This supports the center of mass acceptance in Center --  of --  area --  hit and Geometry --  hit. 
     These routines are illustrated as follows: ##SPC3## 
     Centering of Display 
     During use of schematic display system 11, the user may request a change in the scale of the display, which automatically includes a change in the level of detail of the display. During such changes, it is preferred that the center of view on the schematic not change as the scale is changed. This is accomplished by a pair of procedures Correct --  aoi --  origin --  on --  narrow and Correct --  aoi-origin --  on --  widen, which adjust the origin of the user interface viewport 21 so that the center of the viewport remains fixed while the displayed graphics are resized larger or smaller. Correct --  aoi --  origin --  on --  narrow increases the size of the drawing area and causes the center of the viewport to drift away from the viewport origin (upper left comer) down and to the right. The procedure corrects this by moving the viewport origin down and to the right so the viewport center appears to be motionless. This procedure also contains an additional small correction factor pair to compensate for rounding errors inherent in the specific processor, the operating system tools and the compiler used. Correct --  aoi --  origin --  on --  widen functions in a similar fashion compensating for the shrinking of the drawing area by moving the viewport origin up and to the left so that the viewport center appears to remain motionless. 
     These procedures are illustrated by the following: 
     
         ______________________________________Function Name:  Correct.sub.-- aoi.sub.-- origin.sub.-- on.sub.-- narrowDescription:      This subroutine is responsible for calculating the      new x and y coordinates of the viewing window for      narrowing.Calling Routines:      The User Interface module 23Routines Called:      noneInput Variables:      io.sub.-- x.sub.-- coord.sub.-- ptr                    int pointer      io.sub.-- y.sub.-- coord.sub.-- ptr                    int pointer      stretch.sub.-- schematic                    doubleOutput Variables:      io.sub.-- x.sub.-- coord.sub.-- ptr                    int pointer      io.sub.-- y.sub.-- coord.sub.-- ptr                    int pointerInternal Variables:      resize.sub.-- value - the resize value at which theschematic is currently being drawn,      aoi.sub.-- data - pertinent current aoi information held in      the class,      schematic.sub.-- height - actual schematic height held in      class,      schematic.sub.-- width - actual schematic width held in      the class.External Data Modified: noneExternal Files: noneAssumptions: self-explanatoryComments: noneProcedure:get view port dimensions in pixelscompute the viewport centercompute the resized value of the viewport dimensions (resize the scrollbarvalues)compute the resize.sub.-- offset for the viewport origin to leave theviewportcenter stationary this includes a rounding correction factorapply the resize.sub.-- offset to the viewport originFunction Name:      Correct.sub.-- aoi.sub.-- origin.sub.-- on.sub.-- widenDescription:      This subroutine is responsible for calculating the      new x and y coordinates of the viewing window for      widening.Calling Routines:      The USER INTERFACE module 23Routines Called:      noneInput Variables:      io.sub.-- x.sub.-- coord.sub.-- ptr                    int pointer      io.sub.-- y.sub.-- coord.sub.-- ptr                    int pointer      stretch.sub.-- schematic                    doubleOutput Variables:      io.sub.-- x.sub.-- coord.sub.-- ptr                    int pointer      io.sub.-- y.sub.-- coord.sub.-- ptr                    int pointerInternal Variables:      resize.sub.-- value - the resize value the schematic iscurrently being drawn,      aoi.sub.-- data - pertinent current aoi information held in      the class,      schematic.sub.-- height - actual schematic height held in      class,      schematic.sub.-- width - actual schematic width held in      the class.External Data Modified: noneExternal Files: noneAssumptions: self-explanatoryComments: noneProcedure:get view port dimensions in pixelscompute the viewport centercompute the resized value of the viewport dimensions (resize the scrollbarvalues)compute the resize.sub.-- offset for the viewport origin to leave theviewportcenter stationary this includes a rounding correction factorapply the resize.sub.-- offset to the viewport origin______________________________________ 
    
     Description of Operation of Real Time Schematic Display 
     The operation of system 11 may be more readily understood by reference to FIGS. 5A-5Q. These figures show the information displayed on display 21 in a typical session. In FIG. 5A, the system has caused the display of a portion of a schematic which happens to be the portion of the schematic which was last displayed in the previous session. Note that display 21 displays a viewport 31 in which the schematic itself is display, an up-down slider bar 33, a left-right slider bar 35, and a set of selections &#34;File&#34;, &#34;Bookmark&#34;, &#34;Settings&#34;, and &#34;Help.&#34; The user uses the slider bars in conventional manner to maneuver about the schematic. Similarly, the user may select the desired selection &#34;File&#34;, &#34;Bookmark&#34;, &#34;Settings&#34;, or &#34;Help&#34; in the conventional manner as well (by clicking on the selection, or by entering the appropriate key stroke combination). 
     FIG. 5B illustrates the choices when the user makes the &#34;File&#34; selection, namely &#34;Select AOI&#34; and &#34;Return to IETM&#34; which appear in a drop-down menu when &#34;File&#34; is selected. (Note that alternative key sequences for making the selections in the drop-down menu are also displayed in this screen, and as appropriate throughout all the screens.) The reference to &#34;IETM&#34; in the second choice is for use when the schematic display system 11 of the present invention is used in combination with an Interactive Electronic Technical Manual or similar maintenance tool. Although the present display system is especially suited for use with such maintenance tools, it is not limited thereto, and is intended to be a stand-alone tool. 
     When the user selects the &#34;Select AOI&#34; item in the drop-down menu of FIG. 5B, system 11 causes the display of the screen shown in FIG. 5C. In this screen, the system displays to the user a list 41 of defined areas of interest, along with a slider bar 43, and a data entry field 45. Either slider bar 43 or data entry field 45 may be used to select a defined area of interest, such as the &#34;Electrical #1&#34; AOI which the user has highlighted in FIG. 5D. Once a defined AOI is highlighted, system 11 displays the dialog popup 47 also shown in FIG. 5D which invites the user to confirm the selection of the &#34;Delecsht4&#34; area of interest. By clicking the &#34;OK&#34; button on the popup, the user is taken to the &#34;Electrical #1&#34; area of interest (that is system 11 causes the display of that AOI), indicated in the present case by the schematic shown in FIG. 5E. 
     Also shown in FIG. 5E is the drop-down menu which appears when the &#34;Bookmark&#34; selection is selected by the user. By making the first selection on this menu, &#34;Create Bookmark&#34;, the user causes the system to display box 51 (FIG. 5F), which includes both a list of existing bookmarks, and a text field (labeled &#34;Selection&#34;) for entering a bookmark name. If the user enters the name &#34;Wheel Assy&#34; in the text field, the system causes the display of the popup 55 (FIG. 5G), asking for confirmation. If &#34;OK&#34; is selected, the system associates the bookmark name &#34;Wheel Assy&#34; with the schematic portion being displayed at that time (in this case the five relays shown in FIGS. 5E-5G). 
     In FIG. 5H, the user has moved slider bars 33 and 35 up and to the right, respectively, to access a different part of the schematic. (Note the appearance of three display buttons &#34;Widen&#34;, &#34;OK&#34; and &#34;Narrow&#34; below the viewport 31, which the user can use to change the scale of the display). To return to the previous place in the schematic, the user simply uses the &#34;Bookmark&#34; selection to bring up the &#34;Go To Bookmark&#34; dialog box shown in FIG. 5H and types in the desired bookmark name, in this case &#34;Left Assembly.&#34; The system displays a confirmation popup 61, asking whether the user wants to go to the selected part of the schematic. In response to the user selection of &#34;OK&#34;, system 11 returns the user to the portion of the schematic associated with that bookmark (see FIG. 5J). Note that in FIG. 5J the slider bars have automatically returned to their original position corresponding to the selected bookmark. 
     FIG. 5J also illustrates the use of the &#34;Bookmark&#34; selection to cause the display of a &#34;delete bookmark&#34; dialog box 63, by means of which the user can select and delete bookmarks as desired. In FIG. 5K, a popup 65 is shown which asks the user to confirm the deletion of a selected bookmark. 
     Setting the level of detail is illustrated in the figures starting with FIG. 5L. In FIG. 5L, the user may select the &#34;Settings&#34; key to cause the drop-down menu &#34;Level of Detail&#34; and &#34;Widen/Narrow AOI&#34; to be displayed. (Selecting Widen/Narrow AOI causes the &#34;Widen&#34; and &#34;Narrow&#34; keys discussed previously to be displayed). Note that the &#34;Level of Detail&#34; selection has a sub-menu (FIG. 5M) with the selections &#34;Automatic&#34; and &#34;Manual.&#34; 
     In response to the selection &#34;Manual&#34;, the system causes the display of a slider bar 71 on a scale which indicates the present level of detail (&#34;1&#34; through &#34;6&#34;) adjacent the slider bar. By moving the slider bar 71, the user can change the level of detail at which the present portion of the schematic is displayed. This is illustrated in FIGS. 6A and 6B (which are simplified versions of the screens of FIG. 5). In FIG. 6A, the user has selected the maximum level of detail (level 6), while in FIG. 6B, the user has selected a reduced level of detail (level 1). (It should be noted that in the &#34;Automatic&#34; mode, the slider bar is not displayed, and the level of detail displayed is controlled automatically). 
     FIG. 50 differs from FIG. 5N in that in the former the &#34;Widen&#34; and &#34;Narrow&#34; buttons are also being displayed. The operation of system 11 in response to selection of these buttons is illustrated in FIGS. 7A and 7B (which again are simplified versions of the screens of FIG. 5). In response to selection of the &#34;Narrow&#34; button, system 11 causes the area of interest to narrow, with a corresponding increase in the level of detail (FIG. 7A). Similarly, in response to selection of the &#34;Widen&#34; button, system 11 causes the area of interest to widen, with a corresponding decrease in the level of detail (FIG. 7B). 
     Turning to FIG. 5P, there is illustrated the various &#34;Help&#34; selections of system 11, which do not form a part of the present invention. These selectable help topics include context sensitive help messages, an index of help topics, and the like. Further information about a particular object on a schematic can also be obtained from system 11 by selecting that object. 
     FIG. 5Q illustrates the display of a custom schematic by system 11. The slider bars adjacent each part of the custom schematic indicate the portion of the base schematic from which each part of the custom schematic is taken. Note the selectable buttons below each portion of the custom schematic which allows the user to &#34;Zoom to Full Screen&#34; either part of the custom schematic. 
     In view of the above, it will be seen that all the objects and features of the present invention are achieved, and other advantageous results obtained. The description of the invention contained herein is illustrative only, and is not intended in a limiting sense.