Abstract:
A method for generating a parametric design on a computer without the use of a programming language. A drawing processor is used to create a master drawing from which other drawings of different dimensions can then be synthesized by modification of the master drawing. Instead of each dimension in the master drawing being given a fixed value, it is given a label. These labels are replaced at run time by dimensions the user provides or dimensions which are calculated as described in a design plan. When the program is run, the system uses simple language to prompt the user for each design value. It incorporates the response with data previously entered into the design plan. If a response is unclear, a request is made for clarification. As a draftman would do, the invention merges the design values with data from both the design plan and the master drawing to create a finished drawing. In executing a parametric design, the user selects the controlling design plan to be used as a basis of the design. Acting on information contained therein, other design plans may be loaded and executed automatically. As a result, images of associated master drawings are modified and/or combined to represent the design. The final design is represented by electronically stored data which can be utilized to create a visual display such as a drawing and/or directly to manufacture a part, structure, etc. As an option, the user&#39;s direct role in the process can be supplanted by a computer program.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application is a division of application No. 925,278 filed 30 Oct. 1986 by Jay R. Saxton et al. for METHODS AND SYSTEMS FOR GENERATING PARAMETRIC DESIGNS, now U.S. Pat. No. 4,882,692. 
    
    
     TECHNICAL FIELD OF THE INVENTION 
     The present invention relates to the computer aided design of manufactured parts by a process which we refer to as modular parametric design. 
     &#34;Modular parametric design&#34; refers to a system or process which enables a computer to create, to interpret and to relate modules which are capable of both designing and directing the production of a manufactured part by creating an electronically stored image of the part which may be to scale and dimensioned. 
     BACKGROUND OF THE INVENTION 
     Computer-aided design (CAD) is a fairly recent advancement in the drafting and design process. While CAD shortened the production time for drafting, it still necessitated complex and laborious procedures to perform parametric design. The techniques were awkward to learn, difficult to use and lacking in power. The only comprehensive approach made use of programming language to write a special purpose program which could both design and draw. Establishing such a design was time consuming and awkward. Other approaches lacked power and could not truly perform parametric design. As a result, an informed operator was required to guide their process during a design&#39;s execution. Executing such a design was awkward and prone to error. 
     Furthermore, CAD did not have the capability of combining data representing different parts or modules of an overall design. This is a significant drawback as all assemblies, and even many parts, can most expeditiously be designed by treating them as integrated aggregations of modular features, parts, and/or sub-assemblies. 
     Representative of the heretofore proposed CAD systems is the one disclosed in U.S. Pat. No. 4,549,275 issued Oct. 22, 1985, to Sukonic for GRAPHICS DATA HANDLING SYSTEMS FOR CAD WORKSTATION. 
     A competing system which utilizes computer aid in design creation is disclosed in U.S. Pat. No. 4,451,895 issued Jun. 9, 1983, to Sleikowski for INTER-ACTIVE COMPUTER AIDED DESIGN. This system is of even less interest than CAD systems such as those disclosed in the above-identified Sukonic patent, in part because it is not capable of generating parametric designs. 
     Another computer-aided design technique that has heretofore been employed involves the parametric enhancement of drawing editing, a technique which makes use of drawing processors. Certain drawing processors such as the AUTOCAD.sup.®  and the Hewlett-Packard, Euchlid, and Medusa processors, have extremely powerful editing capabilities which include elements of parametric design. However, these all share the limitation that the user is dealing with one detail, or at most, one drawing, at a time. 
     There are two approaches to the above mentioned-parametric enhancement of drawing editing. 
     The first is the built-in language approach. To create a unique image, the user must write program code which describes the geometry of the drawing in terms of its coordinates such as the two end points of a line. The built-in language approach has the additional disadvantages that the user can create only one drawing as a result of running a design. 
     This is undesirable because most designs are depicted in a series of related drawings. For example describing a particular part might entail depicting it in several views: It might be depicted individually (in order to provide details describing the part itself); then again in an assembly drawing (in order to show its physical relationship to surrounding parts); and finally, in a concept drawing (in order to show its function). 
     The second approach makes use of drawing rectification. Rectification is an editing capability. To rectify a drawing is to make it correct according to its dimension; i.e. the drawing is modified and brought into conformity with its dimensions. Using this enhancement to drawing editing as a basis for parametric design, the user employs equations in the dimensions of the drawing in place of fixed values. The equations, which may involve trigonometric formulas, relate the geometry of different parts of the drawing to one another. 
     The user can automatically edit the drawing by entering the drawing processor and providing values corresponding to the independent variables in these equations. The user can even use a computer program from outside the drawing processor to calculate these values. 
     The drawing rectification approach contains the following problems: 
     1. The design process is not controlled by the computer. This means the user must be educated as to his or her role in producing a-particular design. Since the user has to control the process, the chance of a procedural error being introduced is greatly increased. 
     2. The user, rather than the program, must decide which drawing to rectify in order to depict the design. Choosing the appropriate parameterized picture, the single most important decision in the process, is left up to the user. An informed user is required as he or she must be aware of the current inventory of parameterized drawings. The process of choosing the appropriate design is awkward and relatively slow. 
     3. This approach limits the depiction of the design to a single drawing. Most designs cannot be depicted with a single drawing. 
     4. Since the user is editing an image on the drawing processor, there is a great probability that he will inadvertently change an aspect of the original drawing, introducing an error into the image being edited. 
     SUMMARY OF THE INVENTION 
     We have now invented, and disclosed herein, a novel process for generating parametric designs which does not have those limitations of computer-aided design techniques discussed above. 
     In our novel design process, one or more design modules are created and stored. Each module is composed of two types of information: a design plan and one or more master drawings. Once the modules have been set up and the design process invoked, the modules control the design process, synthesizing the final design by modification (or rectification) of a computer selected master drawing or by merging all or selected portions of two or more master drawings The operator&#39;s role is limited to responding to prompts, which are decided upon by the modules. The operator does not have to deal with an on-screen image in creating a part, only with prompts requesting dimensions. These prompts are written in simple English. 
     The design plan is edited in much the same manner as a spreadsheet. However, it is important to differentiate between the two because no spreadsheet program is adequate for establishing a design algorithm in our process (those which come close enough to be mentioned as prior art are SYMPHONY.sup.®  and FRAMEWORK.sup.®. Some of the drawbacks of spreadsheets which make them unsuitable for our purposes are: 
     1. A spreadsheet such as SYMPHONY.sup.®  lacks decision-making capabilities fundamental to designing. For example, SYMPHONY.sup.® does not provide a function that chooses which of several designs to execute, depending upon the outcome of a single test. To work around the limitation would be impractical in many cases. 
     2. Even where it is capable of calculating design values, the spreadsheet proves prohibitively awkward for doing so. Extensive use of macros would be required. For example something as fundamental to the design process as prompting the user for information requires a difficult to-program macro. 
     3. The parametric design process requires at certain relationships be pre-established between its elements. Whereas spreadsheet &#34;templates&#34; allow for this, there are severe limitations viz., (a) relationships are not dynamically reconfigurable (the user cannot reconfigure units conversion from feet-inches-sixteenths to decimal units while engaged in editing); (b) relationships are awkward to use, sometimes requiring a group of cells as is the case with unit conversion; (c) default relationships cannot be easily overridden. This is a severe drawback for parametric design where certain numeric values must be automatically converted into their textual equivalent and where the user may wish to switch back and forth between different units of measurement (for example feet-inches-sixteenths, decimal feet, etc.). As a result, in many cases the user would be better off to provide individual formulas, establishing relationships one-at-a-time as required rather than configuring default relationships. 
     4. The spreadsheet format would be extremely confusing to use in establishing a parametric design. A large number of cells would be required for bookkeeping: i.e., for either holding macro code or for holding temporary variables. Thus, most of the large number of cells that would necessarily have to be employed would be superfluous to the actual design process. 
     5. When a parametric design program is run, even an experienced operator requires full screens of procedural information to instruct him as well as prompts of adequate length. With a spreadsheet, he sees a matrix of cell values (irrelevant during execution) and a single-line prompt placed somewhere on the screen. For an operator who is endeavoring to run an off-the-shelf parametric design on a factory floor, for example, the spreadsheet is therefore inappropriate, as well as prohibitively confusing. 
     6. Because the operator is s 111 inside the editor during the execution of a spreadsheet, he can change formulas, either accidentally or to &#34;improve&#34; the design. Such inadvertent design alterations and tampering are unacceptable for industries that require parametric designs because the probable cost of one bad design is measured in thousands of dollars. 
     7. The spreadsheet lacks the capability of establishing design modules which can either stand alone or interact with one another as is the case in the novel parametric design systems disclosed herein. (In the latter case all are resident in memory at the same time, passing information and control between themselves.) This means that any design encoded in a spreadsheet has all of the herein discussed disadvantages inherent in a non-modular design. 
     In contrast, the parametric design modules employed in our novel process disclosed herein are characterized by the following capabilities: 
     1. A module can perform engineering calculations and gather information according to its encoded algorithm; 
     2. A module can create an electronically stored image (or set of images) which depict what it designs, or add information to a composite image which is contributed to by many modules; a non-modular parametric design has thesis capabilities; 
     3. The parametric design, rather than the user, controls the design process. The user is relegated to the role which is determined by the design. His involvement, if any, once the design is initiated is limited to responses to prompts for design information. This role is clearly defined for him by screens of information. The user does not have to deal with an image in the process; 
     4. A module can operate alone or in conjunction with other modules. It can be a stand-alone designer; it can be supervised by other modules; or it can itself supervise other modules, subordinate to itself. 
     A module is blind as to whether it is being supervised. With absolutely no modification to the module, it can be made to serve other modules. When standing alone, a module might prompt the user for design information or calculate information. When subordinate to another module, it might accept exactly the same information directly from the supervising module. It can also be required to pass back any of the values it calculates to its supervisor module. Whether a module produces an image of what it designs or is simply used to perform analysis is decided by its supervisor module. 
     The novel approach to computer-aided design disclosed herein can also be used to generate non-modular parametric designs. The term &#34;non-modular parametric design&#34; refers to a technique which has these capabilities: 
     1. It can perform engineering calculations and gather information according to its encoded algorithm; 
     2. It can create an electronically stored image or set of images which depict what it designs, or it can automatically add information to a composite image which is contributed to by other designs; 
     3. The parametric design, rather than the user, controls the design process. The user is relegated to the role which is determined by the design. His involvement, if any, once the design is initiated is limited to responses to prompts for design information. This role is clearly defined for him by screens of information. The user does not have to deal with an image in the process. 
     Our novel technique can also be employed to generate non-modular parametric designs. Although the present invention does not provide the only technique for establishing a non-modular parametric design, its process for doing so is unique. No other process is based on the use of a master drawing and a design plan as disclosed herein. 
     This is important because our approach provides a way of establishing and executing a non-modular parametric design which is superior to all other approaches. With our system a stand-alone module can be set up in about the time otherwise required to instruct a draftsman. Thereafter, drawings that might otherwise require a draftsman hours, or days, can be completed in minutes. Furthermore, our straightforward approach for both editing and executing a design is less likely to result in the introduction of an error. This makes our approach vastly superior both in terms of speed and in terms of establishing and executing a design. In addition, it doesn&#39;t require the user to learn a programming language. 
     Independent modules provided by our system afford the additional advantage that they can later be integrated into a multicomponent design with absolutely no modification, and no allowance made at the time they were originally established for their eventual mode of use. 
     Currently, there is no process, other than that of the current invention, for creating a modular parametric design. The only non-modular alternative is to write a computer program in a language such as COGO.sup.®  or FORTRAN. If for no other reason than its non modularity, this approach makes the creation of large-scale parametric designs much less economically feasible. 
     Specifically, a COGO.sup.®  or FORTRAN design program must be written in unitary as opposed to modular form because of the limitations inherent in writing a computer program. Explicit provisions must be made for passing information to other programs, for inputting information from other programs, and for deciding which steps of the program execute. 
     For example, a FORTRAN program that designs an entire building must be written to take into consideration the relationship each portion of the building has to the building as a whole. Code which designs a single portion of the structure would require extensive modification before it could stand alone as a design unit. As stand-alone code it would have to obtain all governing parameters from the user. However, as part of a program that designed the whole structure, the portion of code that designed exactly the same part would be required to interact with other code that designed the surrounding parts of the structure. This would be required so as to make the physical dimensions and other parameters match Not only would it have to pass and receive information, but it would have to do so in a manner that coordinated the foregoing analysis. 
     This greatly decreases the short-term benefit as code is written. A long-term, complex programming effort would have to be planned. Since, in general, the relationship between a program&#39;s complexity and the time required to produce that program is more geometric than it is linear, this has severe economic implications. 
     The novel design modules disclosed herein have the formatted appearance of a customized design program when it is executed (in contrast to the module&#39;s spreadsheet-like appearance when edited), printing full screens of information and prompts to the user; and these modules have the power to perform modular parametric designs. 
     In addition to the earlier-mentioned benefits, the modular parametric design approach disclosed and claimed herein provides a unique method for establishing a design algorithm. The method is considerably easier to learn and much faster to use than any of the above-mentioned prior art approaches to parametric design. A non-programmer using it can create a design in a fraction of the time otherwise required by an experienced team of programmers. 
     To summarize, our novel approach to the creation of parametric designs makes use of information of two types: 1) that contained in master drawings as a vehicle for producing images representing the design; and 2) that contained in a design plan as a vehicle for: a.) establishing the design; b.) modifying and/or combining master drawing images to represent the design and; c.) controlling and exchanging information with other design modules. 
     OBJECTS OF THE INVENTION 
     From the foregoing, it will be apparent to the reader that one important and primary object of the present invention resides in the provision of novel, improved processes of utilizing computers as an aid in the generation of parametric designs, particularly in circumstances where repetitive drawing tasks are involved. 
     Other related and also important but more specific objects of our invention reside in the provision of processes as identified in the preceding object: 
     which allow parametric designs to be generated much more rapidly and economically and with fewer resources than they can be by employing currently available CAD techniques; 
     which are user friendly in that they do not involve the use of a computer programming language or the modification of an on-screen (or displayed) image; 
     which are less subject to error than heretofore available computer related design technologies in that the design process is controlled and executed by the computer, minimizing the possibility of procedural errors being made by the user; 
     which, in conjunction with the preceding object, are also user friendly in that the user need not possess either programming or technical designing knowledge; 
     which has the capability, once a master design plan having a design algorithm encoded therein has been selected, of automatically loading and executing other design plans to thereby produce information relevant to the generation of the wanted design; 
     which are capable of generating accurate, customized drawings, which may be to scale and dimensioned, in a matter of minutes; 
     which are capable of integrating user supplied data and data from one or more electronically stored design modules in creating a parametric design; 
     which, in conjunction with the preceding object, have the capability of performing any mathematical calculations that may be necessary to convert the user supplied data to data which is compatible with that available from the electronically stored design modules; 
     in which the data generated for the parametric design is in a format in which it can be used either to produce a drawing or to directly produce a manufactured part; 
     which are less prone to the introduction of procedural errors than heretofore available computer related design techniques in that the design process is computer, rather than user, controlled; 
     which are superior in that the user is not required to select the drawing that is to be modified to produce the final design; 
     which can be used to create drawings that are either stylized (not to scale) or drawn to scale; 
     Still another important and primary object of the present invention is the provision of novel systems in which parametric designs can be generated by techniques as characterized in the preceding objects. 
     Other related and still important, but more specific objects of the invention reside in the provision of systems as aforesaid: 
     which are capable of creating, interpreting, and relating design modules; 
     which are capable of both designing and directing the production of a manufactured part or stored image; 
     which are capable of: automatically choosing the appropriate image and modifying it to represent the design, choosing a scale factor and applying it to the drawing so it fits on a page, and of combining several images into a single drawing. 
     And yet another important and primary object of the present invention is the provision of novel design plans and design control modules for such systems. 
     Related and important but again more specific objects of our invention reside in the provision of such design plans: 
     which can be edited for a design algorithm to be called up during the parametric design process; 
     which can be set up in a manner akin to that used to provide instructions to a draftsman; 
     which provide on-screen information and prompts at run time. 
     Other important objects, features, and advantages of our invention will be apparent to the reader from the foregoing and the appended claims and as the ensuing detailed description and discussion proceeds in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     In the drawing: 
     FIG. 1 is a chart representing drawing entities and their reference points; 
     FIGS. 2 and 3 display entity rectification as controlled by fixed and proportioned entities; 
     FIGS. 4 and 5 are views similar to FIGS. 2 and 3 but illustrating the importance of reference point location in rectifying drawings; 
     FIG. 6 depicts the process of creating a window drawing; 
     FIG. 7 displays the components of a window module; a design plan and a master drawing and the two screens visible to the user--prompts and final drawing; 
     FIG. 8 describes data flow in the situation where a module is used as a stand-alone designer; 
     FIG. 9 shows the appearance of a WINDOW design plan as presented by the design editor, the drawing being annotated to show the various regions of the design plan. 
     FIG. 10 depicts the three components of the WINDOW design module; the WINDOW design plan, the WINDOW master drawing, and the execution capabilities of a modular design executor employed in our novel design process and entitled SYNTHESIS.sup.™, and also shows the data flow in situations where the WINDOW design module is used as a stand-alone designer; 
     FIG. 11 is a detail of a final WINDOW drawing; 
     FIG. 12 is another detail of a final WINDOW drawing; 
     FIG. 13 show the screens evident to the user in executing a HOUSE design and the final HOUSE drawing; 
     FIG. 14 represents the data flow among the elements of a modular design executor, those elements being the multi-design file produced by the user&#39;s HOUSE design program; the design plans (WINDOW, DOOR, WALL, and ROOF); the master drawings (WINDOW, DOOR, WALL, and ROOF); the electronically stored image of the HOUSE, and the modular design executor; 
     FIG. 15 is a DOOR master drawing with variable dimensions; 
     FIG. 16 is a WALL master drawing with variable dimensions; 
     FIG. 17 is a ROOF master drawing with variable dimensions; 
     PIG. 18 depicts the on-screen appearance of a DOOR design plan; 
     FIG. 19 depicts the on-screen appearance of a WALL design plan; 
     FIG. 20 depicts the on-screen appearance of a ROOF design plan; 
     FIG. 21 shows the questions generated by the DOOR design plan when it is used as a stand-alone designer; 
     FIG. 22 shows the questions generated by the WALL design plan when it is used as a stand-alone designer; 
     FIG. 23 shows the questions generated by the ROOF design plan when it is used as a stand-alone designer; 
     FIG. 24 is a final drawing created by a user&#39;s HOUSE design program in conjunction with the design modules WINDOW, DOOR, WALL, and ROOF; 
     FIG. 25 depicts the two screens evident to the user when he is running the HOUSE design module in conjunction with its associated design modules, ROW, WINDOW, DOOR, WALL, and ROOF; 
     FIG. 26 is a detail drawing of the front WINDOW of the HOUSE illustrated in FIG. 24; 
     FIG. 27 is a detail drawing on the side WINDOW of the HOUSE illustrated in FIG. 24; 
     FIG. 28 depicts the on-screen appearance of the HOUSE design plan; 
     FIG. 29 depicts the on-screen appearance of a ROWS design plan which is generic in its capability to supervise other design modules, a capability which can be employed to advantage in generating rows of drawing elements such as windows, columns, kitchen cabinets, etc.; 
     FIG. 30 illustrates the first step taken by a computer in executing the HOUSE design module in which the user is asked for the overall HOUSE proportions. Also shown are the modules with which the HOUSE module will interact; 
     FIG. 31 depicts a step in executing the HOUSE design module in which that module exports dimensions to the WALL design module and the ROOF design module; 
     FIG. 32 depicts a step in executing the HOUSE design module in which that module exports the name of the output drawing file that will hold the composite image of the HOUSE to the WINDOW, DOOR, WALL, ROOF, and ROW design modules; 
     FIG. 33 depicts a step in the design process in which the HOUSE design module compels the WALL design module to output walls to the composite image; 
     FIG. 34 depicts a step in the design process in which the HOUSE design module compels the ROOF design module to output a ROOF to the composite image; 
     FIG. 35 depicts a step in the design process in which the HOUSE design module exports a door&#39;s coordinates to the DOOR design module; 
     FIG. 36 depicts a step in the design process in which the HOUSE design module executes the DOOR design module which then interacts with the user for needed parametric and other information; 
     FIG. 37 depicts a step in which the HOUSE design module compels the DOOR design module to output a door to the composite image; 
     FIG. 38 depicts that part of the design process in which the HOUSE design module interacts with the user to determine the width of the front windows and the name of the detail drawing containing their representation and exports this information to the WINDOW design module; 
     FIG. 39 depicts the step in the design process in which the HOUSE design module compels the WINDOW design module to execute its encoded algorithm; in so doing, the WINDOW design module interacts with the user in order to obtain needed information not previously exported to it by the HOUSE design module; 
     FIG. 40 depicts a step in the design process in which the HOUSE design module compels the WINDOW design module to output a drawing of the front window; 
     FIG. 41 depicts a step of the process in which the HOUSE design module exports to the ROWS design module the information needed to generate a row of windows such as beginning location, number of elements, and element width; 
     FIG. 42 depicts a step of the process in which the HOUSE design module compels the ROWS design module to repeatedly interact with the WINDOW design module, and, in so doing so, to export to it the window&#39;s coordinates and to then compel the WINDOW design module to output an image to the composite drawing; 
     FIG. 43 depicts a step in the parametric design process in which the HOUSE design module clears the WINDOW design module, i.e. enables all of its formulas to recalculate, including the ones in cells which contain exported values; 
     FIG. 44 depicts that part of the design process in which the HOUSE design module interacts with the user to determine the width of the side window and the name of the detail drawing containing the side window representation and exports this information to the WINDOW design module; 
     FIG. 45 depicts a step in the design process in which the HOUSE design module compels the WINDOW design module to execute its encoded algorithm; in so doing, the WINDOW design module interacts with the user in order to obtain needed information not previously exported to it by the HOUSE design module; 
     FIG. 46 depicts a step in the design process in which the HOUSE design module compels the WINDOW design module to output a drawing of the side window; 
     FIG. 47 depicts a step of the process in which the HOUSE design module exports to the ROWS design module the information needed to generate a row of windows such as beginning location, number of elements, and element width; 
     FIG. 48 depicts a step of the process in which the HOUSE design module compels the ROWS design module to repeatedly interact with the WINDOW design module, and in so doing to export to it the window&#39;s coordinates and to then compel the WINDOW design module to output an image to the composite drawing; 
     FIG. 49 is a design of a temple and is included as an illustration of the endless designs that can be generated by using a single HOUSE design module to control the parametric design process; 
     FIG. 50 is a block diagram showing the configuration of capabilities provided in setting up and executing a parametric design; 
     FIG. 51 is a block diagram showing the operations involved in executing a parametric design and synthesizing the created by executing that design; 
     FIG. 52 is a block diagram showing the operations involved in executing a parametric design in greater detail than those operations are shown in FIG. 51; it shows the execution of a design plan; 
     FIG. 53 is a schematic composite of FIGS. 53A and 53 together constitute a block diagram which shows the configuration of capabilities possessed by our novel process and employed in processing a design plan; 
     FIG. 53C shows, in block form, the relationship between FIGS. 53A and 53B; 
     FIG. 54 is a block diagram showing the operations involved in synthesizing an image involving design specifications and a master drawing; 
     FIG. 55 is a block diagram showing the process of editing a design plan; 
     FIG. 56 is a block diagram detailing the process of editing a cell in a design plan; 
     FIG. 57 is a block diagram detailing the editing of a number cell and is an expansion of the diagram in FIG. 56; 
     FIG. 58 is a block diagram detailing the editing of a text cell and is an expansion of the diagram in FIG. 56; 
     FIG. 59 is a block diagram detailing the editing of a name cell and is an expansion of the editing process illustrated in FIG. 56; 
     FIG. 60 is a block diagram detailing the editing of the cell which specifies either the master drawing&#39;s name, its coordinates of insertion, the scale factor to which its image is to be adjusted, or the angle to which it is to be rotated upon insertion. (This is an expansion of the editing process illustrated in FIG. 56); and 
     FIG. 61 is a block diagram of a system for carrying out our novel method of generating parametric designs. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The hardware and software employed to practice the present invention may include any one of several types of commercially available main-frame computers, minicomputers or microcomputers with various operating systems. 
     In one implementation (see FIG. 61), we use a PC-AT 30 with the usual keyboard 32 and PC-DOS, an AUTOCAD.sup.®  drawing processor shown in a block 34 and stored as usual on a hard disc 36, a digitizing table 38, a graphics plotter 40, a video monitor 42, a conversion program for translating drawing images into numerical control code such as AUTOCAD&#39;s NC Programmer.sup.™  (see block 34) and also stored on hard disc 36, a numerical milling machine 44 capalbe of accepting NC code, and 640K of RAM with two megabytes of extended memory (the memory components are collectively identified by reference character 46). Other suitable types of input-output devices can instead be used. 
     The generation of parametric designs by the novel parametric design process described hereinbelow also involves the use of a proprietary computer program titled SYNTHESIS.sup.™. The image synthesizer is described below with reference to FIG. 54. 
     SETTING UP A PARAMETRIC DESIGN 
     FIG. 50 comprises a pictorial overview of the menu selections of the invention, showing the options for both setting up and executing a parametric design. The menu display 52 provides the user 12 with a set of choices with which to set up a parametric design 54, 56 or 58; execute a parametric design 60; or execute a multi-design 62. 
     In setting up a parametric design, the drawing processor 54 is used to create a master drawing from which other drawings can be created under the control of a design plan module. The master drawing is a template drawing in which those dimensions that vary according to the design are given a label instead of a fixed value. Text that varies according to the design is also given a label. The preferred method is to use the AUTOCAD.sup.®  program as a drawing processor, in conjunction with a plotter, codigitizing tablet, and NC Programmer.sup.™  to generate numerical code capable of driving a numerically controlled milling machine and a tablet menu overlay; however, other drawing processors and equipment configurations can be used instead. 
     The drawing processor 54 allows the user to view the drawing on a video monitor, to edit the drawing, to plot a drawing onto paper, and to store the drawing electronically. Configuring the design editor 56 allows the user to establish a default formula for automatic conversion between the text and measurement cells that describes each design variable (a default formula is one which automatically effects a specified conversions or other calculation unless it is overridden). This formula is automatically placed in a variable&#39;s empty text cell upon editing its corresponding measurement cell (and vice-versa), as will be explained later. 
     The parametric design plan is a description of the formulas and procedures to be used in carrying out a parametric design. It is edited with the parametric design editor 58. When edited, a design plan is displayed as an array of cells. The parametric design executor 60 (more fully explained below with reference to FIG. 51) executes the algorithm embodied in the design plan. In so doing it might present the user with a series of explanations and prompts. Based on his responses a design is completed. 
     EXAMPLES OF THREE MODES OF PARAMETRIC DESIGN 
     There are several modes of user interaction which can be employed when executing design plans. Now will be described three possible specific examples of the modular parametric design process, which will illustrate: 
     1. Rectification, which underlies our approach to parametric design; 
     2. Executing a single parametric design module: a WINDOW; 
     3. The use of a computer program in directing a group of modules to execute a HOUSE design; and 
     4. A hierarchy of modules interacting to execute a HOUSE design. 
     The examples chosen are not intended as illustrations in the limiting sense, but as examples of the capabilities of the invention. 
     Rectification is not unique to SYNTHESIS.sup.™. However, SYNTHESIS.sup.™  provides additional rectification capabilities not possessed by other products. Only these capabilities are discussed in detail herein. They include: 
     1. SYNTHESIS.sup.™  distinguishes between two types of entities, &#34;fixed&#34; and &#34;proportioned,&#34; and rectifies them differently; and 
     2. SYNTHESIS.sup.™  provides a unique means of eliminating unwanted parts of a drawing. 
     Other essential SYNTHESIS.sup.™  capabilities include rectifying according to non-linear dimensions such as radial or angular dimensions. 
     To understand what is meant by &#34;fixed&#34; and &#34;proportioned&#34; entities, it is essential to define the terms, &#34;entity&#34; and entity &#34;control points&#34;. Drawing entities are the primitive elements from which a drawings are built: lines, arcs, etc. They are summarized in FIG. 1. Each type of entity has reference points. For example, the endpoints of a line are its two reference points, as is the center point of a circle. To relocate an entity, its reference points are first relocated; and then the entity is relocated; accordingly. The positions of the reference points are also indicated in FIG. 1. 
     When rectifying a drawing, there are two ways in which entities can move: either proportionally or fixed with respect to the controlling dimension. Proportioned entities move such that the distance between their reference points expands or decreases in proportion to the change in the controlling dimensions. In contrast, with fixed entities the reference points remain a constant distance from the nearest extension line. 
     It is important to understand the working difference between these two types of entities. The &#34;BEAM&#34; example (FIGS. 2 and 3) illustrates the difference between proportioned and fixed entities and shows how SYNTHESIS.sup.™  supports both in a drawing. The example shows two beams, each with a row of holes in it. In the upper beam, the holes are proportioned entities; and in the lower they are fixed entities. As the lengths of the beams change, the proportioned holes maintain their proportional relationship to each other as well as to the other extension lines, while the fixed holes maintain the same distance from adjacent dimension extension lines. 
     As the user draws, each time he places an entity in the drawing, he has the choice of making it fixed or proportioned. As a result, the actual parts of the drawing do not have to be exactly dimensioned, as can be seen with the beam. Yet, the user still controls the outcome upon rectification, through use of fixed and proportioned entities. 
     SYNTHESIS.sup.™  has a second unique rectification capability, which enables it to automatically eliminate unwanted parts of a drawing. By editing the dimension text to a value of zero, the user can eliminate the affected portion of the drawing. This can be seen in FIGS. 4 and 5. In the pre-rectified picture, FIG. 4, one of the dimension has been edited to &#34;0.0&#34;. In the view subsequent(to rectification, FIG. 5, the affected part has vanished. 
     The user controls elimination of drawing parts according to the entity elimination rules, which are also unique to SYNTHESIS.sup.™  These are: 
     (1) Each reference point is controlled horizontally by the closest extension line of a horizontal dimension or the extension line of the selection set in which it belongs. It is similarly affected vertically by the extension line of the corresponding vertical dimension. 
     (2) A dimension&#39;s extension line can be thought of as extending past its apparent end. Its actual extent is user-definable. This can be seen in FIGS. 4 and 5. All parts of the triangle are affected by the second (from-the-left) extension line. 
     (3) A string of related horizontal dimensions has a user-definable &#34;beginning point.&#34; Similarly, there is a user-definable beginning point for strings of vertical dimensions. In FIG. 2 the X-shaped symbol is used to mark the dimension string&#39;s beginning. 
     (4) Those entities with one reference point can be eliminated by assigning their controlling dimension (either horizontal or vertical) a value of zero when the entity is on the end of the dimension farthest from the &#34;beginning point&#34; (along the dimension string). 
     (5) Those entities with more than one control point are eliminated if their controlling dimension has a value of zero for either of the following reasons: all of an entity&#39;s reference points are on the end of the dimension farthest from the &#34;beginning point&#34; (as is the case with the entities forming the triangle in FIG. 4); or an entity&#39;s reference points are controlled by the extension lines on the opposite ends of the same dimension (as is the case with each of the three intersecting lines in FIG. 4). 
     FIG. 7 is a depiction of the &#34;WINDOW&#34; master drawing, showing the appearance of labels--$1, $2, etc.--that correspond to the labels in the design plan 8. This particular example is of a master drawing made with an AUTOCAD.sup.®  drawing processor, although another drawing processor system would work equally well. 
     Next we will explain how the user creates the design plan. Beginning from the main menu, 2, as seen in FIG. 6, the user chooses option 3, &#34;Edit a Design plan.&#34; An empty design plan appears on the screen. Its format will now be described. 
     FIG. 9 depicts the on-screen appearance of the WINDOW design plan while it is being edited. It has this appearance only during the design editing process, which is described in detail in FIGS. 55-60. This description is not being used in a limiting sense, but as a means of explanation. 
     The design plan has 3 regions as seen in FIG. 9. The large upper area, the label region, contains the prompts and formulas used to calculate values for the labels in the master drawing. The master drawing region is the area shown near the bottom which contains the name of the master drawing which will be inserted into the eventual drawing. The formula bar is the bottom row of the design plan. The design plan appears as a matrix of cells. Each cell displays its &#34;current&#34; value. Each cell also contains a formula. The formula of the current cell can be seen in the formula bar at the bottom of the screen. 
     Certain other features of the design editor are not shown. They include pull-down menus which provide the user with editing commands. For example, the user has the capability to switch to related design plans currently in memory. The user can move from cell to cell, editing a cell&#39;s formula. In so doing dependent cells are instantly updated and their new values displayed. 
     The first type of cell group is referred to here as the drawing variable region. The primary function of the cells in this region is to generate replacement text and measurement values for labels in the master drawing. In this group each row contains four cells; label, variable, measurement and text. 
     The relationship between the values generated in the cells of the variables region and the master drawing is next described. The label is used to associate the measurement and text computed according to the design plan with similarly labeled text in the master drawing. When the label is in place of dimension text in the master drawing, the related measurement in the design plan provides the distance with which to rectify that dimension. Rectified along with the dimension are its associated parts in the master drawing. Text generated as a result of the design plan replaces its associated label in the master drawing. 
     The relationship between the cells are now described. The variable name (e.g. height, width) to use in calculations within the design plan refers to the values in either of the related text or measurement cell. Which it refers to depends on the context in which it is used. The measurement contains a formula which results in a number. The text cell contains a formula which results in text. 
     It is important to note that, the herein presented implementation of our invention makes use of both a label and a variable name This should not be taken in the limiting sense. The two could be combined. By simply placing the variable directly in the drawing, the label could be eliminated from the process. 
     The next area is referred to here as the output specification region. The primary function of cells in this region is to generate the five over-all parameters which control the insertion of the image of a master drawing. They are: the name of the master drawing, the x-and-y coordinates of insertion, the angle of insertion, the scale factor, and the angle of rotation. These parameters are used to position components of a composite picture. Their role will be explained more fully in the next example, which unlike the present example, makes use of them to form a composite picture. 
     The current cell&#39;s formula appears at the bottom of the screen in the formula bar. The user can move to any cell and edit its formula. 
     Further relationships between the cells will be described following the current example. 
     To create the WINDOW design plan, FIG. 25, the user proceeds as follows. With the cell marker on the first line, the user types: 
     PRINT [WINDOW Design], 
     then presses &lt;ENTER&gt; to accept the formula. On the second and third lines he types: 
     PRINT [Answer the following questions to] 
     PRINT [design a WINDOW:] 
     Then on lines six, seven, and eight the user places the formulas: 
     PRINT [You have the option to provide] 
     PRINT [the WINDOW with elaborate upper] 
     PRINT [and lower casements.] 
     Next the user enters the labels. With the cell marker in the first column of the fourth line, the user types &#34;$1&#34;. This is the first label in the drawing. In this example, it represents the width of the WINDOW (see FIG. 9). When the user presses &lt;ENTER&gt;, the cell marker moves to the second column, the variable field. Here the user gives the label a variable name. 
     Similarly, the user provides the other labels, $2, $3, and $4. 
     The user then places following the variable names in the third column: 
     WIDTH 
     HEIGHT 
     UPPER 
     LOWER 
     These are placed in rows four, five, nine and ten, respectively. 
     The user places in the measurement cells the formulas corresponding to the variables UPPER and LOWER. Values computed in the measurement cells govern rectification of similarly-labeled dimensions in the master drawing. 
     PROMPT [Should the WINDOW have the elaborate upper casement?] 
     PROMPT [Should the WINDOW have the elaborate lower casement?] 
     The user places values in the text cells corresponding to the variables WIDTH and HEIGHT. 
     PROMPT [What is the WINDOW&#39;s width?] 
     PROMPT [What is the WINDOW&#39;s height?] 
     Finally, the user moves to the first cell in the Master Drawing region to provide a formula for choosing the corresponding master drawing. 
     [WINDOW] 
     Editing the design is now complete. 
     In many ways editing a design plan is similar to editing an ordinary spreadsheet, but there are vital differences: 
     1. Cells have predefined roles in the process, and these are specific to drafting. 
     2. Many formulas are entered automatically by SYNTHESIS.sup.™. 
     3. Each variable refers to, and is present on the finished drawing as, two values: measurement and text. 
     The predefined roles of the cells are these. The cells in the Labels region, at the top of the design plan, define the values that correspond to the labels in the master drawing. They have these roles: 
     1. The label relates the values computed to the master drawing; 
     2. The text value is used to replace the corresponding label in the master drawing; 
     3. The variable is the name by which the formula value is referred to inside the design plan; and 
     4. The measurement value is used to rectify the part of the drawing which is dimensioned with the corresponding label. 
     At the bottom of the screen, the Master Drawing region has cells which play the following roles: 
     1. The Design Plan Name cell names the current design plan when several design plans are in memory at the same time; 
     2. The Master Drawing cell links the design plan with its corresponding master drawing; 
     3. The X-insert cell provides the X coordinate with which the base point of the master drawing is to be aligned when its image is inserted into a composite image; 
     4. Similarly, the next cell defines the Y-insert point; 
     5. the Scale Factor cell defines the scale factor for inserting the image; and 
     6. the Rotate cell rotates the image. When it is placed in the master drawing it is rotated according to the angle provided in this cell. For example, in the case of the window, where no rotation was made, the angle of rotation is zero degrees. 
     It should be noted that each of the variable names in the Label region refers to two cells, a number cell and a text cell. SYNTHESIS.sup.™ automatically places a formula in a text cell (of the variables region) whenever the corresponding number cell is edited, and vice-versa. The following formulas were automatically placed in measurement cells corresponding to the variables WIDTH and HEIGHT: 
     ARCH#($HEIGHT) 
     ARCH#($WIDTH) 
     And, these formulas are automatically entered into the text cells corresponding to the variables UPPER and LOWER: 
     ARCH$(#UPPER) 
     ARCH$(#LOWER) 
     In the foregoing formulas the function ARCH# converts from a number&#39;s textual representation to its numeric value. The formula can be overwritten if the user wishes to place another formula in the cell. The choice of formula is user-configurable. The user can choose various types of conversion formulas or have none at all. 
     A default relationship can be established between the text and measurement cells just described. According to this relationship a dimension&#39;s measurement value can be automatically represented as text for various units of measure. It works this way; when either one of these cells is first edited a formula is automatically placed in its sister cell. The user can reconfigure the editor during editing to choose whatever mode of text should represent measurement. The user also has the option of overriding the default formula, replacing it with any formula he chooses. The second type of cell group is referred to here as the drawing insertion region. It contains information describing the overall parameters for inserting the master drawing. They are: the master drawing name cell, the X-coordinate cell, the Y-coordinate cell, the scale factor cell, and the angle of rotation cell. 
     Thus, the hard copy output of the WINDOW design plan would typically appear as follows: ##SPC1## 
     Example of a Computer Program Directing a Group of Modules 
     The second example of executing a parametric design supposes that the user has a program which designs a HOUSE but that the program has no graphic representation of that structure. The present invention would supply the drawings through the appropriate component design modules. The drawing HOUSE-A, FIG. 24, is the desired completed drawing for this example. 
     The user is presented with the main menu screen of his HOUSE design plan, FIG. 13. Although the form of the prompts may vary, the user will usually be asked a series of questions by a commercial design program relating to the specifications of the HOUSE. After the user responds to design questions, he is presented with a completed drawing of his HOUSE 36. 
     Refer now to FIG. 14 which illustrates the capabilities of the invention during the execution of a multi-design process. In the example of this mode, the program supplants the user and interacts with each module, completely or in part. In the example of the HOUSE design, the design modules 10 being dealt with are the WINDOW module, the DOOR module, the WALL module, and the ROOF module. Here again, the term &#34;module&#34; refers to the specific master drawing, the design plan and the capability of the two to interact with the computer program and each other (the user is not aware of the modules). The above-enumerated exemplary design modules, here being used in conjunction with a design program, can also be used as stand-alone modules as in the first example of parametric design. When the design program passes values corresponding to the variables defined in the design plan, those values are accepted in place of the values normally computed by its formula. 
     The computer program places the values it calculates into the multi-design file. These values are used to drive the modules, composed of design plans 10 and master drawings 8, in creation of the house image 24. 
     An explanation now will be given of the syntax used within the multi-spec file formulas 22, where: 
     [] signifies an optional formula, 
       . . signifies that the formula can be repeated as desired, and 
     &lt;&gt; signifies a variable such as width, height, etc. 
     The information for the first design plan--the WINDOW design plan--in the multi-spec file reads: 
     WINDOW:HOUSE-A 
     $1::6&#39;-0&#34; 
     $2::4&#39;-4&#34; 
     $3:1: 
     $4:1: 
     XINSERT:7.0 
     YINSERT:2.75 
     The corresponding syntax is the following: 
     &lt;design plan name&gt;:&lt;output drawing name&gt; 
     [&lt;variable&gt;:&lt;measurement&gt;:&lt;text&gt;] 
       . . 
     XINSERT &lt;value&gt;] 
     YINSERT:&lt;value&gt;] 
     The multi-design file contains five such blocks of information. We will examine the first of these in detail and explain how the values are passed and how the usual mode of execution is overridden by information provided in the file. The first block makes use of the design plan WINDOW to add an image to the drawing file HOUSE-A. The is described in the first line of the file, &#34;WINDOW:HOUSE-A.&#34; The next six lines provide values for six variables in the design plan: text is provided corresponding to $1 and $2; and numbers for $3, $4, XINSERT, and YINSERT. These values supplant those that would normally be calculated for these six variables. This is true regardless of how their calculation is specified in the design plan. Variables that aren&#39;t passed are calculated according to their formulas in the design plan. Note that multi-design files can pass values corresponding to a variable&#39;s text or measurement or both. 
     This is a very powerful capability since it transforms variables which might otherwise depend, for example, on user input or upon values of other variables into constants. 
     This description is not intended in a limiting sense but as an example of the type of information passed between design plans in a multi-spec file. 
     Refer now to FIGS. 15, 16, and 17 which illustrates the DOOR master drawing, the WALL master drawing and the ROOF master drawing, respectively. These master drawings are used to form the composite drawing of the house. These form the basis for individualized design components and, again, are not seen by the user during the design process. 
     FIGS. 21, 22, and 23 illustrate the design screens produced by the design editor according to the DOOR design plan, the WALL design plan, and the ROOF design plan, respectively. 
     FIG. 24 is the composite drawing of the house. It is an enlargement of the house already seen in the house file 24 in FIG. 14. 
     SYNTHESIS.sup.™  utilizes the information contained in the cells to position together the images of the four master drawings (WINDOW, DOOR, WALL, and ROOF) in the composite picture. A base point is placed in each master drawing at the time it is created. (They are marked with crosses in FIGS. 15, 16, 17 and 10). The base point serves as a reference. The image is placed so that the base point aligns itself with the point of insertion specified by the design plan. (For illustration purposes the base points are visible in the composite image FIG. 24.) The rotation angle, zero in this example, causes the image to be rotated about its base point by an amount equal to the specified angle. 
     Hierarchy of Modules Interaction to Execute a House Design 
     In the following example, a hierarchy of design modules interact to design a HOUSE. First we describe the commands which allow a specsheet to interact and control subordinate design generation. EXPORT(&lt;design plan&#39;s name&gt;,&lt;variable name&gt;,&lt;value&gt;) exports a value to a subordinate design module. When a value is passed, the subordinate module is prevented from calculating the value. In doing so it suppresses the normal mode by which the subordinate module would calculate the value. 
     As used in this description, the term &#34;export&#34; means to pass information, such as width, from a controlling design plan to a subordinate design plan without performing calculations on that information. IMPORTS(&lt;subordinate design module name&gt;, &lt;variable name&gt;) imports a value from a subordinate module. &#34;Import&#34; means to pass information up the hierarchy of design plans without performing calculations. 
     CALCULATE(&lt;subordinate design module&#39;s name&gt;) 
     causes a design module to calculate the values corresponding to its formulas but not output a drawing based on calculations. It is prevented from calculating values for cells to which a value was exported by a supervising module. 
     CLEAR(&lt;subordinate design plans name&gt;) 
     clears the protection that exported-to cells have from calculating values. This command enables all cells in the design module to calculate. 
     OUTPUT(&lt;subordinate design module&#39;s name&gt;) 
     causes subordinate module to output a drawing. 
     FIG. 30 portrays the user&#39;s experience in executing the HOUSE design plan. First, the user sees a screen of information and prompts 29 for which he provides answers, one-at-a-time; then he sees screen showing a view of the completed house 6. 
     FIGS. 26 and 27 illustrate detail drawings which are also produced as a result of executing the HOUSE design plan. They describe the typical front and side windows, respectively. 
     Now we will describe how to establish the house design module beginning with the execution of the subordinate modules. No modification is required to the already described subordinate modules (WINDOW, DOOR, WALL, and ROOF). ##SPC2## 
     An additional module called ROMS is also required. It generates rows of elements. It is included to illustrate that a module can both be blind to what it supervises as well as to whatever it is being supervised by. For example, it can create rows of kitchen cabinets; columns; or, in this case, windows. The ROWS module has no master drawing. The appearance of its design plan is shown in FIG. 29. The formulas for the ROWS design plan are as follows. ##SPC3## 
     Next, the user establishes the HOUSE design plan. That design plan supervises all of the other modules and in so doing produces all the aspects of the house. FIG. 28 shows how the HOUSE design plan appears in the design editor. Next we provide formulas for the HOUSE design plan. ##SPC4## 
     FIGS. 30-48 illustrate the role of each module and show the part it plays in creating the HOUSE-A drawing, FIG. 24. The figures illustrate how the various design plans can interact with each other. 
     FIGS. 30-48 are not necessarily in the order in which they are executed in a multi-design. During this entire process the user only sees the prompts for variables which the invention needs to complete the HOUSE drawing. The user will not see the completed drawing until all questions are answered. 
     Refer now to FIG. 30 which depicts what happens when the user is prompted for HOUSE proportions by the HOUSE module 28 which is in control. At this point, the HOUSE module 28 is only prompting the user 12 and not interacting with subordinate modules. 
     In FIG. 31, the HOUSE module 28 is shown as exporting the HOUSE width, length and height to the WALL module 32 and the ROOF length, width and height to the ROOF module 34. 
     The output drawing name, HOUSE-A, is exported to the ROWS module 26, DOOR module 30, WALL module 32, and ROOF module 34. As discussed above, the ROWS module 26 is a generic design plan which can be used with any design program. It has the capability of designing similar components, such as rows of windows, based on mathematical formulas, and user-originated information in a single transaction; i.e., without a creation of a new design plan for each of the similar elements. 
     In FIG. 33, the design plan of the WALL module 32 is shown as being compelled by the design plan of the HOUSE module 28 to output a description of the walls to the HOUSE-A drawing. 
     Similarly, the design plan of the HOUSE module 28 is shown as compelling the design plan of the ROOF module 34 to output the roof description to the HOUSE-A drawing as seen in FIG. 34. 
     In FIG. 35, the HOUSE module 28 is shown as calculating the locations of the doors and exporting those locations to the DOOR module 30. 
     The next step, shown in FIG. 36, is that the HOUSE module 28 passes control to the DOOR Module 30 which prompts the user 12 for the width and height of the door, which is then calculated by the HOUSE module 28 and passed to the DOOR module 30. 
     In FIG. 37, the DOOR module 30 is shown as being compelled by the HOUSE module 28 to pass the door description to HOUSE-A drawing. 
     In FIG. 38, the user 12 is being prompted for the type and number of windows and the detail drawing name for a typical front window. The HOUSE module 28 then calculates the number of windows and exports their width and name to the WINDOW module 16. 
     The HOUSE module 28 passes control to the WINDOW module 16 (see FIG. 39) so it can calculate the unspecified window design values The WINDOW module 16 prompts the user for the height and appearance of the window. 
     In FIG. 40, the HOUSE module 28 is shown as passing control to the WINDOW module 16 to output the typical front window description to the HOUSE-A drawing, which then adds a front view of the house to the HOUSE-A drawing. 
     The HOUSE module 28 (see FIG. 41) now knows the number of front windows and their beginning location, so it passes that information to the ROWS module 26 which in turn calculates the placement of each window by interacting with the WINDOW module 16 and the HOUSE module 28 as in FIG. 42. The window placement is exported to the HOUSE-A drawing along with a command to output the window description. 
     Now, that the window descriptions for the front windows of the house have been exported, the WINDOW module 16 (see FIG. 50) is cleared of all front window descriptions by the HOUSE module 28. 
     Now, the the HOUSE module 28 prompts the user for information regarding the side windows of the house (see FIG. 45). The width and name of a typical side window are then exported to the WINDOW module 16. 
     In FIG. 45, the HOUSE module 28 is shown as passing control to the WINDOW module to calculate the unprovided window design values and create a side drawing to be added to the HOUSE-A drawing. The WINDOW module 16 prompts the user for the height and appearance of each side window and then (see FIG. 46) exports the side window descriptions to the HOUSE-A drawing after it has been passed control by the HOUSE module 28. 
     In FIG. 47, the HOUSE module 28 is shown as passing the number of side windows and their beginning locations to the ROWS module 26. 
     In FIG. 48, the ROWS module 26 and the WINDOW module 16 are shown as interacting to calculate the placement of each window. This is repeated as many times as necessary, once for each window. Then, the WINDOW module 16 exports the placement of the windows to the HOUSE-A drawing, along with a command to output a window description. 
     In the same manner, other modules can interact with each other and with the user to create portions or all of a drawing. 
     FIG. 49 is a simple illustration of how a TEMPLE module 42 could replace a HOUSE module 28 and a COLUMN DESIGN module 44 might replace a WINDOW module 16. Once again, this demonstration is not intended to be interpreted in a limiting sense. 
     SUMMARY OF THE PARAMETRIC DESIGN PROCESS 
     The processes of the invention involve many steps. Those relating to FIG. 50 have already been described above. 
     Referring next to FIG. 51, to execute a parametric design module 60, the controlling design plan is specified. The appropriate design plans from the design plan files 8 are loaded, and the user 12 is presented with screens of design information and prompts. Based on user response and information computed and gathered, the parametric design module executor 60 specifies: 
     1. the name of master drawing, name of output drawing 6, and the scale factor, point of insertion, and angle of rotation; and 
     2. drawing measurement values and text values to replace variables in the master drawings. 
     These drawing specifications are then combined with the data from the master drawings stored in the master drawings data file 10 and in the image synthesizer 66 (more fully explained below with reference FIG. 54) to create an electronic representation of a synthesized drawing 70. Depending on the desire of the user, either a manufacturing device 72 produces a manufactured part 76; or drawings 6 are produced in the drawing processor 74 based on the image 70. 
     Refer now to FIG. 52, which is a more detailed diagram of our novel process for executing a parametric design. The user 12 of the design program specifies the controlling design plan 8 necessary to execute a design plan 78. The controlling design plan is loaded as shown at 80 into the design plan array 86. The controlling design plan then calls design plans from the design plan files 8. The required design plan(s) then become the controlling design plan&#39;s subordinate(s) and are loaded as indicated by reference character 84 into the design plan array 86. Each of these subordinates plans may have other plans subordinate to itself. These too are loaded until all related plans are in the array. Control is passed to the design plan processor 88 (more fully explained in FIG. 53) which specifies the master array. Formula data is passed from the design plan arrays 86 to design plan processor 88, and values are calculated and traded back from the design plan processor 88 to the design plan arrays 86. This can be repeated as often as necessary. If a formula requires the execution of a subordinate design plan and specifies a subordinate array, it calls design plan processor 88 and returns control to itself. This process is called recursion. 
     In normal computer operations, a computer calls another function, which is called a subroutine, to perform a specific task. Recursion is a method by which a computer function calls itself, as in the present invention when a design plan operates on its own information. The design plan is located in memory twice and is blind to the fact that it calls itself. Recursion takes place in the present invention only while processing a design plan and evaluating a cell (more fully explained below with reference to FIG. 53). 
     The execution of a design plan 78 can also output a subordinate array which is loaded into the output array 94 and becomes data within the drawing specifications array 68. After the subordinate array and controlling array have been specified, the output array 94 is passed to the drawings specifications array 68. 
     FIG. 53 illustrates the evaluation of a design plan cell while executing a parametric design 60 and the evaluations of a cell during editing as will be further described in FIGS. 57-60. It is an expansion of the process described in FIG. 52. It is subdivided into the twelve most important types of capabilities required in formula execution which are identified by reference characters 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, and 120 and discussed below. 
     Three of these capabilities require user involvement and are set off in the dashed area 121. The invention also has the capability of providing customized screens of procedural information 108 to the user 12, who is then prompted for appropriate information 110 regarding the variables of the drawing. Through prompts and responses, a specific user&#39;s design program--for example, a commercial bicycle design program without drawings--can be given individual and new values. 
     SYNTHESIS.sup.™  has the capability of executing and reading the output from the user&#39;s design program 122. To do so, the design program executor and/or output reader 112 execute the user&#39;s design program 122. The program generates a report file 124. Thereafter, values are read from the report file 124 by the design program executor and/or output reader 112 and provided to other cells. Values from other cells can be read by the value obtainer 100 which also has the capability of executing the cell if the cell is unexecuted by passing control to the cell evaluator 96 recursively. The cell value obtainer 100 can also import values from subordinate arrays. External data files can be accessed as shown at 118 from a database or text file 126. Design variables can be combined with mathematical and textual manipulation 116. For example, the formula: x+3*(Prompt[Please input Number:]) could be used to prompt the user for a specific number which in turn becomes part of a mathematical formula. 
     The design plan also has the capability of determining the order in which formulas in the design plan are executed using the order of operation determiner 120. Formulas which depend on values calculated in other formulas are executed subsequently as shown at 114. Some formulas, groups of formulas, or even whole design plans may execute conditionally or repetitively. Where this is the case, the invention has the capability of knowing whether, as well as when, to execute formulas. A particular design plan can have control passed to it repetitively by a parent design plan, each time outputting drawing specifications. The cell value exporter 102 can export valves to subordinate arrays contained in the design array 86. As it does, the cell value exporter 102 sets a flag which protects the cell from recalculation by subordinate array executor 98. The subordinate array unprotector 104 clears the flags set by the cell value exporter 102. Thus, it frees all cells for recalculation by the subordinate array executor 98. The subordinate array outputter 106 outputs subordinate arrays through the use of the array outputter 94. The array outputter 94 loads the values into the design array 86 and outputs them to the drawing description file or array 68. Subordinate array executor 98 can calculate the values of all cells in the subordinate array by using the design plan processor 88 recursively. When doing so, cells to which values were previously exported by the cell value exporter 102 are protected from such recalculation. 
     Refer now to FIG. 54 which depicts the process of reading a master drawing 10 to produce a new output drawing 24 within the image synthesizer 66. The name of the description file 68 is specified to the image synthesizer 66 which employs the image reader 129 to read the relevant master drawing from a master drawing file 10. In order to do so, the image reader 129 obtains the master drawing file&#39;s name from the drawing description file 68. Next, the image synthesizer 66 feeds the original image to the image modifier 128. The image modifier 128 returns a modified image to the image synthesizer 66. The image modifier 128 employs three capabilities in modifying the image: the scale factor adjustor 130 is used to adjust the image allowing for the scale factor; the label substituter 134 replaces the label in the master drawing with its associated text as described in the drawing description file; and the rescaler 138 adjusts the image in accordance with the measurement value corresponding to the label as described in drawing description file 68. During the rescaling, if the drawing has a variable whose measurement value is zero, that portion of the drawing is deselected as shown by reference character 142. 
     Thus, either a single drawing can be synthesized or multiple drawings formed, each containing multiple synthesized images. This depends on how many drawings are described in the drawing description file. 
     EDITING A DESIGN PLAN 
     Refer now to FIG. 55 which illustrates the process of editing a design plan. The user 12 inputs a command to the design editor 58. This command is executed; and the screen is updated interactively. The user 12 has options including: to switch to a new current design plan 144; to move to another cell 146; to change a variable&#39;s name 148; to save a design plan 150; to load a design plan 152; to edit a cell 154 which is explained more fully in FIG. 56; or to move information to other cells or design plans 156. Editing a cell results in updating a design plan, while both saving a design plan 150 and loading a design plan 152 would result in transmitting information to the design plan data array 86. Editing a cell 154 would result in processing a design plan 88. 
     Refer now to FIG. 56 for the procedure of editing a cell in a design plan. At this point, the user can make the following choices: change the cursor position without changing the formula 158; input a character into the formula string at the current cursor position 160; or accept a valid formula into design plan data array 62. If an invalid formula is inserted, an error message is displayed by the error message displayer 164 which moves the cursor to the error&#39;s position. When a valid formula is being entered, the updated information is added to the design plan data array 86. The procedure is more fully explained below with reference to FIGS. 57-60. 
     Refer now to FIG. 57 which depicts the routine employed in storing a valid formula upon completing the editing of a parametric variable&#39;s number cell within the design plan. First, the numeric cell information updater 166 calls the current formula saver 174 to add the formula to the data array 86. Next, the numeric cell updater 166 passes control to the cell evaluator 96 and in so doing specifies the current cell&#39;s location to the cell evaluator 96 which evaluates and then stores the value in the data array 86. If the text cell adjoining that measurement cell has no formula, as of yet, a number-to-text formula default is generated, by the number-to-text converter 176, and stored in the data array 86. (This cell can be re-edited by the user in a subsequent edit operation). Then, the cell evaluator 96 is used to load and evaluate the text formula; and the value is then added to the design plan data array 86. Next, the numeric cell updater 166 uses the dependent cell calculator 178 to update the dependent cells. This means that all other cells where formulas depend on the current cell are recalculated, and their new current value is displayed. 
     Refer now to FIG. 58 which depicts the routine employed in storing a valid formula upon completing the editing of a parametric variable&#39;s number cell within the design plan. First, the text cell information updater 168 calls the current formula saver 174 to add the formula to the data array 86. Next, the text cell updater 168 calls the cell evaluator 96, specifying the current cell&#39;s location to the cell evaluator 96 which evaluates and then stores the value in the data array 86. If the text cell adjoining the measurement cell has no formula, as of yet, a number-to-text formula default is generated by the text to number convertor 180 and sorted in the data array 86. (This cell can be re-edited by the user in a subsequent edit operation). Then, the cell evaluator 96 is used to load and evaluate the text formula; and the value is then added to the design plan data array 86. Next, the text cell updater 168 uses the dependent cell calculator 178 to update the dependent cells. This means that all other cells where formulas depend on the current cell are recalculated and their new current value is displayed. 
     Refer now to FIG. 59 which illustrates the routine for editing a parametric variable&#39;s name cell. If a cell is being renamed, the variable name changer 128 loads all formulas referring to the variable from the data array 86 and updates them as new variable names. The variable name editor 170 saves the variable name in the design data array 86. 
     FIG. 60 illustrates the method of editing formulas in the design data array 86 that correspond to the design plan&#39;s output specification region. The insertion formula updater 172 saves the formula in the design data array 86. All dependent formulas are updated using the dependent cell calculator 178. Updated values are stored in the design data array 86. 
     The invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of invention being indicated by the appended claims rather than by the foregoing description; and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.