CA2452912A1 - Automated custom configuration system and method - Google Patents
Automated custom configuration system and method Download PDFInfo
- Publication number
- CA2452912A1 CA2452912A1 CA 2452912 CA2452912A CA2452912A1 CA 2452912 A1 CA2452912 A1 CA 2452912A1 CA 2452912 CA2452912 CA 2452912 CA 2452912 A CA2452912 A CA 2452912A CA 2452912 A1 CA2452912 A1 CA 2452912A1
- Authority
- CA
- Canada
- Prior art keywords
- configuration
- user interface
- project
- engine
- modification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000013461 design Methods 0.000 claims abstract description 38
- 238000012986 modification Methods 0.000 claims abstract description 36
- 230000004048 modification Effects 0.000 claims abstract description 36
- 239000000463 material Substances 0.000 claims abstract description 31
- 230000008859 change Effects 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims description 17
- 238000004519 manufacturing process Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 7
- 238000007405 data analysis Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims 1
- 239000000047 product Substances 0.000 description 192
- 230000006870 function Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 20
- 239000002131 composite material Substances 0.000 description 15
- 102100034581 Dihydroorotase Human genes 0.000 description 14
- 238000010200 validation analysis Methods 0.000 description 13
- 230000006399 behavior Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 235000008429 bread Nutrition 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 239000011521 glass Substances 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012552 review Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 239000002023 wood Substances 0.000 description 3
- 241001674048 Phthiraptera Species 0.000 description 2
- 241000209140 Triticum Species 0.000 description 2
- 235000021307 Triticum Nutrition 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000000465 moulding Methods 0.000 description 2
- 239000004033 plastic Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000252233 Cyprinus carpio Species 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 241000282414 Homo sapiens Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- ONTQJDKFANPPKK-UHFFFAOYSA-L chembl3185981 Chemical compound [Na+].[Na+].CC1=CC(C)=C(S([O-])(=O)=O)C=C1N=NC1=CC(S([O-])(=O)=O)=C(C=CC=C2)C2=C1O ONTQJDKFANPPKK-UHFFFAOYSA-L 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 235000015220 hamburgers Nutrition 0.000 description 1
- 235000019692 hotdogs Nutrition 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 235000013372 meat Nutrition 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- JTJMJGYZQZDUJJ-UHFFFAOYSA-N phencyclidine Chemical compound C1CCCCN1C1(C=2C=CC=CC=2)CCCCC1 JTJMJGYZQZDUJJ-UHFFFAOYSA-N 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- WPPDXAHGCGPUPK-UHFFFAOYSA-N red 2 Chemical compound C1=CC=CC=C1C(C1=CC=CC=C11)=C(C=2C=3C4=CC=C5C6=CC=C7C8=C(C=9C=CC=CC=9)C9=CC=CC=C9C(C=9C=CC=CC=9)=C8C8=CC=C(C6=C87)C(C=35)=CC=2)C4=C1C1=CC=CC=C1 WPPDXAHGCGPUPK-UHFFFAOYSA-N 0.000 description 1
- 235000012780 rye bread Nutrition 0.000 description 1
- -1 service Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000003319 supportive effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
Landscapes
- Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Economics (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
In accordance with preferred embodiments and applications of the invention, an automated custom configuration system (and method) is provided for facilitating the configuration and customization of desired products, services, or other objects that require users to gather and assimilate disparate relevant information (e.g., knowledge of makes, models, types, features, options, limitations, codes, and prices of the desired product/service (or group of the same) to be configured and customized). In accordance with a preferred embodiment, custom configuration may be facilitated through a parametric drawing engine which provides illustrations of configuration data. User modification of an element of an illustrated object may cause the parametric drawing engine to determine and display a corresponding modification in the remaining elements of the illustration such that the connections of the modified element to the remaining elements remains the same and the parameters of the object adhere to the relevant design rules, or other requirements of a given vendor or manufacturer. In accordance with a preferred embodiment, a change in an attribute of an element of an illustrated object (e.g., color, material, texture, etc.) causes the engine to determine and display corresponding changes in the attributes of certain other elements.
Description
_1-AUTOMATED CUSTOM CONFIGURATION SYSTEM AND METHOD
BACKGROUND OF THE INVENTION
~ooot~ In the building and construction industry, job estimation is a time-consuming and costly process. In order to appropriately estimate the cost of any job an individual must assemble both the correct product to satisfy the engineering criteria of a given project and then assemble prices from a variety of data sources. Complex estimates compound the work and cost of this process. In a complex project, estimates are often assembled from a combination of pricing sources. These estimates require both a structured and intimate understanding of the product, its technical specifications, and costs.
BRIEF SUMMARY OF THE INVENTION
Cooo~~ An automated custom configuration system (and method) is provided for facilitating the configuration and customization of desired products or objects that require users to gather and assimilate disparate knowledge of makes, models, types, features, options, limitations, codes, and prices of the desired product/service (or group of the same) to be configured and customized. In accordance with a preferred emhodiment, custom configuration is facilitated through a parametric drawing engine which provides illustrations of configuration data. User modification of an element of an illustrated object causes the parametric drawing engine to determine and display a corresponding modification in the remaining elements of the illustration such that the connections of the modified element to the remaining elements remains the same and the parameters of the object adhere to the relevant design rules, or other requirements of
BACKGROUND OF THE INVENTION
~ooot~ In the building and construction industry, job estimation is a time-consuming and costly process. In order to appropriately estimate the cost of any job an individual must assemble both the correct product to satisfy the engineering criteria of a given project and then assemble prices from a variety of data sources. Complex estimates compound the work and cost of this process. In a complex project, estimates are often assembled from a combination of pricing sources. These estimates require both a structured and intimate understanding of the product, its technical specifications, and costs.
BRIEF SUMMARY OF THE INVENTION
Cooo~~ An automated custom configuration system (and method) is provided for facilitating the configuration and customization of desired products or objects that require users to gather and assimilate disparate knowledge of makes, models, types, features, options, limitations, codes, and prices of the desired product/service (or group of the same) to be configured and customized. In accordance with a preferred emhodiment, custom configuration is facilitated through a parametric drawing engine which provides illustrations of configuration data. User modification of an element of an illustrated object causes the parametric drawing engine to determine and display a corresponding modification in the remaining elements of the illustration such that the connections of the modified element to the remaining elements remains the same and the parameters of the object adhere to the relevant design rules, or other requirements of
-2-a given vendor or manufacturer. In accordance with a preferred embodiment, a change in an attribute of an element of an illustrated object (e.g., color, material, and texture) causes the engine to determine and display corresponding changes in the attributes of certain elements.
BRIEF DESCRIPTIC?N GF THE DRAWINGS
Fig. 1 is a block diagram illustrating a configuration device in accordance with a preferred embodiment of the invention;
Cooo4~ Fig. 2 is a block diagram illustrating a configuration system in accordance with a preferred embodiment of the invention;
Fig. 3 is an exemplary illustration of a product Selection and Configuration display in accordance with a preferred embodiment of the invention;
Fig. 4 is an exemplary illustration of a Preferred Answer display in accordance with a preferred embodiment of the invention;
Fig. S is an exemplary illustration ~of a Standard Answer display in accordance with a preferred embodiment of the invention;
~ooos~ Fig. 6 is an exemplary illustration of a Graphic Selection display in accordance with a preferred embodiment of the invention;
Fig. 7 is an exemplary illustration of multiple Product Code displays in accordance with a preferred embodiment of the invention;
~oolo~ Fig. 8 is an exemplary illustration of a Standard Parametric Drawings display in accordance with a preferred embodiment of the invention;
X001 y Fig. 9 is an exemplary illustration of a Composite Unit Design display in accordance with a preferred embodiment of flue invention;
BRIEF DESCRIPTIC?N GF THE DRAWINGS
Fig. 1 is a block diagram illustrating a configuration device in accordance with a preferred embodiment of the invention;
Cooo4~ Fig. 2 is a block diagram illustrating a configuration system in accordance with a preferred embodiment of the invention;
Fig. 3 is an exemplary illustration of a product Selection and Configuration display in accordance with a preferred embodiment of the invention;
Fig. 4 is an exemplary illustration of a Preferred Answer display in accordance with a preferred embodiment of the invention;
Fig. S is an exemplary illustration ~of a Standard Answer display in accordance with a preferred embodiment of the invention;
~ooos~ Fig. 6 is an exemplary illustration of a Graphic Selection display in accordance with a preferred embodiment of the invention;
Fig. 7 is an exemplary illustration of multiple Product Code displays in accordance with a preferred embodiment of the invention;
~oolo~ Fig. 8 is an exemplary illustration of a Standard Parametric Drawings display in accordance with a preferred embodiment of the invention;
X001 y Fig. 9 is an exemplary illustration of a Composite Unit Design display in accordance with a preferred embodiment of flue invention;
-3-~oom~ Fig. 10 is an exemplary illustration of a Catalog Page display in accordance with a preferred embodiment of the invention;
~0013~ Fig. II is an exemplary illustration of a I?ataGrid display in accordance with a preferred embodiment of the invention;
Cool~~ Fig. 12 is an exemplary illustration of a Custom Shapes Editor display in accordance with a preferred embodiment of the invention;
Coo 15~ Fig. 13 is an exemplary illustration of a Pricing display in accordance with a preferred embodiment of the invention;
boo 1 s~ Fig. I4 is an exemplary illustration of an Accessories Module in accordance with a preferred embodiment of the invention;
Fig. 15 is an exemplary illustration of a Line Item Adjust Module in accordance with a preferred embodiment of the invention;
~oois~ Fig. I6 is an exemplary illustration of an Order Form display in accordance with a preferred embodiment of the invention;
boo 19~ Fig. 17 is an exemplary illustration of a Quotes display in accordance with a preferred embodiment of the invention;
Fig. I8 is an exemplary illustration of a Schedule Generator display in accordance with a preferred embodiment of the invention;
~ooz t~ Fig. 19 is an exemplary illustration of a Product Specifications display in accordance with a preferred embodiment of the invention;
~oo~z~ Fig. 20 is an exemplary illustration of an AutoCAI3 display in accordance with a preferred embodiment of the invention;
~oozs~ Fig. 21 is an exemplary illustration of a Project Information Management display in accordance with a preferred embodiment of the invention;
~0013~ Fig. II is an exemplary illustration of a I?ataGrid display in accordance with a preferred embodiment of the invention;
Cool~~ Fig. 12 is an exemplary illustration of a Custom Shapes Editor display in accordance with a preferred embodiment of the invention;
Coo 15~ Fig. 13 is an exemplary illustration of a Pricing display in accordance with a preferred embodiment of the invention;
boo 1 s~ Fig. I4 is an exemplary illustration of an Accessories Module in accordance with a preferred embodiment of the invention;
Fig. 15 is an exemplary illustration of a Line Item Adjust Module in accordance with a preferred embodiment of the invention;
~oois~ Fig. I6 is an exemplary illustration of an Order Form display in accordance with a preferred embodiment of the invention;
boo 19~ Fig. 17 is an exemplary illustration of a Quotes display in accordance with a preferred embodiment of the invention;
Fig. I8 is an exemplary illustration of a Schedule Generator display in accordance with a preferred embodiment of the invention;
~ooz t~ Fig. 19 is an exemplary illustration of a Product Specifications display in accordance with a preferred embodiment of the invention;
~oo~z~ Fig. 20 is an exemplary illustration of an AutoCAI3 display in accordance with a preferred embodiment of the invention;
~oozs~ Fig. 21 is an exemplary illustration of a Project Information Management display in accordance with a preferred embodiment of the invention;
-4-Fig. 22 is an exemplary illustration of a Sales-Representative Information Management display in accordance with a preferred embodiment of the invention;
CoozS~ Fig. 23 is an exemplary illustration of a Client/Customer Information Management display in accordance with a preferred embodiment of the invention;
Coozs~ Fig. 24 is an exemplary illustration of a Product Line Review display in accordance with a preferred embodiment of the invention;
Fig. 25 is an exemplary illustratiorv of an Interactive Tutor display in accordance with a preferred embodiment of the invention;
Coozg~ Fig. 26 is a flow diagram illustrating the sales/personnel process flow steps in accordance with a preferred embodiment of the invention;
Fig. 27 is a flow diagram illustrating the dealerldistributor use steps in accordance with a preferred embodiment of the invention;
Fig. 28 is a flow diagram showing the architectural process for a millwork system in accordance with a preferred embodiment of the invention;
y Fig. 29 is flow diagram illustrating the manufacturer use process in accordance with a preferred embodiment of the invention;
Coo3z~ Fig. 30 is a diagram illustrating a configuration network, in accordance with a preferred embodiment of the invention;
~oo3s~ Figs. 31 and 32 are illustrations of the hierarchical structures used in accordance with a preferred embodiment of the invention; and Fig. 33 is an exemplary illustration of a user interface for a Parametric Drawing Engine in accordance with a prefen-ed embadirnent of the invention; and .. 5 -~0035~ Figs. 34-51 are exemplary illustrations of the Parametric Y7rawing Engine in accordance with preferred embodiments of the invention.
Preferred embodiments and applications of the invention will be described herein. Other embodiments may be realized and structural or logical changes may be made to the embodiments without departing from the spirit or scope of the invention. Although the preferred embodiments disclosed herein have been particularly described as applied to a window grille configuration system and method for configuration of specific exemplary products (e.g., window or door grilles), it should be readily apparent that the invention may be embodied to provide configuration and estimation functionality for any number of products, services or the like where configured, customized or assembled-to-order productslservices are evaluated, selected, purchased, sold, supported, or otherwise considered.
In accordance with a preferred embodiment of the invention, a custom configuration system (and corresponding method) is embodied in a single (or multiple) processor-based system that may be supported in a stand-alone, networked, mainframe, or client-server architecture. A single (or multiple) program memory module is provided for storing one or more computer programs used to perform the functionality described herein.
In accordance with a preferred embodiment, one or more user interfaces are provided as part of (or in conjunction with) the configuration system to permit users to interact with the system. Individual ones of a plurality of client devices (e.g., network/stand-alone computers, personal digital assistants (PDAs), WebTV (or other Internet-only) terminals, set-top boxes, cellular/P~S phones, screenphones, pagers, kiosks, or other known (wired or wireless) communication devices, ete.) may similarly be used to execute one or more computer programs (e.g., universal Internet browser programs, dedicated interface programs, etc.) to allow users to interface with the configuration system.
In accordance with a preferred embodiment, a user {e.g., consumer, sales-representative, buyer, seller, contractor, builder, architect, consultant, organizer, project-coordinator, etc.) of the configuration system interacts with the system to configure and/or estimate the cost of a desired product, component, or project. In one preferred embodiment, the product {e.g., window, door, hubcap) rnay have a customizable grille portion. The term "grille" refers to a configuration of pane dividers or "rnuntins" that can be used, for example, as pane dividers for a window or door.
Muntins can be a profile or molding made of a variety of materials (e.g., wood, plastic, metal) mounted to separate glass into sections forming, for example, a window or door grille. A grille may be a type of assembly fitted to the interior of the window or door unit which can also be detached. A grille can be fitted inside the sealed insulating glass unit where it is also referred to as a grid.
The interaction with the system is preferably through a series of questions provided by the system with input answers provided by the user. The interactive nature of the system aides the user in arriving at the desired product, component, or project selection and the production of any corresponding information (e.g., layouts, pricing, schematics, specifications, etc.). It is to be understood that the embodiments of the invention can be applied to custom configuration of any product or obj ect.
Fig. 1 illustrates in block diagram form a configuration device in accordance with a preferred embodiment of the invention containing the Core 102, the Frame Engine 104, and the Rules Engine 106 subsystems or modules (described in detail below).
~oo4z~ Core 102 is a processing module that can contain a variety of miscellaneous functions for the system. Core 102, for example, may be used to take a user's input and standardize that input. For example, if the user inputs "2 feet, 3 inches," Core 102 can include functionality that converts that input solely to inches (or another unitized number, e.g., metric units). If the user inputs a command, parameter, or component that violates a system rule (e.g., a drawing that falls outside of a designated area), the improper user input can be converted to the closest acceptable input. Another function that may be incorporated in Core 102 is a messaging system that contains all the codes for dynamically loading the other modules.
Generally, any functions that may facilitate the processing of input/output data in the system may be incorporated in Core 102.
Preferably, Frame Engine 104 is a frame-based inference engine used to process product knowledge, which may be supplemented by an interpreted rules system, based on input data from Core 102 (or other modules) and from users of the system. In accordance with a preferred embodiment, user data is input through user input of answers to a series of questions regarding configuration of a desired product g -(e.g., window or door grille) or project posed by the system (as will be discussed in detail below). In accordance with a preferred embodiment, Frame Engine 104 computes available configuration answers for any configuration questions posed to a user at any time {e.g., in any order), and processes the user's answer to such question.
When given the value of one or more answers, Frame Engine I04 infers the values of answers to other questions automatically, and thus, eliminates the need for excessive rule constructs, as typically required in a rules-based engine. Through inference, Frame Engine I04 may also remove or insert questions (and their associated answers) based on the user's previous response(s).
In accordance with a preferred embodiment of the invention, Frame Engine I04 is primarily constructed using a frame-based design concept of knowledge organization, representation, and product classification. Frame-based and rule-based expert systems encode knowledge using fundamentally different models.
~0o45~ In the context of product configuration, the problem an expert system is supposed to solve is as follows: given a set of options {"questions" to be presented to the user), each of which has a set of legal attributes ("values" with which the user may answer the questions), how are the options/attributes themselves related to each other (which options/attributes remove or constrain away other options/attributes, Which options/attributes are 'interdependent', etc.).
~oo4s~ As an example, if the user has answered options A, 13, and C with attributes x, y, and z, the expert system must then determine what are now the legal attributes for some other option D. In order to do this, an expert system first has to encode the relationship between the options in some manner (i.e., represent the knowledge). Then, as the expert system is provided current choices as inputs in real _g_ time (i.e., "the user has answered options A, B, and C with attributes x, y, and z"), the system must now apply its encoded knowledge to the problem "what are the legal attributes for D" in order to supply the solution(s).
A rule-based expert system generally represents knowledge using a large collection of If Then-Else constructs (i.e., "If the user has answered option 'A' with attribute 'x', Then attribute 'y' is no longer available for option 'B', Else . . .").
This approach, however, is a unidirectional encoding: if the conditional portion (the user has answered option 'A' with attribute 'x') of the statement is true, the resultant portion must also be true (attribute 'y' is no longer available for option 'B'). The converse (if attribute 'y' is no longer available for option 'B', then the user has answered option 'A' with 'x') is not necessarily true, nor in general should it be.
However, a rule-based expert system reduires that the inverse rule must be written separately if it is deemed necessary. If the product knowledge being modeled is complex, the r°equired rules and inverse rules can grow into a very larger number. In addition, applying this type of knowledge representation to the problem "the user has answered options A, B, C with attributes x, y, z; now what are the legal attributes for this other option D?" involves using an interpreter or compiler that understands the rule syntax so as to apply the rules to the problem.
On the other hand, the frame-based Frame Engine 104 encodes knowledge in an entirely different manner that does not suffer from this "inverse rule"
problem. At its most fundamental level, Frame Engine 104 represents knowledge in a hierarchical tree-like structure. The nodes of the tree are generally called "frames"
(e.g., corresponding to product categories) and each node contains a collection of "slats" (e.g., corresponding to product features and options). A slot is a one-to-many - 1~ -relationship between an option and a subset of the legal values (e.g., attributes) for that option.
~0050~ Textually, a slot is represented as follows:
A= x, y, z where 'A' is an option, and 'x', 'y', axed 'z' are attributes fox option A.
X005 x~ In general, a frame contains multiple slots, and has child frames as well (because of the tree structure). Conceptually, all the slots in a frame "go together."
If at least one of the slots in a frame is found to be invalid (e.g., Slot "A
= x, y, z" is in a particular frame, but the user has answered 'A' with attribute 'w'), then the entire frame (along with all of its other slots and all of its child frames) is invalid.
Functionally, products and attributes in such a frame are removed from the configuration process.
Applying this knowledge representation to the problem "the user has answered options A, B, and C with attributes x, y, and z, now what are the legal attributes for this other option D" involves Frame Engine I04 first marking the appropriate portions of the tree invalid as the user supplies answers to options. Then, to actually provide an answer to the question "what are the legal attributes for some other option D," the engine will look for all the frames which have not been marked invalid and which reference 'D' (i.e., have a slot involving 'D') and then combine all the attributes found in these slots (eliminating any duplicates). At the conclusion of this process, the answer (in many cases, a mufti-faceted answer in texxns of associated data [a price, an image, a set of drawings, etc.]) is generated and displayed.
~oo5z~ In accordance with a preferred embodiment of the invention, a Product Knowledge Builder module may be provided for use in constructing, storing and interrelating data concerning products, components, configurations, etc.
to optimize the operation of Frame Engine I 04.
~0053~ The Product Knowledge Builder allows the entry of product knowledge in an intuitive hierarchical fashion. The knowledge is entered into a tree-like structure very similar to the Windows File Manager or Explorer. Once the product knowledge has been entered, this tool "builds" the knowledge into a single output file.
This process both compiles the knowledge into a hierarchical tree structure and then optimizes it. The output ale is then ready to be processed by Frame Engine 104.
~005~~ The following simple example will illustrate the differences between an If Then-Else rule based system and one utilizing Frame Engine 104 in accordance with a preferred embodiment of the invention:
~0055~ There are four people who are identified by a letter, color, and number:
Jim is A, Blue, and ~.
Ted is B, Red, and 2..
Randy is A, Red, and 4.
Roy is B, Blue, and 2.
~0056~ The first screen in an application would prompt the user fox choosing a letter. (As an additional requirement, the questions can be answered in any order, and the user might skip the first screen and come back to it later.) The If Then-Else rules to handle such optionlattribute pairs are as follows:
if Color has no answer and Number has no answer then:
Letter is A or B
else if Color has no answer then if Number is 3 or Number is ~1 then Letter is A
if Number is 2 then Letter is B
else if Number has no answer then Letter is A or B
else if Color is Blue and Number is 3 then Letter is A
else if Color is Red and Number is 2 then Letter is B
else if Color is Red and Number is 4 then Letter is A
else if Color is Blue and Number is 2 then Letter is B
X005 r~ Two more sets of rules will still have to be written for the Color screen and the Number screen. The difficulty of adding a new person to the data or, adding another class of question to determine the group's favorite fruit can easily be seen. It is also useful to remember that this sample data is intended to be a trivial example. In contrast, the Product Knowledge Builder would permit the entry of that same data as follows.
~oo5s~ After adding the four questions to the system, add the following compound slot:
A Blue 3 Jinn B Red 2 Ted A Red 4 Randy B Blue 2 R~y ~0050~ To add a new person, a new row is simply inserted, adding the new person's letter, color, number, and name. To add another question such as the group's favorite fruit, a new column is simply added to the slot, and a list of everyone's favorite fruit can be added.
While the actual algorithm for Frame Engine 104 as implemented is likely to be much more complex, the following illustration of the operation of Frame Engine 104 used to implement the above example may be useful:
In the beginning of a configuration session all frames are valid, and the example above has four frames, one for each row. When asked for the list of available answers for any question, the Frame Engine looks down the column for that question. If the row is valid, its answer is added. Accordingly, for the Letter question, Frame Engine 104 sees A, B, A, B. The duplicate answers are combined to arrive at A, B. Now suppose the user answers A. This means unless the frame has Letter = A, it is invalid. The second and fourth rows are thus invalid. Next the user is presented with the Color question. To ftnd the answers, search down the Color column; the result is Blue and Red for the available answers (Blue from the first row and Red from the third). The user picks Blue. This choice makes the second and third rows invalid.
Coo6z~ As a result, there is only one valid row left, the first row. The user has effectively finished the selection process by answering only two of the three questions.
Frame Engine 104 is particularly useful when applied to real-world, complex product knowledge challenges. Real-world product knowledge contains relationships between products, knowledge common among similar products, knowledge common among different products, and exceptions to all of the above.
The Product Knowledge Builder in accordance with a preferred embodiment contains constructs to handle all of these scenarios.
~0064~ An important relationship among products can be expressed as:
"Product A is a type of Product B" (e.g., a casement is a type of window, a car is a type of vehicle). This relationship is called inheritance. Inheritance is a parent to child relationship, but not in the traditional sense. In human beings, if a parent has a trait, the child may or may not share that trait (e.g., brown hair). In this form of knowledge inheritance, the child must inherit all traits. Inheritance is important, because it allows the software engineer to connbine all the identical traits for the children in one logical place: the parent. It is for this reason that the Product Knowledge Builder works in a tree-like fashion. Each frame is a parent with children, which in turn have their own children. For example, if there were a system for selecting groceries, the logical way to organize the data would look something like that shown in Fig. 31. The Product Knowledge Builder allows the construction of this tree with the result illustrated in Fig.
32.
Co0~5~ As illustrated, when the Bread frame r.s selected, there is a trait defined as bread. This means that all types of buns and loaves can be made out of White, Wheat, or Rye bread, because both Buns and Loaves inherit from Bread.
If any special types of Buns were defined by adding "children" to the Buns frame (i.e., hamburger or hot dog) these new types also inherit White, Wheat, or Rye.
Children inherit everything from their parents, grandparents, and great grandparents, all the way up the tree. In the future, if the store added Pumpernickel and carried it for all types of bread, such information could be added to the Bread frame. If the store offered Pumpernickel for Loaves only and not Buns, then Pumpernickel could be added to the Loaves frame. Without the power of inheritance, Pumpernickel would have to be manually added to every type of bread. There are some types of product knowledge that may be shared among different frames in the tree, but which cannot use inheritance.
In the groceries example, a trait of this sort would be packaging. Not all groceries come in packages, and sometimes the same kind of product might be available with or without packaging (far example, packaged bread versus bread from the deli). If packaging is available, there will be some product knowledge that applies to all packaging (e.g., servings per container). There is still a need to keep this type of knowledge in a single place for ease of maintenance, and this methodology as incorporated by the Product Knowledge Builder is called frame re-use. A frame can be defined by itself to represent such knowledge, which can then be added into the tree at whatever points are appropriate.
~0066~ In accordance with a preferred embodiment, although Frame Engine 104 is a frame-based inference engine, it also includes the ability to process data using rules files, making Frame Engine 144 more of a hybrid engine. It is foreseeable that some custom answers are more conveniently handled using rules files rather than building the product knowledge. A rules-based filtering methodology may be used, for example, for filtering output from Frame Engine 104 to comply with certain rules established for a particular product, component, configuration, project, or the like.
Similar filtering of unwanted answers, or inapplicable questions may be useful. Rules-based functionality may also be used to add special answers, perform calculations, generate user warnings, or any other special proves sing required for specific system implementations.
boos a~ In accordance with a preferred embodiment, Rules Engine 106 may be added to supplement the operation of Frame Engine 104. Rules Engine 106 is typically employed to handle special cases, exceptions, and functionality that are specific to a product line or product series. Rules Engine 106 may also be employed to perform all (or some of) the rules-based functionality discussed above) as utilized by Frame Engine 104.
Coo6s~ In accordance with a preferred embodiment, any number of additional modules may be added to serve a supportive and optional role (called on an "as-needed" basis). A Pricing Engine, for example, may be added that uses data from Frame Engine 104 and/or kules Engine 106 to generate prices. Price reports can be graphically generated and prices can be calculated and displayed to the user in multiple 17 _ currency types. A CAD Engine Module may be added to read CAD drawings and enable multiple CAD drawings to be displayed simultaneously, with separate components to be overlaid upon one another to form a complex illustration.
Specifically, the CAD Engine may handle the determination of which components need to be overlaid and may present a list of the files containing the required components to a CADView control (not shown), which may in turn read the AutoCAD files and display the components on the user interface. The CAD Engine may also print, copy or otherwise output the CAD files.
A system for custom configuration of an object or project, for example, may be added to allow an end user to customize characteristics of an object or project. Exemplary objects or projects include window or door grilles, construction projects, furniture, or window or door treatments. The characteristics of an object or project can include any customizable element or component (e.g., dimensions and location of elements or components, location of elements or components, materials, and color). The customization information can be entered using any known input mechanism. In accordance with a preferred embodiment, a graphical user interface may be used to define an area, and draw and modify features of the object or project. The user can add and delete elements or components, move existing or new elements or compnents and modify the characteristics of the elements and components. An "auto align" feature can provide constraints to prevent a user from drawing an invalid grille.
Other constraints can be provided to meet particular limitations of the product (e.g., maximum size, width, length, height).
Fig. 2 illustrates a configuration System 200 in accordance with a preferred embodiment of the invention. Specifically, System 200 may include a User Interface Subsystem 202, Data Analysis Subsystem 204, Graphics Formatting Output Subsystem 206, Configuration Subsystem 208, and Data Stoxage Subsystem 210.
boo r t~ User Interface Subsystem 202 enables the interaction between the user and the system. It may interact with any component of the system.
Graphics Formatting and Output Subsystem 206 performs calculations and preparations far the display of graphical and/or textual representations to the User Interface 202.
This subsystem may include a variety of graphical modules such as a Parametric Drawing Module, a Schematic Configurator, a CADControl/CADVLT Module, a Bid Quote Generation Module, a Specification Generator Module, etc.
Data Analysis Subsystem 204 accesses and processes data from the Data Storage Subsystem 210 and provides results to the Co;nfigurator Subsystem (or other modules as required). The Data Analysis Subsystem 204 may contain a variety of analytical and computational modules such as a Regular Expressions Engine, a Product Code Engine, a Pricing Engine, a Mulling Engine, etc.
Configurator Subsystem 208 (an example of which is shown in more detail in Fig. 1, as described above) processes questions presented to the user and the answers received from fhe user. Based on the data in the Data Storage Subsystem 2I0 and the established data relationships, the Configurator 208 builds the product configuration. The Data Storage Subsystem 210 may serve as the data repository fox the collective knowledge of the system. Product knowledge and pricing data may be stored in Data Storage Subsystem 210 to be used by the various modules. The Data Storage Subsystem 210 may include a variety of memory modules such as a Repository .. 19 Module, a Pacifier Module, a Buffer Module, an hr~port/E~cport Module, a Preferences Module, etc. The Data Storage Subsystem 210 may also store the series of questions to be selected (e.g., by Frame Engine 104, by Rules Engine l Ot~, etc.) for output to the user interface in response to configuration data input from the user interface.
The Parametric Drawing Engine that may be added to the system takes descriptions of configured products, and produces an accurate representation of the product. As an example, the parameters used as input data descriptions can include the width or height of a window, or the existence of grilles. Frorn these descriptive parameters, this module will generate a drawing; (e.g., an elevation) or other dimensional product aspect for review by the user (such drawings can be converted to CAD format at the user's option).
Coo75~ The Parametric Drawing Engine can also export its drawings in other for use in other applications (e.g., AutoCAD, in the event that the parametric drawing will be used by an architect). The Parametric Drawing Engine may also tie into other modules such as a Schematic Configurator. The Schematic Configurator is a user interface module and inference tool. Using the Schematic Configurator, the user can view a line drawing representing a configured product (e.g., window) on the user interface, and add other units to the product. Thus, the end user might start out with a single unit and he/she might then add two flanking windows, one on either side of the product. The user can designate which to sides to add windows and can even add other product types, such as a round-top window above. The Schematic Configurator can interface with the Frame Engine 144, seeking matching components to the previously selected configuration. Frarr~e Engine 104 will match appropriate products between the two modules based on any number of product attributes and parameters.
In a preferred embodiment, the Parametric Drawing Engine provides illustrations of a product (e.g., window, door, hubcap). The illustrations comprise multiple elements arranged to depict an object conf guration. A user may desire to change the initial configuration of an object in order to customize, for example, the size and shape of an element or a series of elements. For example, a user may prefer to increase the overall size of a window frame element. Preferably, the Parametric Drawing Engine may determine and display corresponding modifications of the remaining elements such that the relative connections of the modified element to the remaining elements remains the same and the product complies with the design rules or other requirements of a vendor or manufacturer. Preferably, a modification to a first element automatically causes the Parametric Drawings Engine to determine and display modifications to the remaining elements of an ilhastration such that a user can immediately view the modified image. In another embodiment, a user can manually overnde a corresponding change to an element. A user ynay supply custom rules which permit a non-proportional change in a corresponding element. For example, a user can determine than a 2X increase in length of element A will result in a 4X
increase in element B.
boo r i~ In a preferred embodiment, a change in an attribute of an element (e.g., color, material, textured can cause a Parametric Drawing Engine to determine and display a corresponding change in the same or a different attribute of some or all of the remaining elements. For example, a user can modify the color of a muntin in a window grille to red and cause a corresponding change in color to red for some or all of the remaining muntins in the window grille.
In accordance with another preferred embodiment, the Parametric Drawing Engine provides rules which constrain or restrict the user's ability to make modifications to elements of the illustrations. For example, a product manufacture may only be able to supply window frames of a maximum size (e.g., 5 feet by 10 feet). If a user creates an illustration having a window of, for example, 6 feet by 11 feet, the Parametric Drawing Engine constrains the illustration such that the maximum dimensions depicted are 5 feet by 10 feet. Thus, the user is provided with an illustration that does not violate the rules or constraints of the marmfacturer or vendor of a product.
The rules may optionally apply to all or some of the elements of an illustration of an object. Application of the rules or constraints to an illustration is preferably automated such that violation of a rule or constraint does not display the illustration in violation of such rule or constraint to the user. In another embodiment, a user may manually override a rule or a set of rules.
Coo i 9~ In one preferred embodiment, the constraints or rules are provided by one or more manufacturers or vendors and integrated in the Parametric Drawing Engine. Alternatively, the constraints or rules may be maintained in a different module (e.g., rules engine 106 (Fig. 1)), on a local or remote network/server, or obtained via the Internet or an Intranet from a central Web site or directly from a manufacturer or vendor of an object or product.
Cooso~ Preferably, the user can modify all or some of the elements of an illustration. The term "modify" refers to the ability to change or alter a feature of an element (e.g., shape, length, width, height). The feature of an element that is modified is preferably related to another element such that a modification to one element would cause the Parametric Drawing Engine to determine and display the change in the relationship of the modified element to another element. For example, the user may desire to maintain a definite relationship between the lengfh of a muntin and the width of a window frame. If the length of the muntin is increased, it may become larger than the width of a window frame and therefore the relationship of the length of the muntin to the width of the window frame would be changed. In accordance with a preferred embodiment, the change in length of the exemplary muntin would cause the Parametric Drawing Engine to determine a corresponding change in width of the window frame such that the desired relationship between the length of the muntin and the width of the window frame is maintained.
boos y It is to be understood that the elements of an illustration may be of any shape (e.g., arcs, lines, circle, squares, triangles), size, dimension suitable for the object to be configured. One of skill in the art would appreciate that the preferred customization methods and systems can be applied to the custom configuration of any object or product.
~oos2~ Preferred embodiments of the invention are directed to methods of configuring an object design and articles of manufacture including a machine-readable storage medium having stored therein indicia of a plurality of machine-executable control program steps for configuring a customized object design. These embodiments are inherent or apparent to one of skill in the art fro:rn the description of the systems herein.
~oos~~ A Preferences Module may also be included in the system. A
Preferences Module allows the user to define a set of preferred answers for questions applicable to products in a project. In a preferred embodiment, the set of preferred answers may be based on user selected preferences, regional specification preferences, manufacturer compatibility preferences, etc. As an example, the user can initiate a project and choose "white clad" windows. The user can then set "white clad" as a preference for that entire project. As a result, for every item that the user configures for the project, the system will reference the Preferences Module and will automatically retrieve the preference values by default and override other items. The Preferences Module can also automatically inform a user that the selected preference is unavailable for a given product during the configuration of that product.
E.~Al~~IPLES
~oos~~ As an illustration of exemplary commercial embodiments of the invention, the following descriptions of the embodiments of invention as variously implemented in different iterations of a system for (and method o~ configuring window products is provided below and in the attached Appendix, which is incorporated herein by reference in its entirety.
Coos5~ In this exemplary embodiment, the system can display the entire structure of product knowledge associated with the desired product or product line. In particular, two "lists" are displayed in the primary product selection and configuration screen shown in Fig. 3: one for questions I 0, and one for answers 12.
Coo~6~ In a typical usage scenario, the user starts at the beginning of a question list, the first of which may present the user with a certain product type, such as a window or a door. As questions 10 are answered by the user, other questions 10 that no longer apply are automatically removed from the; list. In some cases, answering questions I O will actually add new questions 10 to the list or will automatically answer other questions 10. Because the entire product knowledge structure is always accessible, the user can answer questions 10 in whatever order is desired, although the default order is generally designed to reflect the flow of a typical product configuration.
If the user selects "window," the configuration system directs questions to develop answers pertinent to window configurations only.
CooB i~ Referring to Fig. 4, preferred answers l~, or Preferences, are pre-determined questions 10/answer 12 pairs consisting of any combination of product attributes which will be used repeatedly. Preference<.~ may 'be useful to save time on large projects or jobs, and a preference set 16 is typically determined for specific product attributes that fit a particular purpose. Once a pref<;rence set 16 is defined, it can be used repeatedly thereafter to save time in the product selection process. If the user activates Preferences, the system will automatically select the question 10/answer 12 pairs in the preference set 16 and apply them to the product being configured at runtime. Any number of question I O/answer 12 pairs can be set up as preferred values.
Libraries of Preferences may be saved to f Ies for use with repeat customers or recurring product requests.
Referring to Fig. 5, Standard Answers 18 is a feature providing the ability to display to the user the "standard" answer 12 for a particular product attribute.
Standard Answers 18 can .also be automatically selected similar to Preferences and are flexible enough to be changed by the user during the conf guration process (i.e., Standard Answers can be applied to some products in a project but not to others). If the user activates Standard Answers 18, the system will automatically answer l~
al1 questions 10, which have answers def ned as "standard" and apply them to the product being configured at runtime.
- 2~ -Referring now to Fig. 6, Graphic Selection is a feature which provides a graphic representation 20 of attributes (if applicable), which can represent an answer more clearly 12 than a text description. This feature is particularly useful for the illustration of attributes that would otherwise require either extensive text description or which can be better shown with an image 22. The Graphic Selection array can accommodate a range of static or "animated" electronic representations, including portable network files, metafiles, bitmaps, or other graphic representations.
~oooo~ The system also provides Custom Answers. Custom Answers is a feature designed to accommodate direct user input fbr an answer 12 for which there exists one of the following conditions: 1) an acceptable range of incremental values (e.g., dimensional variables); 2) values defined as "other than the values presented"
{e.g., custom operation of a twin casement window); or 3) values that are completely undefined. When a particular question 10 permits custom value answers 12, the Custom Answers box can automatically appear. The system allows the user to enter custom values for dimensional attributes such as unit dimension width, unit dimension height, etc.
y Ultimately, the questions 10 and answers 12 guide the user to a desired configured product. From that point, the invention can accurately calculate how much the configured product is going to cost. In addition., the consumer can obtain detailed product information, including specifications that follow standard formats for engineering and architecture.
Referring to Fig. 8, Standard P;~rametnc Drawings 28 can be generated based on the dimensions of a manufacturer's existing products.
1'arametric drawings 28 can apply to any product where "views" (e.g., front, top, side) of the 2~ -product are defined as product attributes. Custoan Parametric Drawings 28 can also be generated in accordance with the preferred embodiment of the invention if the value ranges) for the drawings of the applicable products carp be defined.
The Schematic Configurator (SC), is used. in this example as a tool designed to allow the usey° to manipulate parametric drawings 28 of products. Using "Drag and Drop" techniques, the user can design and view a variety of product elevations, manipulate individual components, and graphically edit composite unit designs. The SC module can also be used to select arid configure products, as well as manipulate, scale and assemble both pre-defined anal custom shapes and sizes into composite units. In one e~~nbodiment, the SC is used to customize characteristics of a window or door grille (e.g., dimensions and location of muntins, locations of hubs, materials, and color). The user can add and delete muntins, move existing or new muntins and modify the dimensions (e.g., width, length, height), materials (e.g., wood, plastic, metal), color, and texture). The SC also allows the elevation designs to be printed, copied and exported for use in other software applications (e.g., CAD). All pricing information driven by the manipulation of product components may be tracked including mulling charges, custom grille pattern designs, grille types, etc.
As a unit is configured, the SC gathers the dimensional information and processes it to display an elevation. When a unit configuration is complete, it can be viewed in the SC
where any necessary changes can be made (dimensional changes as well as other attribute changes) and other units can be added.
Coo9 t~~ Referring to Fig. 9, composites of products can be created.
Composite unit design, assembly and verification are controlled through the SC. When _27_ more than one single unit 30 is placed together in the SC, a Custom Composite Unit 32 is created. This placement can be verified by clicking the Mull button 34.
~0095~ Other products can be added to a product already displayed in the SC
with three different methods: 1) the Copy function, which creates an exact copy of the selected item; 2) the 101ew Component function, which calls the Selection and Configuration display (Fig. 3) for the configuration of an entirely new unit to be added to the existing unit; and 3) the Design option 38. described below.
Coo96~ The Design option 38 in the SC allows the user to add component units 30 that can be mulled 34 to the existing components. As an example, if the user wants to add a round top to an existing rectangular unit 30, the Design option 38 will list all units 30 that are available. The user chooses "Add Round Top" from the list and the system will add the nearest sized round top to the existing unit 30 while simultaneously matching all other relevant attributes, If a new component unit 30 is added which contains attributes not applicable to the base unit 30, the system will present the user with only those questions 10 specifically applicable to the new component and which require the user's response. The Mull option allows the user to verify that mulling of two or more units 30 can be done. Notification of shop, Field or Invalid mull (depending on the units 30 that have been selected) will be presented to the user with a pop-up or "soft" warning display.
boos ~~ Referring now to Fig. 10, this exemplary embodiment of the invention can incorporate a Catalog Page feature. The Catalog Page feature displays dimensional attributes whose ranges can be shown in tabular form. Its format is derived from printed product information sources that displ'.ay such dimensional variables.
Catalog Page Drawings 40 provide the user with gr,~phic parametric representations - 2 c~ -using the widths and heights of the class of products being selected. Unit 30 heights 42 will be displayed down the side of the selection box an;d the widths 44 will be across the top of the array. This feature clarifies dimensional information presented in text form and provides visual feedback with respect to the scale and size of selected products.
Referring to Fig. ll, product information can be displayed in a DataGrid. The DataGrid is a tool that allows the user to view a table of answers 10 for a list of questions 12. Similar in form to catalog pages, DataGrids reflect tabular displays of product attributes found in printed catalol;s and price books. In this view the questions 12 are presented across the top of the I3ataGrid instead of down the left hand side of the page. The DataGrid is useful where product questions 10 and answers 12 have a one-to-one correspondence.
Referring to Fig. 12, a Custom Shakes Editor allows the user to size custom shaped products. The example shown in Fig. 10 directly applies to windows and doors, but may apply to any customizable product. The Editor is automatically opened when a custom shape product is selected as a product category. The Custom Shapes Editor is generally used in conjunction with Catalog Pages to select the general product shape (see Fig. 10) and permits the user to select and specify any combination of dimensional parameters 48 within the engineering; limits set by the manufacturer.
The Editor also displays a parametric representation of the custom product for inclusion on quotations. All pricing formulas relating to, for example, glass size, glass area, grille patterns and types, frame side lengths, and other parameters 48, can be driven with the Custom Shape Editor.
Referring to Fig. 13, this exemplary embodiment of the invention utilizes data tables and formulas to look up, calculate and store base prices 50 plus add-on prices 52 of available product options. The total price 53 can include project-based price adjustments if applicable. Pricing of products utilizes a combination of values accessed from a table and enhanced by formulas, which calculate up charges;
add-ons and other product options. These methodologies allow the lookup, calculation and storage of unit base prices 50 plus prices 52 for all applicable product features and add-ons. Project-based price adjustments are also available for customer discounts, promotions and competitive bidding situations.
~00101~ An accessories module is added containing product accessories S4 supplied by the manufacturer in conjunction with its primary products. The accessories module can include lineal products (e.g., extension jambs, molding, mull covers, etc.) as well as individual or boxed parts and components (handle;>, hinges, operators, etc.).
This module can also be used to add accessories 54 to a quote that are purchased from other sources. Such additional items are added by entering text descriptions in a text box along with the prices for such items. All accessories 54 entered through the module appear on the quote as individual line items. Functionality can also be included to price accessories that are configurable (i.e., items which are defined by attributes displayed and represented in the Selection and Configuration display (Fig. 3). These accessories or replacement items require product knowledge description and definition similar to primary products and present the user with relevant duestions and answers as already described.
Referring to Fig. 15, this exemplary embodiment of the invention provides a function to enable line item discounting for products, product lines and related attributes. Line item discounting can be applied to specific configured units;
specific attributes (e.g., screens, grilles, etc.) or configured composite units. All of the line items for which discounting is available are displayed in the Line Item Adjust Box 56 lists. The Line Item Adjust box lists all applicable: items, and price adjustment may be applied as follows: 1) none; 2) by multiplier; 3) by a flat fee; or 4) percentage (%).
Using the price adjust function, additional price adjustments can be applied to specific clients, individual units within a project, ir~.dividual projects, or to groups of projects.
~00~03~ Referring to Fig. 16, this exemplary embodiment of the invention enables production of a variety of outputs, one of whit%h can be an order form as shown.
The client manufacturer can derive the format, content and design of the order form from an existing form in use. Order forms can contain all codes 26 necessary to build a specified product as well as pricing and dealer/distributor information. The order form is a tabular view of the information needed to build the set of products defined by a particular project. Also included is an "electronic order form" mechanism through which comma or tab delimited ASCII files can be created and. exported. These files can be imported by other applications and may be designed to meet the needs of each manufacturer.
~00104~ Referring to Fig. 17, this exemplary embodiment of the invention enables the production of quotes, whiclu include scaled elevation drawings of the product, reflecting the parametric drawings 28 generated during product selection and the use of the Schematic Configurator module. Also included is a list of all options chosen, the unit base price 50, add-on prices 52 for non-standard choices, total price S3 for each product, and a grand total 60 of all products in. the project.
~00105~ Referring to Fig. 18, this exemplary embodiment of the invention can provide a Schedule Generator. The Schedule Generator can build a product schedule 62, listing all products included in a project, amd relevant attributes assigned to each product, plus the system assigned. product code 26. The Schedule 62 is constructed as products are selected and constitutes a valuable tool for use by sales people as well as design and construction professionals, providing a full view of the products to be used in a construction project. When an attribute of any unit 30 is changed, the change is reflected on the Schedule 62 as well. The Schedule 62 can be displayed on-screen or printed as hard copy.
~oolo~a Referring to Fig. 19, the exemplary embodiment of the invention enables generation of product specifications 64. After a product has been configured and the user requests a technical specification 64 for that product, the Specification Generator gathers all relevant product information and produces a valid proprietary specification which confoxms to the Construction Specifications Institute (CSI) three part section format. The Specification Generator works from content-complete template specifications supplied by the manufacturer. The system can produce unique customized specifications 64 for each product in a projiect or (as an additional option) a single specification 64 for multiple products.
boo to a ~ Referring to Fig. 20, this exemplary embodiment of the invention allows the user to view, print, copy, and export Auto(JAD drawing files as DXF
files, compatible with a number of CAD syste,ns under the Windows environment. This embodiment of the invention has the ability to do multii-layered component assembly of DWG files. Component assembly is the process of displaying several DWG files at once, which overlay one another to compose an entire detail. The image 66 displayed as a section detail is actually made from three to five aeparate sub-assembly drawings, and several cross section details can be displayed simultaneously. The drawings included are based on the attributes selected during product selection and configuration.
_32_ The system can export D'WG files to a DXF formatted file. This feature allows the editing of exported drawings using a CAD system that accepts DXF files. The system also will allow the user to print drawing details.
~0010~~ Referring to Fig. 21, this exemplary embodiment can include a project database, which maintains and tracks information that is unique to a particular project. The project database contains the sales or customer service representative's name 68, relevant customer information 70 and project information 72 for that particular project. When a new project is created, information from associated databases for sales-representatives and customers :is available through drop-down boxes. Fields for Terms of Payment, PO Number, Price Multiplier, and Project name are available, as well as the Line Item Adjust function (Fig. 15). Projects are categorized as Current or Archived and can be moved between these categories as necessary. When a Project is highlighted in the Project window, all units in that project are displayed. Interfaces to contact management systems, sales systems and sales force automation systems can also be engineered on request. The system allows for record additions, changes to existing records, deletion of records, and duplication of records.
~00109~ Referring to Fig. 22, system can al;>o include a Sales-Representative database, which controls all information for sales-representatives. These items are ID#
76, Name 78, Territory 80, phone number 82 and fax number 84. The system allows for record additions, changes to existing records, deletion of records, and duplication of records. The Customer list for each sales-representative can be viewed by selecting a specific sales-representative name in the listing.
fool toy Referring to Fig. 23, this exemplary embodiment of the invention can also include a Customer database to control all information for customers.
These items _3~_ are ID# 76a, Name 78a, separate billing 80a and shipping Addresses, Contact name 78b, Customer type 86, and miscellaneous defaults. The system allows for record additions, changes to existing records, deletion of records and duplication of records.
Customers are displayed in a listing which includes the sales-representative for each customer.
X0011 y This exemplary embodiment of the invention can also include an Import/Export function set which permits a project t;o be built on one computer and exported into a file format, which can be imported into the same application on another computer (provided the product knowledge sets are exactly the same). This function set allows a project to be constructed by a customer and then imported by a dealer, distributor or sales representative for quote generation, final order pricing adjustment and negotiation. Similarly, projects can be shared between dealers, sales-people and customer service personnel.
~oo~ 1z~ This ex~,~rnplary embodiment of the invention also includes a System Help File. The System Help File can offer an on-line condensed version of the full user documentation typically supplied with the system. Tlhe System Help File can provide easily accessible information to assist in the operation of the system. The System Help File can be configured to be context-sensitive so that the Help topics available are driven by the user's position in the system.
Refernn,g to Fig. 24, this exemplary embodiment of the invention can include a Product Line Review function. The Product Line Review offers manufacturer and product line information 88, as well as general industry information 88, as it relates to the manufacturer's product line. Product Line Review is typically derived from each manufacturer's sales and marketing catalog(s), promotional b~°ochures and other printed materials. Product Line Review can include full color or black & white scanned images 90, product features and benefits (as text descriptions), line drawings, technical illustrations and other appropriate product information., X0011-~~ Referring to Fig. 25, this exemplary embodiment of the invention can incorporate an Interactive Tutor. The Interactive Tutor is a series of help screens 92 referenced to specific system features and functions. When the Show Messages (or Tutor) option is checked, the system will present messages on the screen to assist the user with the next step. This option is turned on or off by either selecting the Tutor button or by opening the Tutor Menu and clicking Show Messages so that the check is removed.
~00115~ Audio/Visual Presentations can also be included as an integral part of the exemplary system. Sound, video or both media combined can be utilized to present, promote or enhance the client company and its products. Examples of this kind of information include videos of manufacturing processes, product installation procedures, or sales and marketing presentations. Audio information can include theme music or sound tracks, which complement video information.
boo I 16~ This exemplary embodiment of the invention can also include a Product Information Module. The Product Information module allows the user to view various catalogs as a product is specified. combining the expert system with the Adobe Acrobat Reader, for example, allows users access to a range of supporting product information. The printed catalogs from which this information is derived are more graphically oriented than CAD drawings and specifications. Generally, the format of this kind of material is PDF files.
Referring now to Fig. 26, flow clhart 300 illustrates how another exemplary implementation of a preferred embodiment of the invention can be employed by a sales-representative/user in ordering sales for customers/users in the field. After the program is started at Step 302, the sales-representative will call on new or existing customers to investigate prospective business. The sales representative can then run the system and start a project. At step 304, the representative would initiate the project (Step 304) and a list of all projects would be displayed. The representative can then initiate a new project 308. Alternatively, the system could remain in a "wait"
mode 306 until the project button is initiated. Once the project button is initiated, the sales-representative can then type in the client's name and address, and other pertinent information at step 310. Once the client information is entered then the user is presented with a configuration screen 312 that can be used to begin adding product information.
boo I 1 ~3~ The manner in which a product is entered consists of the user inputting into the system a request for a new "mark." A "mark" refers to a configured unit or product such as a window, door, or other assembly. The user can then select a product type, such as a window, at step 314. The user can then begin to configure a new mark and at that point is prompted to answer some questions about the product at step 315 such as the type, size, or style of window desired. The sales-representative/user can input the specific product information, for example, color options, glass type, etc. At step 318, the sales-representative can select a quantity of product for the project. As a result, the system will repeat (3~0) the same configuration for the number of windows entered in the (quantity data field.
~0011~~ At step 322, the user can create custom composite units. At this point, the user would enter the Schematic Configurator and choose the composite elements for the configurator to construct at step 324. Once the custom configuration is complete, or if the custom composite step is bypassed (323), the user can initiate a quote button at step 326, which enables the calculation of a price quote for the products currently defined by the project. The quote can contain individual descriptions of each product selected in preceding steps with all associated pricing, along with a drawing of each product with any custom composite units. Moreover, the information can be displayed, printed, presented or otherwise output togel;her or separately at step 328. At step 330, the system would provide a price total and a 9:otal quote for the project.
boo z ~o~ Fig. 27 illustrates another exemplary implementation of a preferred embodiment, in which a dealer distributor adds individual sales representatives to the database at step 402. Customer names will then be added at step 404. The system will then check whether all customers have been added at step 406. If not, then it will loop back to add more names at step 408. Once all customers have been added to the database at step 410, the system will query whether t:he same thing has been done for sales representatives at steps 412, 414, and 416. Once this data has been added, then the system will generate the customer database sales repar-t. Once completed, this program will end.
Another exemplary implementation of a preferred embodiment is shown in Fig. 28. Upon initiating a product customization, the user can create a project 450. A product can be selected 452 to be configured i:or that project. The product can be configured by accessing the Schematic Configurator 454 to create a custom composite product. This step 454 can be repeated 458 until all the products for a specific project have been configured at step 456. Upon completion of configuration of all products for the project 460, additional projects may be created by returning to step 450 (464). Once all projects have been created and alll products for these projects have been selected and configured 462, the user moves on 466 in the system by accessing the Generator for Output Reports 468, whereby schedules, CAD drawings, Technical Specification Sheets, ete. can be created as hard copies 470. After the generation of output reports, the user can export CAD Details to CAD software 472. before exiting the system, the user can transmit the project and all related information regarding the project to a dealer for a price quote 474, which can also be printed as a hard copy.
~oolz~~ Another exemplary implementation of a preferred embodiment is shown in ~'ig. 29. In this exemplary embodiment, a user/sales-representative can initiate configuration of products in at least three ways: by taking a Telephone Sales and Order Entry 480, by Receiving a printed order form 482, and by Importing electronic project CIE (or other text format) 484. (f a Printed order form is received 482, or Telephone Sales and Ordcr Entry is taken 480, the sales-representative proceeds to create or select the customer from the Customer Database 486. Next the sales-representative can Create o: Append a project for that customer 488. A desired product can be configured for that project 489. This step can be repeated 492 until all the desired products for that customer or customer's projf:ct have been configured. Once all the products have been configured 494, the sales-representative can decide whether or not all the projects have been added for that customer 496. If they have not 498, the sales-representative can return to step 488 and create or access additional projects. If all the projects have been attended to 500, the sales-representative can determine if all customers have been added. if additional customers need to be added to the system or accessed within the system, the sales-representative ca.n return 504 to step 486 to create new files or select customers from the database, and then repeat the aforementioned steps. After all customers have been attended to, the user can transmit a product code (e.g., End Item Code) to back-end manufacturing and/or ERP systems before exiting the system.
~ootz~~ If, as shown in Fig. 29, the user imports electronic Project CIP (or other text format), the user can access Integrated Manufacturihg Software and move on to determine if the Version Control (VC) Number is correct 506. If not, the user can verify by telephone at step 480, and progress therefrom throughout the system as discussed above. If the VC Number is correct 510, tlhe user can then add the order to any of the Sales Representative, Customer, Project, or Mark Databases 512.
Next the user/sales-representative can Transmit the End Item Code to the back-end manufacturing and/or ERP systems 514.
~oolz~~~ In accordance with a preferred emlbodiment, the functions, features and architectures described above can be part of a network available to enable business-to-business commerce over- the Internet. In accordance with a preferred embodiment of the invention, an Internet portal (and a corresponding method) is provided to be the center of a selected vertical market in a particular industry or collection of industries (e.g., fenestration, or windows and doors as exemplified above). The portal can be an Internet focal point for the participants in the vertical market. The portal can not only incorporate the configuration system described above for use by participants in the portal, but also can be a virtual space for industry news and information as well as a means for facilitating co7nmerce by and between the participating manufacturers, dealers, distributors, and retail customers making up the vertical market, as shown in -3~-Fig. 30. In a preferred embodiment, Web server software such as Sondware by EdgeNet Media, Inc., the details of which are incorporated herein by reference, may be used to implement the Internet portal.
~oom5~ The portal provides the central services for its participating members, providing news, advertisements, means for communication between members. The portal also provides a member-to-member commf;rce channel providing product offerings, configuration tools, ordering and purchasing mechanisms. Fees can be charged for membership to the portal, advertisements viewed or displayed on the portal, or as part of any member-to-member commerce transactions.
Coo 1 zoo The portal can be an authoritative point of information about a given product market or focused to a specific group within the vertical market. The software package creating the portal can be a suite of Web applications enabling the creation of e-commerce communities vfor business customers. Virtual communities can be created through this portal where customers within the vertical market can shop, learn, play and explore common interests. This portal can incorporate the configuration-related system described heretofore. The portal can be accessible to those with market-specific expertise, and in return for membership in the portal, the participants can provide much of the content themselves in the form of advertising, news, discussions, sales, etc. as shown in Fig. 30.
Coon s~ Figs. 33-51 illustrate another exemplary implementation of a preferred embodiment, in which a user can design or customize an element in the form of a grille for a window or door using a Parametric Drawing Engine or other module of the system. As shown in Fig. 33, user interface window 515 shows an illustration of a window frame 516 and a window grille 51 ~ having, for example, a circular muntin 520 and vertical muntin 521. A modification to window frame 516 which increases its length would cause corresponding modifications to the remaining elements (e.g., circular muntin 520 and vertical muntin 521j such that the relative connections of window frame 516 to circular muntin 520 and vertical muntin 521 remain the same.
For example, increasing the height of window frame :> 16 would cause a corresponding increase in the length of vertical muntin 521 and the circumference of circular muntin 520. Alternatively, a change in color of circular muntin 520 from white to black can cause a corresponding change in color of vertical muntin 521 from white to black.
~oolzg~ Figs. 34-35 illustrate an "auto align" feature in accordance with a preferred embodiment. Fig. 34. shows window grilles having vertical and horizontal muntins that are not spaced at equal intervals. Fig. 3 ~ shows alignment of the vertical and horizontal muntins after applying auto-alignment to the illustration such that the vertical and horizontal muntins are spaced at equal intervals. Optionally, the auto-align feature can be used to align any characteristic of are illustration (e.g., radii of hubs, position of groups of munt~ns and hubs, etc.).
~oolz~~ Referring to Figs. 36-37, the width of a muntin can be changed in accordance with a preferred embodiment. Fig. 36 slows a horizontal muntin before adjustment of its width. Fig. 37 shows the horizontal muntin after its width is increased. Optionally, the width of the remaining muntir~s could automatically be resized to the same width. Fig. 3~ shows a hub (grey) which is expanded to a larger size as shown in Fig. 39. In accordance with a preferred embodiment, the length of the muntins connected to the hub are proportionally reduced in length relative to the increased size of the hub.
Coo 1 ~o~ Referring to Figs. 40-41, a misaligned vertical muntin is aligned in accordance with a preferred embodiment. Fig. 40 shows a rrlisaligned vertical muntin.
In Fig. 41, the muntin is shown as aligned with the remaining vertical muntins.
Figs. 42-43 show the movement of a horizontal muntin along the sides of a window frame ire accordance with a preferred embodiment. Fig. 42 shows a horizontal muntin with its ends terminating at an initial position along the sides of a pentagon-shaped window frame. Fig. 43 shows the horizontal muntin maved upward.
In accordance with a preferred embodiment, the length of the horizontal muntin is proportionally reduced such that the ends of the horizontal muntin still terminate at the sides of the window frame.
Coo 1 ~z~ Figs. 44-~45 show the expansion of multiple elements in response to the movement of a vertical muntin in a "sticky" mov<~ment within a window frame in accordance with a preferred embodiment. Fig. 44 shows a gray vertical muntin and its relationship to other elements within a window frarrie. Fig. 45 shows the result of moving the vertical muntin toward the left side of the vrindow frame. In response to the movement of the vertical muntin, the system automatically adjusts the remaining elements to maintain their relative size, position, and symmetry within the window frame compared to the vertical muntin. For example, the length of the horizontal muntins increases in response to the movement of the vertical muntin. 'The right hand side vertical muntin is reduced in height to match the lf;ft hand side vertical muntin, and the right hand side vertical muntin is shifted to the right to maintain the symmetry about the middle of the window frame.
Cool~~~ Figs. 46-47 shows the movement of a horizontal "shoulder" muntin and corresponding modifications to muntins connected to the shoulder in accordance -4~-with a preferred embodiment. Fig. 46 shows an initial position of the shoulder muntin (gray) relative to muntins connected to the shoulder :muntin at a single point or node.
Fig. 47 shows that the length of the muntins connected to the shoulder muntin are automatically increased by the system as the shoulder muntin is moved toward the bottom of the window frame.
~001~ ~~ Fig. 48 shows the "nodes" or poinl;s which define the end points of elements of an illustration in accordance with a preferred embodiment.
~001;35~ Referring to Figs. 49-S 1, the ability of the system to permit an element to "follow" or not follow another element is illustrated in accordance with a preferred embodiment. Fig. 49 depicts a horizontal muntin (gray) attached to a vertical muntin at the midpoint of the horizontal muntin. Fig. 50 shows that the system automatically causes the vertical muntin to "follow" (i.e., increase in length) as the horizontal muntin is moved by the user to the top of the window frame. Fig. S
1 depicts another preferred embodiment where the vertical muntin does not follow as the horizontal muntin is moved by the user tow and the top of the window frame.
[oolss~ In accordance with a preferred embodiment of the invention, one or more processor-based systems are used to implement tlZe modules described or apparent from the description herein and to perform the functionality described (or inherent) herein. For each such system, one or more processors (e.g., central processing unit (CPU)) are provided for e.cecution of one or more computer programs stored on any (one or more) known recording mediums. The processors) perform, control, or at least inform the various processing steps performed by the system in sending and retrieving data to and from at least one user interface and/or neltwork. A user interface may be connected directly to a bus or remotely connected through a network (e.g., Internet).
_ ~.3 _ The network represents (wired or wireless) connection of two or more devices, whether directly or indirectly connected (e.g., directly coupling through cable, indirect coupling through one or more hubs or servers, whether the network is local to the processor-based system, geographically remote from system, or a distributed combination of local/remote network components).
~001~~~ Preferably, one or more of the modules are coupled (directly or indirectly) to one or more database structures for use iin supplying storage functionality for the modules in accordance with the operations described (or inherent}
herein. The database structures can take any form from an individual floppy disk drive, hard disk drive, CD-ROM, redundant array of independent devices (RAID} system, to a network of the same or other storage devices. As is well known in the art, the database structures may be physically connected within the same location, or have one or more structures remotely located in different locations. Each module may have dedicated or shared access to one or more database structures locally or remotely located from the module.
~ooi3s~ While preferred embodiments of the invention have peen described and illustrated, it should be apparent that many modifications to the embodiments and implementations of the invention can be made without departing from the spirit or scope of the invention. Although the configuration system (and corresponding method) has been specifically described in connection with the configuration of a window product, it should be apparent that the system (and method) can be applied to any product, service, or component that is to be designed or configured such as cabinets, rooms, houses, cars, landscape designs, clothing, etc.
- ~-4 -While the illustrated embodiments have been described utilizing Internet communications, it should be readily apparent that other communication systems or (wired/wireless) networks (e.g., intranets, private bulletin boards, individual Local or wide area networks, proprietary chat rooms, ICf~, IRC channels, instant messaging systems, etc.) using real-time or non-real-time systems in Lieu of or in addition to the disclosed Internet resources may also be utilized.
A Pricing Engine module could be added to the configuration system to generate pricing and cost information for individual products, components, projects, etc. both on a real-time, on-going basis, as the user interacts with the system, and also to provide total (or sub-total) pricing data for the configured product or project. The Pricing Engine may include bid and quote generation functionality to facilitate the production and transmission of bid/quotes by users to their ultimate customers. A
Product Code Engine {see Fig. 7) may be added to generate (and receive as inputs) codes {e.g., UPC, EIC, etc.) assigned by manufacturers, retailers, or other users, as well as by the system itself for use in processing data associated with a particular product, component, project, etc. The product codes may be used by other modules of the system (e.g., the Pricing Engine) to associate data (e.g., prices) directly with the product codes.
X0014 y A Communications module can be added to streamline the sales, order entry and manufacturing process: from transaction sites through the plant and to the job site. Thus, for example, the user, sales representative, or other individual can place an order of the configured product/service directly with the provider (e.g., manufacturer). The communication can be accomplished through any known means of communication (e.g., telephone, fax, e-mail, Internf;t, etc.j. The Communications 1.~5 module would provide the system with capability to transmit (e.g., fax) quotes to remote ordering locations.
A Specification Generator module may also be added to generate detailed specifications in textual and/or graphical format for the configured products/services, etc. T he specifications may be displayed, output, exported, or transmitted as desired by the user.
~001~3~ The modules described herein, particularly those illustrated or inherent in the instant disclosure, may be one or more hardware, software, or hybrid components residing in (or distributed among) one or more local or remote computer systems. Although the modules are shown or described as physically separated components, it should be readily apparent that the modules may be combined or further separated into a variety of different components, sharing different resources (including processing units, memory, clock devices, software routines, etc.) as required for the particular implementation of the embodiments disclosed herein. Indeed, even a single general purpose computer executing a eomputer program stored on an article of manufacture (e.g., recording medium) to produce the functionality and any other memory devices referred to herein may be utilized to implement the illustrated embodiments. User interface devices may be any device used to input and/or output information. The user interface device may be implemented as a graphical user interface (GUI) containing a display or the like, or may be a link to other user input/output devices known in the art. Discrete functionality of the system may be separated (logically or physically) to more efficiently operate the system.
Many of the fundamental data coordinating functions (e.g., functionality performed by Core 102) L~6 ..
may be separated into a Foundation-Level Tools Subsystem. This Subsystem may include a BB Assist Module to create BB structures and the like.
In addition, memory units described herein may be any one or more known storage devices (e.g., Random Access Memory (RAM), Read Only Memory (ROM), hard disk drive (HDD), floppy drive, zip drive, compact disk-ROM, DVD, bubble memory, etc.), and may also be one or more memory devices embedded within a processor, or shared with one or more of the other components.
Custom Grille Designer Design Documentation D~escriptir~
~curr~et Custom Grille Designer Last Revised: 12/10/03 Revisi~n H~st~ry Date Description e~luthor~s)Reviewed By 12/10103Edited for patent publishing from Don Dehm original Design Document.
--i .
~ ~_-.
lJse of this Document The master copy of this document resides in electranic format. Printed copies of this document are for convenience only. Verify that the revision of this printed document matches the current revision of the electronic master before use. Ownership of this document may be determined by viewing the electronic master.
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Inc. Page I
Custom Grille Designer Designs Do~umentatiori F
Table of Contents Revision History ................................................................. 1 1. System Overview...................................4 2. ~ocument Coverage..............................4 3. Units and Areas .....................................4 4. Segments................................................4 4.1 Lines ..................................................................... 4 4.2 Arcs and Ellipses................................................... 4 4.3 Hubs .....................................................................
CoozS~ Fig. 23 is an exemplary illustration of a Client/Customer Information Management display in accordance with a preferred embodiment of the invention;
Coozs~ Fig. 24 is an exemplary illustration of a Product Line Review display in accordance with a preferred embodiment of the invention;
Fig. 25 is an exemplary illustratiorv of an Interactive Tutor display in accordance with a preferred embodiment of the invention;
Coozg~ Fig. 26 is a flow diagram illustrating the sales/personnel process flow steps in accordance with a preferred embodiment of the invention;
Fig. 27 is a flow diagram illustrating the dealerldistributor use steps in accordance with a preferred embodiment of the invention;
Fig. 28 is a flow diagram showing the architectural process for a millwork system in accordance with a preferred embodiment of the invention;
y Fig. 29 is flow diagram illustrating the manufacturer use process in accordance with a preferred embodiment of the invention;
Coo3z~ Fig. 30 is a diagram illustrating a configuration network, in accordance with a preferred embodiment of the invention;
~oo3s~ Figs. 31 and 32 are illustrations of the hierarchical structures used in accordance with a preferred embodiment of the invention; and Fig. 33 is an exemplary illustration of a user interface for a Parametric Drawing Engine in accordance with a prefen-ed embadirnent of the invention; and .. 5 -~0035~ Figs. 34-51 are exemplary illustrations of the Parametric Y7rawing Engine in accordance with preferred embodiments of the invention.
Preferred embodiments and applications of the invention will be described herein. Other embodiments may be realized and structural or logical changes may be made to the embodiments without departing from the spirit or scope of the invention. Although the preferred embodiments disclosed herein have been particularly described as applied to a window grille configuration system and method for configuration of specific exemplary products (e.g., window or door grilles), it should be readily apparent that the invention may be embodied to provide configuration and estimation functionality for any number of products, services or the like where configured, customized or assembled-to-order productslservices are evaluated, selected, purchased, sold, supported, or otherwise considered.
In accordance with a preferred embodiment of the invention, a custom configuration system (and corresponding method) is embodied in a single (or multiple) processor-based system that may be supported in a stand-alone, networked, mainframe, or client-server architecture. A single (or multiple) program memory module is provided for storing one or more computer programs used to perform the functionality described herein.
In accordance with a preferred embodiment, one or more user interfaces are provided as part of (or in conjunction with) the configuration system to permit users to interact with the system. Individual ones of a plurality of client devices (e.g., network/stand-alone computers, personal digital assistants (PDAs), WebTV (or other Internet-only) terminals, set-top boxes, cellular/P~S phones, screenphones, pagers, kiosks, or other known (wired or wireless) communication devices, ete.) may similarly be used to execute one or more computer programs (e.g., universal Internet browser programs, dedicated interface programs, etc.) to allow users to interface with the configuration system.
In accordance with a preferred embodiment, a user {e.g., consumer, sales-representative, buyer, seller, contractor, builder, architect, consultant, organizer, project-coordinator, etc.) of the configuration system interacts with the system to configure and/or estimate the cost of a desired product, component, or project. In one preferred embodiment, the product {e.g., window, door, hubcap) rnay have a customizable grille portion. The term "grille" refers to a configuration of pane dividers or "rnuntins" that can be used, for example, as pane dividers for a window or door.
Muntins can be a profile or molding made of a variety of materials (e.g., wood, plastic, metal) mounted to separate glass into sections forming, for example, a window or door grille. A grille may be a type of assembly fitted to the interior of the window or door unit which can also be detached. A grille can be fitted inside the sealed insulating glass unit where it is also referred to as a grid.
The interaction with the system is preferably through a series of questions provided by the system with input answers provided by the user. The interactive nature of the system aides the user in arriving at the desired product, component, or project selection and the production of any corresponding information (e.g., layouts, pricing, schematics, specifications, etc.). It is to be understood that the embodiments of the invention can be applied to custom configuration of any product or obj ect.
Fig. 1 illustrates in block diagram form a configuration device in accordance with a preferred embodiment of the invention containing the Core 102, the Frame Engine 104, and the Rules Engine 106 subsystems or modules (described in detail below).
~oo4z~ Core 102 is a processing module that can contain a variety of miscellaneous functions for the system. Core 102, for example, may be used to take a user's input and standardize that input. For example, if the user inputs "2 feet, 3 inches," Core 102 can include functionality that converts that input solely to inches (or another unitized number, e.g., metric units). If the user inputs a command, parameter, or component that violates a system rule (e.g., a drawing that falls outside of a designated area), the improper user input can be converted to the closest acceptable input. Another function that may be incorporated in Core 102 is a messaging system that contains all the codes for dynamically loading the other modules.
Generally, any functions that may facilitate the processing of input/output data in the system may be incorporated in Core 102.
Preferably, Frame Engine 104 is a frame-based inference engine used to process product knowledge, which may be supplemented by an interpreted rules system, based on input data from Core 102 (or other modules) and from users of the system. In accordance with a preferred embodiment, user data is input through user input of answers to a series of questions regarding configuration of a desired product g -(e.g., window or door grille) or project posed by the system (as will be discussed in detail below). In accordance with a preferred embodiment, Frame Engine 104 computes available configuration answers for any configuration questions posed to a user at any time {e.g., in any order), and processes the user's answer to such question.
When given the value of one or more answers, Frame Engine I04 infers the values of answers to other questions automatically, and thus, eliminates the need for excessive rule constructs, as typically required in a rules-based engine. Through inference, Frame Engine I04 may also remove or insert questions (and their associated answers) based on the user's previous response(s).
In accordance with a preferred embodiment of the invention, Frame Engine I04 is primarily constructed using a frame-based design concept of knowledge organization, representation, and product classification. Frame-based and rule-based expert systems encode knowledge using fundamentally different models.
~0o45~ In the context of product configuration, the problem an expert system is supposed to solve is as follows: given a set of options {"questions" to be presented to the user), each of which has a set of legal attributes ("values" with which the user may answer the questions), how are the options/attributes themselves related to each other (which options/attributes remove or constrain away other options/attributes, Which options/attributes are 'interdependent', etc.).
~oo4s~ As an example, if the user has answered options A, 13, and C with attributes x, y, and z, the expert system must then determine what are now the legal attributes for some other option D. In order to do this, an expert system first has to encode the relationship between the options in some manner (i.e., represent the knowledge). Then, as the expert system is provided current choices as inputs in real _g_ time (i.e., "the user has answered options A, B, and C with attributes x, y, and z"), the system must now apply its encoded knowledge to the problem "what are the legal attributes for D" in order to supply the solution(s).
A rule-based expert system generally represents knowledge using a large collection of If Then-Else constructs (i.e., "If the user has answered option 'A' with attribute 'x', Then attribute 'y' is no longer available for option 'B', Else . . .").
This approach, however, is a unidirectional encoding: if the conditional portion (the user has answered option 'A' with attribute 'x') of the statement is true, the resultant portion must also be true (attribute 'y' is no longer available for option 'B'). The converse (if attribute 'y' is no longer available for option 'B', then the user has answered option 'A' with 'x') is not necessarily true, nor in general should it be.
However, a rule-based expert system reduires that the inverse rule must be written separately if it is deemed necessary. If the product knowledge being modeled is complex, the r°equired rules and inverse rules can grow into a very larger number. In addition, applying this type of knowledge representation to the problem "the user has answered options A, B, C with attributes x, y, z; now what are the legal attributes for this other option D?" involves using an interpreter or compiler that understands the rule syntax so as to apply the rules to the problem.
On the other hand, the frame-based Frame Engine 104 encodes knowledge in an entirely different manner that does not suffer from this "inverse rule"
problem. At its most fundamental level, Frame Engine 104 represents knowledge in a hierarchical tree-like structure. The nodes of the tree are generally called "frames"
(e.g., corresponding to product categories) and each node contains a collection of "slats" (e.g., corresponding to product features and options). A slot is a one-to-many - 1~ -relationship between an option and a subset of the legal values (e.g., attributes) for that option.
~0050~ Textually, a slot is represented as follows:
A= x, y, z where 'A' is an option, and 'x', 'y', axed 'z' are attributes fox option A.
X005 x~ In general, a frame contains multiple slots, and has child frames as well (because of the tree structure). Conceptually, all the slots in a frame "go together."
If at least one of the slots in a frame is found to be invalid (e.g., Slot "A
= x, y, z" is in a particular frame, but the user has answered 'A' with attribute 'w'), then the entire frame (along with all of its other slots and all of its child frames) is invalid.
Functionally, products and attributes in such a frame are removed from the configuration process.
Applying this knowledge representation to the problem "the user has answered options A, B, and C with attributes x, y, and z, now what are the legal attributes for this other option D" involves Frame Engine I04 first marking the appropriate portions of the tree invalid as the user supplies answers to options. Then, to actually provide an answer to the question "what are the legal attributes for some other option D," the engine will look for all the frames which have not been marked invalid and which reference 'D' (i.e., have a slot involving 'D') and then combine all the attributes found in these slots (eliminating any duplicates). At the conclusion of this process, the answer (in many cases, a mufti-faceted answer in texxns of associated data [a price, an image, a set of drawings, etc.]) is generated and displayed.
~oo5z~ In accordance with a preferred embodiment of the invention, a Product Knowledge Builder module may be provided for use in constructing, storing and interrelating data concerning products, components, configurations, etc.
to optimize the operation of Frame Engine I 04.
~0053~ The Product Knowledge Builder allows the entry of product knowledge in an intuitive hierarchical fashion. The knowledge is entered into a tree-like structure very similar to the Windows File Manager or Explorer. Once the product knowledge has been entered, this tool "builds" the knowledge into a single output file.
This process both compiles the knowledge into a hierarchical tree structure and then optimizes it. The output ale is then ready to be processed by Frame Engine 104.
~005~~ The following simple example will illustrate the differences between an If Then-Else rule based system and one utilizing Frame Engine 104 in accordance with a preferred embodiment of the invention:
~0055~ There are four people who are identified by a letter, color, and number:
Jim is A, Blue, and ~.
Ted is B, Red, and 2..
Randy is A, Red, and 4.
Roy is B, Blue, and 2.
~0056~ The first screen in an application would prompt the user fox choosing a letter. (As an additional requirement, the questions can be answered in any order, and the user might skip the first screen and come back to it later.) The If Then-Else rules to handle such optionlattribute pairs are as follows:
if Color has no answer and Number has no answer then:
Letter is A or B
else if Color has no answer then if Number is 3 or Number is ~1 then Letter is A
if Number is 2 then Letter is B
else if Number has no answer then Letter is A or B
else if Color is Blue and Number is 3 then Letter is A
else if Color is Red and Number is 2 then Letter is B
else if Color is Red and Number is 4 then Letter is A
else if Color is Blue and Number is 2 then Letter is B
X005 r~ Two more sets of rules will still have to be written for the Color screen and the Number screen. The difficulty of adding a new person to the data or, adding another class of question to determine the group's favorite fruit can easily be seen. It is also useful to remember that this sample data is intended to be a trivial example. In contrast, the Product Knowledge Builder would permit the entry of that same data as follows.
~oo5s~ After adding the four questions to the system, add the following compound slot:
A Blue 3 Jinn B Red 2 Ted A Red 4 Randy B Blue 2 R~y ~0050~ To add a new person, a new row is simply inserted, adding the new person's letter, color, number, and name. To add another question such as the group's favorite fruit, a new column is simply added to the slot, and a list of everyone's favorite fruit can be added.
While the actual algorithm for Frame Engine 104 as implemented is likely to be much more complex, the following illustration of the operation of Frame Engine 104 used to implement the above example may be useful:
In the beginning of a configuration session all frames are valid, and the example above has four frames, one for each row. When asked for the list of available answers for any question, the Frame Engine looks down the column for that question. If the row is valid, its answer is added. Accordingly, for the Letter question, Frame Engine 104 sees A, B, A, B. The duplicate answers are combined to arrive at A, B. Now suppose the user answers A. This means unless the frame has Letter = A, it is invalid. The second and fourth rows are thus invalid. Next the user is presented with the Color question. To ftnd the answers, search down the Color column; the result is Blue and Red for the available answers (Blue from the first row and Red from the third). The user picks Blue. This choice makes the second and third rows invalid.
Coo6z~ As a result, there is only one valid row left, the first row. The user has effectively finished the selection process by answering only two of the three questions.
Frame Engine 104 is particularly useful when applied to real-world, complex product knowledge challenges. Real-world product knowledge contains relationships between products, knowledge common among similar products, knowledge common among different products, and exceptions to all of the above.
The Product Knowledge Builder in accordance with a preferred embodiment contains constructs to handle all of these scenarios.
~0064~ An important relationship among products can be expressed as:
"Product A is a type of Product B" (e.g., a casement is a type of window, a car is a type of vehicle). This relationship is called inheritance. Inheritance is a parent to child relationship, but not in the traditional sense. In human beings, if a parent has a trait, the child may or may not share that trait (e.g., brown hair). In this form of knowledge inheritance, the child must inherit all traits. Inheritance is important, because it allows the software engineer to connbine all the identical traits for the children in one logical place: the parent. It is for this reason that the Product Knowledge Builder works in a tree-like fashion. Each frame is a parent with children, which in turn have their own children. For example, if there were a system for selecting groceries, the logical way to organize the data would look something like that shown in Fig. 31. The Product Knowledge Builder allows the construction of this tree with the result illustrated in Fig.
32.
Co0~5~ As illustrated, when the Bread frame r.s selected, there is a trait defined as bread. This means that all types of buns and loaves can be made out of White, Wheat, or Rye bread, because both Buns and Loaves inherit from Bread.
If any special types of Buns were defined by adding "children" to the Buns frame (i.e., hamburger or hot dog) these new types also inherit White, Wheat, or Rye.
Children inherit everything from their parents, grandparents, and great grandparents, all the way up the tree. In the future, if the store added Pumpernickel and carried it for all types of bread, such information could be added to the Bread frame. If the store offered Pumpernickel for Loaves only and not Buns, then Pumpernickel could be added to the Loaves frame. Without the power of inheritance, Pumpernickel would have to be manually added to every type of bread. There are some types of product knowledge that may be shared among different frames in the tree, but which cannot use inheritance.
In the groceries example, a trait of this sort would be packaging. Not all groceries come in packages, and sometimes the same kind of product might be available with or without packaging (far example, packaged bread versus bread from the deli). If packaging is available, there will be some product knowledge that applies to all packaging (e.g., servings per container). There is still a need to keep this type of knowledge in a single place for ease of maintenance, and this methodology as incorporated by the Product Knowledge Builder is called frame re-use. A frame can be defined by itself to represent such knowledge, which can then be added into the tree at whatever points are appropriate.
~0066~ In accordance with a preferred embodiment, although Frame Engine 104 is a frame-based inference engine, it also includes the ability to process data using rules files, making Frame Engine 144 more of a hybrid engine. It is foreseeable that some custom answers are more conveniently handled using rules files rather than building the product knowledge. A rules-based filtering methodology may be used, for example, for filtering output from Frame Engine 104 to comply with certain rules established for a particular product, component, configuration, project, or the like.
Similar filtering of unwanted answers, or inapplicable questions may be useful. Rules-based functionality may also be used to add special answers, perform calculations, generate user warnings, or any other special proves sing required for specific system implementations.
boos a~ In accordance with a preferred embodiment, Rules Engine 106 may be added to supplement the operation of Frame Engine 104. Rules Engine 106 is typically employed to handle special cases, exceptions, and functionality that are specific to a product line or product series. Rules Engine 106 may also be employed to perform all (or some of) the rules-based functionality discussed above) as utilized by Frame Engine 104.
Coo6s~ In accordance with a preferred embodiment, any number of additional modules may be added to serve a supportive and optional role (called on an "as-needed" basis). A Pricing Engine, for example, may be added that uses data from Frame Engine 104 and/or kules Engine 106 to generate prices. Price reports can be graphically generated and prices can be calculated and displayed to the user in multiple 17 _ currency types. A CAD Engine Module may be added to read CAD drawings and enable multiple CAD drawings to be displayed simultaneously, with separate components to be overlaid upon one another to form a complex illustration.
Specifically, the CAD Engine may handle the determination of which components need to be overlaid and may present a list of the files containing the required components to a CADView control (not shown), which may in turn read the AutoCAD files and display the components on the user interface. The CAD Engine may also print, copy or otherwise output the CAD files.
A system for custom configuration of an object or project, for example, may be added to allow an end user to customize characteristics of an object or project. Exemplary objects or projects include window or door grilles, construction projects, furniture, or window or door treatments. The characteristics of an object or project can include any customizable element or component (e.g., dimensions and location of elements or components, location of elements or components, materials, and color). The customization information can be entered using any known input mechanism. In accordance with a preferred embodiment, a graphical user interface may be used to define an area, and draw and modify features of the object or project. The user can add and delete elements or components, move existing or new elements or compnents and modify the characteristics of the elements and components. An "auto align" feature can provide constraints to prevent a user from drawing an invalid grille.
Other constraints can be provided to meet particular limitations of the product (e.g., maximum size, width, length, height).
Fig. 2 illustrates a configuration System 200 in accordance with a preferred embodiment of the invention. Specifically, System 200 may include a User Interface Subsystem 202, Data Analysis Subsystem 204, Graphics Formatting Output Subsystem 206, Configuration Subsystem 208, and Data Stoxage Subsystem 210.
boo r t~ User Interface Subsystem 202 enables the interaction between the user and the system. It may interact with any component of the system.
Graphics Formatting and Output Subsystem 206 performs calculations and preparations far the display of graphical and/or textual representations to the User Interface 202.
This subsystem may include a variety of graphical modules such as a Parametric Drawing Module, a Schematic Configurator, a CADControl/CADVLT Module, a Bid Quote Generation Module, a Specification Generator Module, etc.
Data Analysis Subsystem 204 accesses and processes data from the Data Storage Subsystem 210 and provides results to the Co;nfigurator Subsystem (or other modules as required). The Data Analysis Subsystem 204 may contain a variety of analytical and computational modules such as a Regular Expressions Engine, a Product Code Engine, a Pricing Engine, a Mulling Engine, etc.
Configurator Subsystem 208 (an example of which is shown in more detail in Fig. 1, as described above) processes questions presented to the user and the answers received from fhe user. Based on the data in the Data Storage Subsystem 2I0 and the established data relationships, the Configurator 208 builds the product configuration. The Data Storage Subsystem 210 may serve as the data repository fox the collective knowledge of the system. Product knowledge and pricing data may be stored in Data Storage Subsystem 210 to be used by the various modules. The Data Storage Subsystem 210 may include a variety of memory modules such as a Repository .. 19 Module, a Pacifier Module, a Buffer Module, an hr~port/E~cport Module, a Preferences Module, etc. The Data Storage Subsystem 210 may also store the series of questions to be selected (e.g., by Frame Engine 104, by Rules Engine l Ot~, etc.) for output to the user interface in response to configuration data input from the user interface.
The Parametric Drawing Engine that may be added to the system takes descriptions of configured products, and produces an accurate representation of the product. As an example, the parameters used as input data descriptions can include the width or height of a window, or the existence of grilles. Frorn these descriptive parameters, this module will generate a drawing; (e.g., an elevation) or other dimensional product aspect for review by the user (such drawings can be converted to CAD format at the user's option).
Coo75~ The Parametric Drawing Engine can also export its drawings in other for use in other applications (e.g., AutoCAD, in the event that the parametric drawing will be used by an architect). The Parametric Drawing Engine may also tie into other modules such as a Schematic Configurator. The Schematic Configurator is a user interface module and inference tool. Using the Schematic Configurator, the user can view a line drawing representing a configured product (e.g., window) on the user interface, and add other units to the product. Thus, the end user might start out with a single unit and he/she might then add two flanking windows, one on either side of the product. The user can designate which to sides to add windows and can even add other product types, such as a round-top window above. The Schematic Configurator can interface with the Frame Engine 144, seeking matching components to the previously selected configuration. Frarr~e Engine 104 will match appropriate products between the two modules based on any number of product attributes and parameters.
In a preferred embodiment, the Parametric Drawing Engine provides illustrations of a product (e.g., window, door, hubcap). The illustrations comprise multiple elements arranged to depict an object conf guration. A user may desire to change the initial configuration of an object in order to customize, for example, the size and shape of an element or a series of elements. For example, a user may prefer to increase the overall size of a window frame element. Preferably, the Parametric Drawing Engine may determine and display corresponding modifications of the remaining elements such that the relative connections of the modified element to the remaining elements remains the same and the product complies with the design rules or other requirements of a vendor or manufacturer. Preferably, a modification to a first element automatically causes the Parametric Drawings Engine to determine and display modifications to the remaining elements of an ilhastration such that a user can immediately view the modified image. In another embodiment, a user can manually overnde a corresponding change to an element. A user ynay supply custom rules which permit a non-proportional change in a corresponding element. For example, a user can determine than a 2X increase in length of element A will result in a 4X
increase in element B.
boo r i~ In a preferred embodiment, a change in an attribute of an element (e.g., color, material, textured can cause a Parametric Drawing Engine to determine and display a corresponding change in the same or a different attribute of some or all of the remaining elements. For example, a user can modify the color of a muntin in a window grille to red and cause a corresponding change in color to red for some or all of the remaining muntins in the window grille.
In accordance with another preferred embodiment, the Parametric Drawing Engine provides rules which constrain or restrict the user's ability to make modifications to elements of the illustrations. For example, a product manufacture may only be able to supply window frames of a maximum size (e.g., 5 feet by 10 feet). If a user creates an illustration having a window of, for example, 6 feet by 11 feet, the Parametric Drawing Engine constrains the illustration such that the maximum dimensions depicted are 5 feet by 10 feet. Thus, the user is provided with an illustration that does not violate the rules or constraints of the marmfacturer or vendor of a product.
The rules may optionally apply to all or some of the elements of an illustration of an object. Application of the rules or constraints to an illustration is preferably automated such that violation of a rule or constraint does not display the illustration in violation of such rule or constraint to the user. In another embodiment, a user may manually override a rule or a set of rules.
Coo i 9~ In one preferred embodiment, the constraints or rules are provided by one or more manufacturers or vendors and integrated in the Parametric Drawing Engine. Alternatively, the constraints or rules may be maintained in a different module (e.g., rules engine 106 (Fig. 1)), on a local or remote network/server, or obtained via the Internet or an Intranet from a central Web site or directly from a manufacturer or vendor of an object or product.
Cooso~ Preferably, the user can modify all or some of the elements of an illustration. The term "modify" refers to the ability to change or alter a feature of an element (e.g., shape, length, width, height). The feature of an element that is modified is preferably related to another element such that a modification to one element would cause the Parametric Drawing Engine to determine and display the change in the relationship of the modified element to another element. For example, the user may desire to maintain a definite relationship between the lengfh of a muntin and the width of a window frame. If the length of the muntin is increased, it may become larger than the width of a window frame and therefore the relationship of the length of the muntin to the width of the window frame would be changed. In accordance with a preferred embodiment, the change in length of the exemplary muntin would cause the Parametric Drawing Engine to determine a corresponding change in width of the window frame such that the desired relationship between the length of the muntin and the width of the window frame is maintained.
boos y It is to be understood that the elements of an illustration may be of any shape (e.g., arcs, lines, circle, squares, triangles), size, dimension suitable for the object to be configured. One of skill in the art would appreciate that the preferred customization methods and systems can be applied to the custom configuration of any object or product.
~oos2~ Preferred embodiments of the invention are directed to methods of configuring an object design and articles of manufacture including a machine-readable storage medium having stored therein indicia of a plurality of machine-executable control program steps for configuring a customized object design. These embodiments are inherent or apparent to one of skill in the art fro:rn the description of the systems herein.
~oos~~ A Preferences Module may also be included in the system. A
Preferences Module allows the user to define a set of preferred answers for questions applicable to products in a project. In a preferred embodiment, the set of preferred answers may be based on user selected preferences, regional specification preferences, manufacturer compatibility preferences, etc. As an example, the user can initiate a project and choose "white clad" windows. The user can then set "white clad" as a preference for that entire project. As a result, for every item that the user configures for the project, the system will reference the Preferences Module and will automatically retrieve the preference values by default and override other items. The Preferences Module can also automatically inform a user that the selected preference is unavailable for a given product during the configuration of that product.
E.~Al~~IPLES
~oos~~ As an illustration of exemplary commercial embodiments of the invention, the following descriptions of the embodiments of invention as variously implemented in different iterations of a system for (and method o~ configuring window products is provided below and in the attached Appendix, which is incorporated herein by reference in its entirety.
Coos5~ In this exemplary embodiment, the system can display the entire structure of product knowledge associated with the desired product or product line. In particular, two "lists" are displayed in the primary product selection and configuration screen shown in Fig. 3: one for questions I 0, and one for answers 12.
Coo~6~ In a typical usage scenario, the user starts at the beginning of a question list, the first of which may present the user with a certain product type, such as a window or a door. As questions 10 are answered by the user, other questions 10 that no longer apply are automatically removed from the; list. In some cases, answering questions I O will actually add new questions 10 to the list or will automatically answer other questions 10. Because the entire product knowledge structure is always accessible, the user can answer questions 10 in whatever order is desired, although the default order is generally designed to reflect the flow of a typical product configuration.
If the user selects "window," the configuration system directs questions to develop answers pertinent to window configurations only.
CooB i~ Referring to Fig. 4, preferred answers l~, or Preferences, are pre-determined questions 10/answer 12 pairs consisting of any combination of product attributes which will be used repeatedly. Preference<.~ may 'be useful to save time on large projects or jobs, and a preference set 16 is typically determined for specific product attributes that fit a particular purpose. Once a pref<;rence set 16 is defined, it can be used repeatedly thereafter to save time in the product selection process. If the user activates Preferences, the system will automatically select the question 10/answer 12 pairs in the preference set 16 and apply them to the product being configured at runtime. Any number of question I O/answer 12 pairs can be set up as preferred values.
Libraries of Preferences may be saved to f Ies for use with repeat customers or recurring product requests.
Referring to Fig. 5, Standard Answers 18 is a feature providing the ability to display to the user the "standard" answer 12 for a particular product attribute.
Standard Answers 18 can .also be automatically selected similar to Preferences and are flexible enough to be changed by the user during the conf guration process (i.e., Standard Answers can be applied to some products in a project but not to others). If the user activates Standard Answers 18, the system will automatically answer l~
al1 questions 10, which have answers def ned as "standard" and apply them to the product being configured at runtime.
- 2~ -Referring now to Fig. 6, Graphic Selection is a feature which provides a graphic representation 20 of attributes (if applicable), which can represent an answer more clearly 12 than a text description. This feature is particularly useful for the illustration of attributes that would otherwise require either extensive text description or which can be better shown with an image 22. The Graphic Selection array can accommodate a range of static or "animated" electronic representations, including portable network files, metafiles, bitmaps, or other graphic representations.
~oooo~ The system also provides Custom Answers. Custom Answers is a feature designed to accommodate direct user input fbr an answer 12 for which there exists one of the following conditions: 1) an acceptable range of incremental values (e.g., dimensional variables); 2) values defined as "other than the values presented"
{e.g., custom operation of a twin casement window); or 3) values that are completely undefined. When a particular question 10 permits custom value answers 12, the Custom Answers box can automatically appear. The system allows the user to enter custom values for dimensional attributes such as unit dimension width, unit dimension height, etc.
y Ultimately, the questions 10 and answers 12 guide the user to a desired configured product. From that point, the invention can accurately calculate how much the configured product is going to cost. In addition., the consumer can obtain detailed product information, including specifications that follow standard formats for engineering and architecture.
Referring to Fig. 8, Standard P;~rametnc Drawings 28 can be generated based on the dimensions of a manufacturer's existing products.
1'arametric drawings 28 can apply to any product where "views" (e.g., front, top, side) of the 2~ -product are defined as product attributes. Custoan Parametric Drawings 28 can also be generated in accordance with the preferred embodiment of the invention if the value ranges) for the drawings of the applicable products carp be defined.
The Schematic Configurator (SC), is used. in this example as a tool designed to allow the usey° to manipulate parametric drawings 28 of products. Using "Drag and Drop" techniques, the user can design and view a variety of product elevations, manipulate individual components, and graphically edit composite unit designs. The SC module can also be used to select arid configure products, as well as manipulate, scale and assemble both pre-defined anal custom shapes and sizes into composite units. In one e~~nbodiment, the SC is used to customize characteristics of a window or door grille (e.g., dimensions and location of muntins, locations of hubs, materials, and color). The user can add and delete muntins, move existing or new muntins and modify the dimensions (e.g., width, length, height), materials (e.g., wood, plastic, metal), color, and texture). The SC also allows the elevation designs to be printed, copied and exported for use in other software applications (e.g., CAD). All pricing information driven by the manipulation of product components may be tracked including mulling charges, custom grille pattern designs, grille types, etc.
As a unit is configured, the SC gathers the dimensional information and processes it to display an elevation. When a unit configuration is complete, it can be viewed in the SC
where any necessary changes can be made (dimensional changes as well as other attribute changes) and other units can be added.
Coo9 t~~ Referring to Fig. 9, composites of products can be created.
Composite unit design, assembly and verification are controlled through the SC. When _27_ more than one single unit 30 is placed together in the SC, a Custom Composite Unit 32 is created. This placement can be verified by clicking the Mull button 34.
~0095~ Other products can be added to a product already displayed in the SC
with three different methods: 1) the Copy function, which creates an exact copy of the selected item; 2) the 101ew Component function, which calls the Selection and Configuration display (Fig. 3) for the configuration of an entirely new unit to be added to the existing unit; and 3) the Design option 38. described below.
Coo96~ The Design option 38 in the SC allows the user to add component units 30 that can be mulled 34 to the existing components. As an example, if the user wants to add a round top to an existing rectangular unit 30, the Design option 38 will list all units 30 that are available. The user chooses "Add Round Top" from the list and the system will add the nearest sized round top to the existing unit 30 while simultaneously matching all other relevant attributes, If a new component unit 30 is added which contains attributes not applicable to the base unit 30, the system will present the user with only those questions 10 specifically applicable to the new component and which require the user's response. The Mull option allows the user to verify that mulling of two or more units 30 can be done. Notification of shop, Field or Invalid mull (depending on the units 30 that have been selected) will be presented to the user with a pop-up or "soft" warning display.
boos ~~ Referring now to Fig. 10, this exemplary embodiment of the invention can incorporate a Catalog Page feature. The Catalog Page feature displays dimensional attributes whose ranges can be shown in tabular form. Its format is derived from printed product information sources that displ'.ay such dimensional variables.
Catalog Page Drawings 40 provide the user with gr,~phic parametric representations - 2 c~ -using the widths and heights of the class of products being selected. Unit 30 heights 42 will be displayed down the side of the selection box an;d the widths 44 will be across the top of the array. This feature clarifies dimensional information presented in text form and provides visual feedback with respect to the scale and size of selected products.
Referring to Fig. ll, product information can be displayed in a DataGrid. The DataGrid is a tool that allows the user to view a table of answers 10 for a list of questions 12. Similar in form to catalog pages, DataGrids reflect tabular displays of product attributes found in printed catalol;s and price books. In this view the questions 12 are presented across the top of the I3ataGrid instead of down the left hand side of the page. The DataGrid is useful where product questions 10 and answers 12 have a one-to-one correspondence.
Referring to Fig. 12, a Custom Shakes Editor allows the user to size custom shaped products. The example shown in Fig. 10 directly applies to windows and doors, but may apply to any customizable product. The Editor is automatically opened when a custom shape product is selected as a product category. The Custom Shapes Editor is generally used in conjunction with Catalog Pages to select the general product shape (see Fig. 10) and permits the user to select and specify any combination of dimensional parameters 48 within the engineering; limits set by the manufacturer.
The Editor also displays a parametric representation of the custom product for inclusion on quotations. All pricing formulas relating to, for example, glass size, glass area, grille patterns and types, frame side lengths, and other parameters 48, can be driven with the Custom Shape Editor.
Referring to Fig. 13, this exemplary embodiment of the invention utilizes data tables and formulas to look up, calculate and store base prices 50 plus add-on prices 52 of available product options. The total price 53 can include project-based price adjustments if applicable. Pricing of products utilizes a combination of values accessed from a table and enhanced by formulas, which calculate up charges;
add-ons and other product options. These methodologies allow the lookup, calculation and storage of unit base prices 50 plus prices 52 for all applicable product features and add-ons. Project-based price adjustments are also available for customer discounts, promotions and competitive bidding situations.
~00101~ An accessories module is added containing product accessories S4 supplied by the manufacturer in conjunction with its primary products. The accessories module can include lineal products (e.g., extension jambs, molding, mull covers, etc.) as well as individual or boxed parts and components (handle;>, hinges, operators, etc.).
This module can also be used to add accessories 54 to a quote that are purchased from other sources. Such additional items are added by entering text descriptions in a text box along with the prices for such items. All accessories 54 entered through the module appear on the quote as individual line items. Functionality can also be included to price accessories that are configurable (i.e., items which are defined by attributes displayed and represented in the Selection and Configuration display (Fig. 3). These accessories or replacement items require product knowledge description and definition similar to primary products and present the user with relevant duestions and answers as already described.
Referring to Fig. 15, this exemplary embodiment of the invention provides a function to enable line item discounting for products, product lines and related attributes. Line item discounting can be applied to specific configured units;
specific attributes (e.g., screens, grilles, etc.) or configured composite units. All of the line items for which discounting is available are displayed in the Line Item Adjust Box 56 lists. The Line Item Adjust box lists all applicable: items, and price adjustment may be applied as follows: 1) none; 2) by multiplier; 3) by a flat fee; or 4) percentage (%).
Using the price adjust function, additional price adjustments can be applied to specific clients, individual units within a project, ir~.dividual projects, or to groups of projects.
~00~03~ Referring to Fig. 16, this exemplary embodiment of the invention enables production of a variety of outputs, one of whit%h can be an order form as shown.
The client manufacturer can derive the format, content and design of the order form from an existing form in use. Order forms can contain all codes 26 necessary to build a specified product as well as pricing and dealer/distributor information. The order form is a tabular view of the information needed to build the set of products defined by a particular project. Also included is an "electronic order form" mechanism through which comma or tab delimited ASCII files can be created and. exported. These files can be imported by other applications and may be designed to meet the needs of each manufacturer.
~00104~ Referring to Fig. 17, this exemplary embodiment of the invention enables the production of quotes, whiclu include scaled elevation drawings of the product, reflecting the parametric drawings 28 generated during product selection and the use of the Schematic Configurator module. Also included is a list of all options chosen, the unit base price 50, add-on prices 52 for non-standard choices, total price S3 for each product, and a grand total 60 of all products in. the project.
~00105~ Referring to Fig. 18, this exemplary embodiment of the invention can provide a Schedule Generator. The Schedule Generator can build a product schedule 62, listing all products included in a project, amd relevant attributes assigned to each product, plus the system assigned. product code 26. The Schedule 62 is constructed as products are selected and constitutes a valuable tool for use by sales people as well as design and construction professionals, providing a full view of the products to be used in a construction project. When an attribute of any unit 30 is changed, the change is reflected on the Schedule 62 as well. The Schedule 62 can be displayed on-screen or printed as hard copy.
~oolo~a Referring to Fig. 19, the exemplary embodiment of the invention enables generation of product specifications 64. After a product has been configured and the user requests a technical specification 64 for that product, the Specification Generator gathers all relevant product information and produces a valid proprietary specification which confoxms to the Construction Specifications Institute (CSI) three part section format. The Specification Generator works from content-complete template specifications supplied by the manufacturer. The system can produce unique customized specifications 64 for each product in a projiect or (as an additional option) a single specification 64 for multiple products.
boo to a ~ Referring to Fig. 20, this exemplary embodiment of the invention allows the user to view, print, copy, and export Auto(JAD drawing files as DXF
files, compatible with a number of CAD syste,ns under the Windows environment. This embodiment of the invention has the ability to do multii-layered component assembly of DWG files. Component assembly is the process of displaying several DWG files at once, which overlay one another to compose an entire detail. The image 66 displayed as a section detail is actually made from three to five aeparate sub-assembly drawings, and several cross section details can be displayed simultaneously. The drawings included are based on the attributes selected during product selection and configuration.
_32_ The system can export D'WG files to a DXF formatted file. This feature allows the editing of exported drawings using a CAD system that accepts DXF files. The system also will allow the user to print drawing details.
~0010~~ Referring to Fig. 21, this exemplary embodiment can include a project database, which maintains and tracks information that is unique to a particular project. The project database contains the sales or customer service representative's name 68, relevant customer information 70 and project information 72 for that particular project. When a new project is created, information from associated databases for sales-representatives and customers :is available through drop-down boxes. Fields for Terms of Payment, PO Number, Price Multiplier, and Project name are available, as well as the Line Item Adjust function (Fig. 15). Projects are categorized as Current or Archived and can be moved between these categories as necessary. When a Project is highlighted in the Project window, all units in that project are displayed. Interfaces to contact management systems, sales systems and sales force automation systems can also be engineered on request. The system allows for record additions, changes to existing records, deletion of records, and duplication of records.
~00109~ Referring to Fig. 22, system can al;>o include a Sales-Representative database, which controls all information for sales-representatives. These items are ID#
76, Name 78, Territory 80, phone number 82 and fax number 84. The system allows for record additions, changes to existing records, deletion of records, and duplication of records. The Customer list for each sales-representative can be viewed by selecting a specific sales-representative name in the listing.
fool toy Referring to Fig. 23, this exemplary embodiment of the invention can also include a Customer database to control all information for customers.
These items _3~_ are ID# 76a, Name 78a, separate billing 80a and shipping Addresses, Contact name 78b, Customer type 86, and miscellaneous defaults. The system allows for record additions, changes to existing records, deletion of records and duplication of records.
Customers are displayed in a listing which includes the sales-representative for each customer.
X0011 y This exemplary embodiment of the invention can also include an Import/Export function set which permits a project t;o be built on one computer and exported into a file format, which can be imported into the same application on another computer (provided the product knowledge sets are exactly the same). This function set allows a project to be constructed by a customer and then imported by a dealer, distributor or sales representative for quote generation, final order pricing adjustment and negotiation. Similarly, projects can be shared between dealers, sales-people and customer service personnel.
~oo~ 1z~ This ex~,~rnplary embodiment of the invention also includes a System Help File. The System Help File can offer an on-line condensed version of the full user documentation typically supplied with the system. Tlhe System Help File can provide easily accessible information to assist in the operation of the system. The System Help File can be configured to be context-sensitive so that the Help topics available are driven by the user's position in the system.
Refernn,g to Fig. 24, this exemplary embodiment of the invention can include a Product Line Review function. The Product Line Review offers manufacturer and product line information 88, as well as general industry information 88, as it relates to the manufacturer's product line. Product Line Review is typically derived from each manufacturer's sales and marketing catalog(s), promotional b~°ochures and other printed materials. Product Line Review can include full color or black & white scanned images 90, product features and benefits (as text descriptions), line drawings, technical illustrations and other appropriate product information., X0011-~~ Referring to Fig. 25, this exemplary embodiment of the invention can incorporate an Interactive Tutor. The Interactive Tutor is a series of help screens 92 referenced to specific system features and functions. When the Show Messages (or Tutor) option is checked, the system will present messages on the screen to assist the user with the next step. This option is turned on or off by either selecting the Tutor button or by opening the Tutor Menu and clicking Show Messages so that the check is removed.
~00115~ Audio/Visual Presentations can also be included as an integral part of the exemplary system. Sound, video or both media combined can be utilized to present, promote or enhance the client company and its products. Examples of this kind of information include videos of manufacturing processes, product installation procedures, or sales and marketing presentations. Audio information can include theme music or sound tracks, which complement video information.
boo I 16~ This exemplary embodiment of the invention can also include a Product Information Module. The Product Information module allows the user to view various catalogs as a product is specified. combining the expert system with the Adobe Acrobat Reader, for example, allows users access to a range of supporting product information. The printed catalogs from which this information is derived are more graphically oriented than CAD drawings and specifications. Generally, the format of this kind of material is PDF files.
Referring now to Fig. 26, flow clhart 300 illustrates how another exemplary implementation of a preferred embodiment of the invention can be employed by a sales-representative/user in ordering sales for customers/users in the field. After the program is started at Step 302, the sales-representative will call on new or existing customers to investigate prospective business. The sales representative can then run the system and start a project. At step 304, the representative would initiate the project (Step 304) and a list of all projects would be displayed. The representative can then initiate a new project 308. Alternatively, the system could remain in a "wait"
mode 306 until the project button is initiated. Once the project button is initiated, the sales-representative can then type in the client's name and address, and other pertinent information at step 310. Once the client information is entered then the user is presented with a configuration screen 312 that can be used to begin adding product information.
boo I 1 ~3~ The manner in which a product is entered consists of the user inputting into the system a request for a new "mark." A "mark" refers to a configured unit or product such as a window, door, or other assembly. The user can then select a product type, such as a window, at step 314. The user can then begin to configure a new mark and at that point is prompted to answer some questions about the product at step 315 such as the type, size, or style of window desired. The sales-representative/user can input the specific product information, for example, color options, glass type, etc. At step 318, the sales-representative can select a quantity of product for the project. As a result, the system will repeat (3~0) the same configuration for the number of windows entered in the (quantity data field.
~0011~~ At step 322, the user can create custom composite units. At this point, the user would enter the Schematic Configurator and choose the composite elements for the configurator to construct at step 324. Once the custom configuration is complete, or if the custom composite step is bypassed (323), the user can initiate a quote button at step 326, which enables the calculation of a price quote for the products currently defined by the project. The quote can contain individual descriptions of each product selected in preceding steps with all associated pricing, along with a drawing of each product with any custom composite units. Moreover, the information can be displayed, printed, presented or otherwise output togel;her or separately at step 328. At step 330, the system would provide a price total and a 9:otal quote for the project.
boo z ~o~ Fig. 27 illustrates another exemplary implementation of a preferred embodiment, in which a dealer distributor adds individual sales representatives to the database at step 402. Customer names will then be added at step 404. The system will then check whether all customers have been added at step 406. If not, then it will loop back to add more names at step 408. Once all customers have been added to the database at step 410, the system will query whether t:he same thing has been done for sales representatives at steps 412, 414, and 416. Once this data has been added, then the system will generate the customer database sales repar-t. Once completed, this program will end.
Another exemplary implementation of a preferred embodiment is shown in Fig. 28. Upon initiating a product customization, the user can create a project 450. A product can be selected 452 to be configured i:or that project. The product can be configured by accessing the Schematic Configurator 454 to create a custom composite product. This step 454 can be repeated 458 until all the products for a specific project have been configured at step 456. Upon completion of configuration of all products for the project 460, additional projects may be created by returning to step 450 (464). Once all projects have been created and alll products for these projects have been selected and configured 462, the user moves on 466 in the system by accessing the Generator for Output Reports 468, whereby schedules, CAD drawings, Technical Specification Sheets, ete. can be created as hard copies 470. After the generation of output reports, the user can export CAD Details to CAD software 472. before exiting the system, the user can transmit the project and all related information regarding the project to a dealer for a price quote 474, which can also be printed as a hard copy.
~oolz~~ Another exemplary implementation of a preferred embodiment is shown in ~'ig. 29. In this exemplary embodiment, a user/sales-representative can initiate configuration of products in at least three ways: by taking a Telephone Sales and Order Entry 480, by Receiving a printed order form 482, and by Importing electronic project CIE (or other text format) 484. (f a Printed order form is received 482, or Telephone Sales and Ordcr Entry is taken 480, the sales-representative proceeds to create or select the customer from the Customer Database 486. Next the sales-representative can Create o: Append a project for that customer 488. A desired product can be configured for that project 489. This step can be repeated 492 until all the desired products for that customer or customer's projf:ct have been configured. Once all the products have been configured 494, the sales-representative can decide whether or not all the projects have been added for that customer 496. If they have not 498, the sales-representative can return to step 488 and create or access additional projects. If all the projects have been attended to 500, the sales-representative can determine if all customers have been added. if additional customers need to be added to the system or accessed within the system, the sales-representative ca.n return 504 to step 486 to create new files or select customers from the database, and then repeat the aforementioned steps. After all customers have been attended to, the user can transmit a product code (e.g., End Item Code) to back-end manufacturing and/or ERP systems before exiting the system.
~ootz~~ If, as shown in Fig. 29, the user imports electronic Project CIP (or other text format), the user can access Integrated Manufacturihg Software and move on to determine if the Version Control (VC) Number is correct 506. If not, the user can verify by telephone at step 480, and progress therefrom throughout the system as discussed above. If the VC Number is correct 510, tlhe user can then add the order to any of the Sales Representative, Customer, Project, or Mark Databases 512.
Next the user/sales-representative can Transmit the End Item Code to the back-end manufacturing and/or ERP systems 514.
~oolz~~~ In accordance with a preferred emlbodiment, the functions, features and architectures described above can be part of a network available to enable business-to-business commerce over- the Internet. In accordance with a preferred embodiment of the invention, an Internet portal (and a corresponding method) is provided to be the center of a selected vertical market in a particular industry or collection of industries (e.g., fenestration, or windows and doors as exemplified above). The portal can be an Internet focal point for the participants in the vertical market. The portal can not only incorporate the configuration system described above for use by participants in the portal, but also can be a virtual space for industry news and information as well as a means for facilitating co7nmerce by and between the participating manufacturers, dealers, distributors, and retail customers making up the vertical market, as shown in -3~-Fig. 30. In a preferred embodiment, Web server software such as Sondware by EdgeNet Media, Inc., the details of which are incorporated herein by reference, may be used to implement the Internet portal.
~oom5~ The portal provides the central services for its participating members, providing news, advertisements, means for communication between members. The portal also provides a member-to-member commf;rce channel providing product offerings, configuration tools, ordering and purchasing mechanisms. Fees can be charged for membership to the portal, advertisements viewed or displayed on the portal, or as part of any member-to-member commerce transactions.
Coo 1 zoo The portal can be an authoritative point of information about a given product market or focused to a specific group within the vertical market. The software package creating the portal can be a suite of Web applications enabling the creation of e-commerce communities vfor business customers. Virtual communities can be created through this portal where customers within the vertical market can shop, learn, play and explore common interests. This portal can incorporate the configuration-related system described heretofore. The portal can be accessible to those with market-specific expertise, and in return for membership in the portal, the participants can provide much of the content themselves in the form of advertising, news, discussions, sales, etc. as shown in Fig. 30.
Coon s~ Figs. 33-51 illustrate another exemplary implementation of a preferred embodiment, in which a user can design or customize an element in the form of a grille for a window or door using a Parametric Drawing Engine or other module of the system. As shown in Fig. 33, user interface window 515 shows an illustration of a window frame 516 and a window grille 51 ~ having, for example, a circular muntin 520 and vertical muntin 521. A modification to window frame 516 which increases its length would cause corresponding modifications to the remaining elements (e.g., circular muntin 520 and vertical muntin 521j such that the relative connections of window frame 516 to circular muntin 520 and vertical muntin 521 remain the same.
For example, increasing the height of window frame :> 16 would cause a corresponding increase in the length of vertical muntin 521 and the circumference of circular muntin 520. Alternatively, a change in color of circular muntin 520 from white to black can cause a corresponding change in color of vertical muntin 521 from white to black.
~oolzg~ Figs. 34-35 illustrate an "auto align" feature in accordance with a preferred embodiment. Fig. 34. shows window grilles having vertical and horizontal muntins that are not spaced at equal intervals. Fig. 3 ~ shows alignment of the vertical and horizontal muntins after applying auto-alignment to the illustration such that the vertical and horizontal muntins are spaced at equal intervals. Optionally, the auto-align feature can be used to align any characteristic of are illustration (e.g., radii of hubs, position of groups of munt~ns and hubs, etc.).
~oolz~~ Referring to Figs. 36-37, the width of a muntin can be changed in accordance with a preferred embodiment. Fig. 36 slows a horizontal muntin before adjustment of its width. Fig. 37 shows the horizontal muntin after its width is increased. Optionally, the width of the remaining muntir~s could automatically be resized to the same width. Fig. 3~ shows a hub (grey) which is expanded to a larger size as shown in Fig. 39. In accordance with a preferred embodiment, the length of the muntins connected to the hub are proportionally reduced in length relative to the increased size of the hub.
Coo 1 ~o~ Referring to Figs. 40-41, a misaligned vertical muntin is aligned in accordance with a preferred embodiment. Fig. 40 shows a rrlisaligned vertical muntin.
In Fig. 41, the muntin is shown as aligned with the remaining vertical muntins.
Figs. 42-43 show the movement of a horizontal muntin along the sides of a window frame ire accordance with a preferred embodiment. Fig. 42 shows a horizontal muntin with its ends terminating at an initial position along the sides of a pentagon-shaped window frame. Fig. 43 shows the horizontal muntin maved upward.
In accordance with a preferred embodiment, the length of the horizontal muntin is proportionally reduced such that the ends of the horizontal muntin still terminate at the sides of the window frame.
Coo 1 ~z~ Figs. 44-~45 show the expansion of multiple elements in response to the movement of a vertical muntin in a "sticky" mov<~ment within a window frame in accordance with a preferred embodiment. Fig. 44 shows a gray vertical muntin and its relationship to other elements within a window frarrie. Fig. 45 shows the result of moving the vertical muntin toward the left side of the vrindow frame. In response to the movement of the vertical muntin, the system automatically adjusts the remaining elements to maintain their relative size, position, and symmetry within the window frame compared to the vertical muntin. For example, the length of the horizontal muntins increases in response to the movement of the vertical muntin. 'The right hand side vertical muntin is reduced in height to match the lf;ft hand side vertical muntin, and the right hand side vertical muntin is shifted to the right to maintain the symmetry about the middle of the window frame.
Cool~~~ Figs. 46-47 shows the movement of a horizontal "shoulder" muntin and corresponding modifications to muntins connected to the shoulder in accordance -4~-with a preferred embodiment. Fig. 46 shows an initial position of the shoulder muntin (gray) relative to muntins connected to the shoulder :muntin at a single point or node.
Fig. 47 shows that the length of the muntins connected to the shoulder muntin are automatically increased by the system as the shoulder muntin is moved toward the bottom of the window frame.
~001~ ~~ Fig. 48 shows the "nodes" or poinl;s which define the end points of elements of an illustration in accordance with a preferred embodiment.
~001;35~ Referring to Figs. 49-S 1, the ability of the system to permit an element to "follow" or not follow another element is illustrated in accordance with a preferred embodiment. Fig. 49 depicts a horizontal muntin (gray) attached to a vertical muntin at the midpoint of the horizontal muntin. Fig. 50 shows that the system automatically causes the vertical muntin to "follow" (i.e., increase in length) as the horizontal muntin is moved by the user to the top of the window frame. Fig. S
1 depicts another preferred embodiment where the vertical muntin does not follow as the horizontal muntin is moved by the user tow and the top of the window frame.
[oolss~ In accordance with a preferred embodiment of the invention, one or more processor-based systems are used to implement tlZe modules described or apparent from the description herein and to perform the functionality described (or inherent) herein. For each such system, one or more processors (e.g., central processing unit (CPU)) are provided for e.cecution of one or more computer programs stored on any (one or more) known recording mediums. The processors) perform, control, or at least inform the various processing steps performed by the system in sending and retrieving data to and from at least one user interface and/or neltwork. A user interface may be connected directly to a bus or remotely connected through a network (e.g., Internet).
_ ~.3 _ The network represents (wired or wireless) connection of two or more devices, whether directly or indirectly connected (e.g., directly coupling through cable, indirect coupling through one or more hubs or servers, whether the network is local to the processor-based system, geographically remote from system, or a distributed combination of local/remote network components).
~001~~~ Preferably, one or more of the modules are coupled (directly or indirectly) to one or more database structures for use iin supplying storage functionality for the modules in accordance with the operations described (or inherent}
herein. The database structures can take any form from an individual floppy disk drive, hard disk drive, CD-ROM, redundant array of independent devices (RAID} system, to a network of the same or other storage devices. As is well known in the art, the database structures may be physically connected within the same location, or have one or more structures remotely located in different locations. Each module may have dedicated or shared access to one or more database structures locally or remotely located from the module.
~ooi3s~ While preferred embodiments of the invention have peen described and illustrated, it should be apparent that many modifications to the embodiments and implementations of the invention can be made without departing from the spirit or scope of the invention. Although the configuration system (and corresponding method) has been specifically described in connection with the configuration of a window product, it should be apparent that the system (and method) can be applied to any product, service, or component that is to be designed or configured such as cabinets, rooms, houses, cars, landscape designs, clothing, etc.
- ~-4 -While the illustrated embodiments have been described utilizing Internet communications, it should be readily apparent that other communication systems or (wired/wireless) networks (e.g., intranets, private bulletin boards, individual Local or wide area networks, proprietary chat rooms, ICf~, IRC channels, instant messaging systems, etc.) using real-time or non-real-time systems in Lieu of or in addition to the disclosed Internet resources may also be utilized.
A Pricing Engine module could be added to the configuration system to generate pricing and cost information for individual products, components, projects, etc. both on a real-time, on-going basis, as the user interacts with the system, and also to provide total (or sub-total) pricing data for the configured product or project. The Pricing Engine may include bid and quote generation functionality to facilitate the production and transmission of bid/quotes by users to their ultimate customers. A
Product Code Engine {see Fig. 7) may be added to generate (and receive as inputs) codes {e.g., UPC, EIC, etc.) assigned by manufacturers, retailers, or other users, as well as by the system itself for use in processing data associated with a particular product, component, project, etc. The product codes may be used by other modules of the system (e.g., the Pricing Engine) to associate data (e.g., prices) directly with the product codes.
X0014 y A Communications module can be added to streamline the sales, order entry and manufacturing process: from transaction sites through the plant and to the job site. Thus, for example, the user, sales representative, or other individual can place an order of the configured product/service directly with the provider (e.g., manufacturer). The communication can be accomplished through any known means of communication (e.g., telephone, fax, e-mail, Internf;t, etc.j. The Communications 1.~5 module would provide the system with capability to transmit (e.g., fax) quotes to remote ordering locations.
A Specification Generator module may also be added to generate detailed specifications in textual and/or graphical format for the configured products/services, etc. T he specifications may be displayed, output, exported, or transmitted as desired by the user.
~001~3~ The modules described herein, particularly those illustrated or inherent in the instant disclosure, may be one or more hardware, software, or hybrid components residing in (or distributed among) one or more local or remote computer systems. Although the modules are shown or described as physically separated components, it should be readily apparent that the modules may be combined or further separated into a variety of different components, sharing different resources (including processing units, memory, clock devices, software routines, etc.) as required for the particular implementation of the embodiments disclosed herein. Indeed, even a single general purpose computer executing a eomputer program stored on an article of manufacture (e.g., recording medium) to produce the functionality and any other memory devices referred to herein may be utilized to implement the illustrated embodiments. User interface devices may be any device used to input and/or output information. The user interface device may be implemented as a graphical user interface (GUI) containing a display or the like, or may be a link to other user input/output devices known in the art. Discrete functionality of the system may be separated (logically or physically) to more efficiently operate the system.
Many of the fundamental data coordinating functions (e.g., functionality performed by Core 102) L~6 ..
may be separated into a Foundation-Level Tools Subsystem. This Subsystem may include a BB Assist Module to create BB structures and the like.
In addition, memory units described herein may be any one or more known storage devices (e.g., Random Access Memory (RAM), Read Only Memory (ROM), hard disk drive (HDD), floppy drive, zip drive, compact disk-ROM, DVD, bubble memory, etc.), and may also be one or more memory devices embedded within a processor, or shared with one or more of the other components.
Custom Grille Designer Design Documentation D~escriptir~
~curr~et Custom Grille Designer Last Revised: 12/10/03 Revisi~n H~st~ry Date Description e~luthor~s)Reviewed By 12/10103Edited for patent publishing from Don Dehm original Design Document.
--i .
~ ~_-.
lJse of this Document The master copy of this document resides in electranic format. Printed copies of this document are for convenience only. Verify that the revision of this printed document matches the current revision of the electronic master before use. Ownership of this document may be determined by viewing the electronic master.
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Inc. Page I
Custom Grille Designer Designs Do~umentatiori F
Table of Contents Revision History ................................................................. 1 1. System Overview...................................4 2. ~ocument Coverage..............................4 3. Units and Areas .....................................4 4. Segments................................................4 4.1 Lines ..................................................................... 4 4.2 Arcs and Ellipses................................................... 4 4.3 Hubs .....................................................................
5. Nodes......................................................4
6. Selection of a Segment...............,.........4
7. Adding Segments ..................................4 7.1 Adding a Line ......................................................_. 4 7.2 Adding an arc, ellipse, or hub ................................ 4
8. Moving a Segment.................................5 8.1 Moving a Line........................................................ 5 8.2 Moving an Arc or Hub............................................ 5
9. Default Movement Behavior.................5
10. Full Controlled Behavior.......................5
11. Sticky Behavior......................................5
12. Auto-Alignment......................................5
13. Other Drawing Toois .............................5 13.1 Make Horizontal .................................................... 5 13.2 Make Vertical ........................................................ 5
14. ~elJUgglng POlntS..................................6
15. Snapping ................................................6
16. When reciprocals also share the same Free Connection to a 3'd segment..................6 11. lfalidation................................................6 18. Zoom.......................................................6 Custom grille Description Document.DOC' ~ 2001-2002 BdgeNet, Inc. Page 2 "_a. -_ Custom Grille Designer Design Documentation Custom Grille Description Document.DOC ~ 2001-2002 ~dgeNet, Inc. Page 3 Custom Grille Designer Design Documentation Design Documentation 1. System Overview The Custom Grille Designer allows the end user to customize the look of their grille. The user can add and delete muntins and hubs, and move existing muntins. Auto aligning features aid this process.
The user can change certain properties of the grille from inside editor. Editable propertied include the grille material, and the width of an individual muntin. While the drawing is constructed, manufacturer supplied constraints help prevent the user from drawing an invalid grille.
When the drawing is done, the drawing is validated by the drawing engine for one last check with a rote-driven validation routine and priang specific to the manufacturer. The grille drawing is them saved on the mark and accessible by other parts of m2o via the "DrawDesign" field stored on the unit. More Information about this design is included later in this chapter.
2. ~ocument Coverage This document describes the use and behavior of the custan grille tool with emphasis on topics that are not covered in the Studio Training manual. The Custom Grille Designer chapter of the Studio Training Manual is an excellent source for further information.
3. Units and Areas ~ A unit is a single window. Multiple units can be in one configuration and are called custom composite units.
~ An area is the glass space where grilles can be drawn. For example, a casement will have one area, a douhle hung will have two. Each unit within a custom composite unit will have its own areas.
4. Segments Each line, arc, or hub is a segment. Each segment represents a munfin or a hub. Muntins are defined by the segment and a width. In addition, they can all be defined by the type of material their material composition.
4.1 ~IneS
Lines are defined by two endpoints 4.2 Arcs and Ellipses Arcs are defined by a center point, 2 radii, a starting point and an endpoint.
This can also be interpreted as a start angle and an end angle. An ellipse is an arc that has endpoints that meat. A circle is the same when both radii are identical.
4.3 Hubs A hub is defined the same as an ellipse. It is represented by a filled in arc>
or a pie shape.
5. Nodes A node is the endpoint of a segment or the center point of an arc, ellipse, or hub.
6. Selection of a Segment The selection will be graphically represented by dots on the end point of selected item, and a bounding rectangle for the arc with handles.
7. Adding Segments 7.1 Adding a Line Click on starting point. The line dynamically draws as you move the mouse to select an ending point.
The start point will remain fixed until the line is in place for the first time.
7.2 Adding an arc, ellipse, or hub ~ Click on center point.
o The next point defines the starting point of the are Custom Grille Description Document.DOC OO 2001-2002 l;dgeNet, Inc. Page 4 Custom Grille Designer Design Documentation ~ The third point defines the ending point of the arc.
Ail angles will be drawn in a count-clockwise direction.
8. MOVing a Segment 8.1 Moving a Line 8.1.1 Selecting the Midsection The entire line will move with the mouse. End points will adjust according to the definitions that are stored within them, affecting other tines that are attached to it.
8.1.2 Selecting an Endpoint The endpoint will detach itself from other connections and act as if il: was the second point when placing a line.
8.2 Moving an Arc or Hub ~ Selecting the arc will highlight it with handles around the bounding rectangle and highlight the center point ~ Selection a center point or midsection of the arc moves the entire arc.
~ Section of a side point moves the corresponding radius.
~ Selection of a comer point adjusts both radii simultaneously.
9. Default Movement Behavior When moving a segment, all segments attached to it by the endpoints will grow and shrink accordingly. When the segment itself is attached to other segments by the endpoints, it will also grow and shrink to fit in the space. This allows the user to very quickly move segments without having to strain over lining up the endpoints. Segments attached by several tiers are equally affected. For example, if line B is attached to line: A, and Pine C is attached to line B; when line A
moves, both B and C move along with it.
10. Full Controlled Behavior By using the controlled behavior mode the user can break free from alt attachments. This will keep other lines from following it, and allow the segment to detach itself from the segments it is connected to. This is done by holding down the control key while moving the segment.
11. Sticky Behavior Sticky behavior allows the user to maintain connections beiween endpoints while moving a segment. By default, an endpoint can be partly defined by a line it is connected to. Sticky behavior allows an endpoint to be defined by the intersection of two or more endpoints. This allows the user to do things such as move vertical muntins and have the hub automatically follow. To use sticky behavior, hold down the alt key and move the segments.
12. Auto-Alignment Auto alignment allows you to finely align grilles across several units. To use, place vertical and horizontal grilles across multiple units and align them as closely as possible with your eye. Next, select the area you wish to use as a control.
Then Gidc on the Auto-Atignment button. The c~iltes gross each of the units will align themselves using the control area as a base.
13. Other Drawing Tools 13.1 Make Fiarizontal This tool button will modify the selected line to be perfectly horizontal.
13.2 Make Vertical This tool button will modify the selected line to be perfectly horizontal.
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Inc. Page S
Custom Grille Designer Design Documentadion 14. Debugging Points It is important that each end of a grille is attached to another muntin or the edge of an area. If there is any difficulty in aligning endpoints the F12 key can be used to view the status of the endpoints, Green target shapes wilt appear over connected endpoints. Red target shapes will appear over endpoints that are not connected.
15. Snapping When segments are moved inside of an area, the endpaints will attempt'lo snap into place. They will first look for intersections or other nodes, and then they will look to attached themselves to the midsection of another segment.
1fi, illlhen reciprocals also share the same free connection to a 3'~
segment ~ When the 3'~ segment moves, both P2P connections cannot use the same logic.
One P2P must follow the 3'd segment as its Primary, and the other P2P must follow the intersection of the other two.
~ The following rule may help:
o The SP who comes in LAST, (by sliding along its primary before meeting the other point) takes this P2P connection as its new Primary, demoting its original Primary (SCT Free) to secondary.
o The other SP, the reciprocaP P2P takes the approaching SP as it's Secondary.
o This setup causes approaching and the approached 1'2Ps to be asymrraetrical, giving one dominant behavior.
The user can change certain properties of the grille from inside editor. Editable propertied include the grille material, and the width of an individual muntin. While the drawing is constructed, manufacturer supplied constraints help prevent the user from drawing an invalid grille.
When the drawing is done, the drawing is validated by the drawing engine for one last check with a rote-driven validation routine and priang specific to the manufacturer. The grille drawing is them saved on the mark and accessible by other parts of m2o via the "DrawDesign" field stored on the unit. More Information about this design is included later in this chapter.
2. ~ocument Coverage This document describes the use and behavior of the custan grille tool with emphasis on topics that are not covered in the Studio Training manual. The Custom Grille Designer chapter of the Studio Training Manual is an excellent source for further information.
3. Units and Areas ~ A unit is a single window. Multiple units can be in one configuration and are called custom composite units.
~ An area is the glass space where grilles can be drawn. For example, a casement will have one area, a douhle hung will have two. Each unit within a custom composite unit will have its own areas.
4. Segments Each line, arc, or hub is a segment. Each segment represents a munfin or a hub. Muntins are defined by the segment and a width. In addition, they can all be defined by the type of material their material composition.
4.1 ~IneS
Lines are defined by two endpoints 4.2 Arcs and Ellipses Arcs are defined by a center point, 2 radii, a starting point and an endpoint.
This can also be interpreted as a start angle and an end angle. An ellipse is an arc that has endpoints that meat. A circle is the same when both radii are identical.
4.3 Hubs A hub is defined the same as an ellipse. It is represented by a filled in arc>
or a pie shape.
5. Nodes A node is the endpoint of a segment or the center point of an arc, ellipse, or hub.
6. Selection of a Segment The selection will be graphically represented by dots on the end point of selected item, and a bounding rectangle for the arc with handles.
7. Adding Segments 7.1 Adding a Line Click on starting point. The line dynamically draws as you move the mouse to select an ending point.
The start point will remain fixed until the line is in place for the first time.
7.2 Adding an arc, ellipse, or hub ~ Click on center point.
o The next point defines the starting point of the are Custom Grille Description Document.DOC OO 2001-2002 l;dgeNet, Inc. Page 4 Custom Grille Designer Design Documentation ~ The third point defines the ending point of the arc.
Ail angles will be drawn in a count-clockwise direction.
8. MOVing a Segment 8.1 Moving a Line 8.1.1 Selecting the Midsection The entire line will move with the mouse. End points will adjust according to the definitions that are stored within them, affecting other tines that are attached to it.
8.1.2 Selecting an Endpoint The endpoint will detach itself from other connections and act as if il: was the second point when placing a line.
8.2 Moving an Arc or Hub ~ Selecting the arc will highlight it with handles around the bounding rectangle and highlight the center point ~ Selection a center point or midsection of the arc moves the entire arc.
~ Section of a side point moves the corresponding radius.
~ Selection of a comer point adjusts both radii simultaneously.
9. Default Movement Behavior When moving a segment, all segments attached to it by the endpoints will grow and shrink accordingly. When the segment itself is attached to other segments by the endpoints, it will also grow and shrink to fit in the space. This allows the user to very quickly move segments without having to strain over lining up the endpoints. Segments attached by several tiers are equally affected. For example, if line B is attached to line: A, and Pine C is attached to line B; when line A
moves, both B and C move along with it.
10. Full Controlled Behavior By using the controlled behavior mode the user can break free from alt attachments. This will keep other lines from following it, and allow the segment to detach itself from the segments it is connected to. This is done by holding down the control key while moving the segment.
11. Sticky Behavior Sticky behavior allows the user to maintain connections beiween endpoints while moving a segment. By default, an endpoint can be partly defined by a line it is connected to. Sticky behavior allows an endpoint to be defined by the intersection of two or more endpoints. This allows the user to do things such as move vertical muntins and have the hub automatically follow. To use sticky behavior, hold down the alt key and move the segments.
12. Auto-Alignment Auto alignment allows you to finely align grilles across several units. To use, place vertical and horizontal grilles across multiple units and align them as closely as possible with your eye. Next, select the area you wish to use as a control.
Then Gidc on the Auto-Atignment button. The c~iltes gross each of the units will align themselves using the control area as a base.
13. Other Drawing Tools 13.1 Make Fiarizontal This tool button will modify the selected line to be perfectly horizontal.
13.2 Make Vertical This tool button will modify the selected line to be perfectly horizontal.
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Inc. Page S
Custom Grille Designer Design Documentadion 14. Debugging Points It is important that each end of a grille is attached to another muntin or the edge of an area. If there is any difficulty in aligning endpoints the F12 key can be used to view the status of the endpoints, Green target shapes wilt appear over connected endpoints. Red target shapes will appear over endpoints that are not connected.
15. Snapping When segments are moved inside of an area, the endpaints will attempt'lo snap into place. They will first look for intersections or other nodes, and then they will look to attached themselves to the midsection of another segment.
1fi, illlhen reciprocals also share the same free connection to a 3'~
segment ~ When the 3'~ segment moves, both P2P connections cannot use the same logic.
One P2P must follow the 3'd segment as its Primary, and the other P2P must follow the intersection of the other two.
~ The following rule may help:
o The SP who comes in LAST, (by sliding along its primary before meeting the other point) takes this P2P connection as its new Primary, demoting its original Primary (SCT Free) to secondary.
o The other SP, the reciprocaP P2P takes the approaching SP as it's Secondary.
o This setup causes approaching and the approached 1'2Ps to be asymrraetrical, giving one dominant behavior.
17. Validation ~ Preemptive Validation: The user interface will canstrain the user from drawing elements that are not allowed, and illegal placing of elements.
~ Verification and Pricing will be done through the engine and analyze thc:
unit based on its light layout.
o Each lite is validated individually then each unit is validated.
~ The User interface will also check the existing drawing when the user makes a change that could affect the drawing constraints. For example, if the grille material is changed, the user interface will have to check itself against the new constraints.
~ All rules for valid alignment of a grille are customizable by the manufacturer. This is true for both preemptive validation and verification.
~ Verification and Pricing will be done through the engine and analyze thc:
unit based on its light layout.
o Each lite is validated individually then each unit is validated.
~ The User interface will also check the existing drawing when the user makes a change that could affect the drawing constraints. For example, if the grille material is changed, the user interface will have to check itself against the new constraints.
~ All rules for valid alignment of a grille are customizable by the manufacturer. This is true for both preemptive validation and verification.
18. Zoom ~ Minimum zoom or Base Zoom represents the scale required to fit the entire drawing in the viewing area.
This is called Zoom Factor 1. There will be no smaller zoom that renders the drawing any smaller than the viewing area allows.
~ Maximum Zoom is 4x the Precision factor. While lx the precision factor seems logical, as no canvas movement less than a canvas pixel will register a change, 4x allows a shaky hand to use 4 pixels as one.
(End of Document}
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Tnc. Page 6 m2o~
studia ~/ersion :~.
Training Da~un~r~ntation Custor~n Grille Designer edgenet' ~ 2002 Edgene~: Inc.
6 Cadillac Drive ~ Suite 260 Brentwood, TN 37027 Phone 615.371.3848 ~Fax 615.3713023 Toli Free 877.EDGENET
Table of Contents Overview ............................................................................,..
................................................................. z Setting up the Drawing Editor.................................................................,.......
..............................:....... 3 Launching from an Answer with aeditor.rla.....................................,..............................
.................. 4 Parametric Drawings and the Draw~g Editor.........................................................................
............. 4 Loading the Drawing....................................................,...................
........................................>............. 5 Available Grille materials with materials.rlz..................................................................
.................. 5 Constraining the Drawing with constrain.riz....................................,...........~.................
................... 5 Other Miscellaneous Cor~gurabie Settings ...............................................................................
...... 8 Validation and Pricing ...............................................................................
........"................................... 7 Shape Validation in validate.rlz...................................................................
...................................... 7 Unit Validation in oavaltdate.riz.................................................................
....................................... 7 DrawDesign and Available i~ormation............................,...:....................................
.,.............,............ 9 Retrieving the Prices lrom the Drawing.......................................................,................
...................... 10 _a.....'~ ~~ --a m 20 Studio Traininca - Custom Grilie Editor 1IE'1"111eV11 The Custom Grille Designer allows the end user to customize the look of their grille. The user can add and delete muntins and hubs, an<f move existing rnuntins. Auto aligning featur°es aid this process. The user can change certain properties of the grille from inside editor. Editable propertied include the grille material, and the width of an individual muntin. While the drawing is constructed, manufacturer supplied constraints help prevent the user from drawing an invalid grille. When the drawing is done, the drawing is validated by the drawing engine for one last check with a rule-driven validation routine and pricing specific to the manufacturer. The grille drawing is then saved on the mark and accessible by other parts of m2o via the "DrawDesign" field stored on the unit. More information about this design is included later in this chapter.
.~.
mF2~ Studio Training - Parametric Primitives Setting up Cust~m Grille aesigneir There are a few steps involved to integrate the Custom Grille Designer into your m2o system. The first is to make sure mZo can load the drawing engine. This is done in m:Zo.ini in t:he "Engines" category.
[Engines]
DrawEngine=draweng The next step is to make a button available in the mark editor to enter the Custom Grille Designer.
This is as simple as adding the button to the tool bar as shown below. Like other buttons, this is done in security.ini.
[MarkEditorToolBar]
customGriIlelBtn=i,proshape.xpm,Ctastomize Grille,Customize Grille,Customize Grille,createCustomDrawing(),singlemarkeditor Next, the drawing engine will need to know what question you are using for your grille material.
That is defined in manufact.ini as shown below.
[CustomGrilleTool]
GrilleMaterialQuestion=<your question name here for qrille material>
Finally, the drawing engine will need to know fram each parametr-ic drawing where in the drawing the grilles will be drawn. Much of this has already been done for you and needs only to be activated. Add the following directive to parmdraw.rul in the parmdraw directory of your manufacturer folder.
"DefineArea=1 "
This causes the parametric primitives to return the appropriate information the drawing engine wilt need to allow the end users to customize their grilles. For more information, see the "Parametric Drawing"
section in this chapter and the chapter on "Parametric Drawings".
There is also a variety of colar options that can ba set in m2o.ini. If no unit color is set, the unit will appear with the valid or invalid colors used in the parameMc drawings. If no area color is set, the areas will appear the same as the unit when they are not selected. The active area color is the highlight color that will surround the active area.
[DrawGrille]
UnitColor=black AreaColor=black ActiveAreaColor=blue To ensure the drawing is updated as the configuration changes, you will also need to call RefreshParametric() from postproc.riz. This shouid be done after any question is answered that has the capability to change the parametric drawing, and ultimately, the custom grille. For mare information, see the parametric drawing training manual.
Create a folder under your manufacture folder called "griiledit". This folder is where the drawing engine looks for the following rule files: materials.rul, validate,rul, oavalidate.rul, and constrain.rui 'rn;~~ Studio Training-Custom Grille Editor ~ N
Launching the Custom Grille Iseaiger by ans~nrering a question.
You can also invoke the Custom Grille Designer by answering a question in the mark editor. To enable this feature, return the directive "OpenCustomDrawing" from the aeditor.rul (markedit folder) file under the conditions you want Custom Grille Designer launched. It will most like~.y be on a "Custom"
answer to a grille type question.
if(Question -"GRILLE" && Answer =_ "Custom Grille"~
"OpenCustomDrawing"
Parametric Drawings and Custom Grille Designer The Custom Grille Designer needs some information from the parametric drawings to tell it wheee the user can draw. The information returned from these drawings includes an outline of those areas. This is done by using the Parametric Information system in the ParmDraw engine. See the Parametric Drawing chapter for more information about Parametric Informatioia.
To ensure accuracy of the custom drawing tool, you will need to make sure the sill and casement offsets are set correctly as per manufacturer specifications. There will also need to be more attention given to the calculations in the parametric primitive files. The engine relies on precise coordinates to calculate muntin intersections and lites. The manufacturer will rely on these calculations to create the custom grille.
"..,.
em ~'1~ Studio Training - Parametric Primitives LOadlng the! ~raenring Available Grllle materials with materials.rlz The draw grille interface allows the user to change the grille material. This rule file provides a list of grille materials that are available far the currently configured unit. This is done so by providing a vector of return strings to the engine. The entire unit is available to this rule file. A sample rule file my look something like this below.
if(PROD=="Double Hung"}
"3/4\" Wood"
"I/2\" GBG"
This rule file is also responsible for making sure a grille material question has an initial value. if the grille material question has no value at this time, materiais.rlz will need to answer the question. The grille tool will need to know what material it is working with.
There are also times when the user may have previously chosen not to have any grilles, and the appropriate questions and answers would have been constrained to a "Not Applicable" state. 1f this is the case, this rule file must re-answer the grille question with the appropriate value.
You may also have to concern yourself with other questions the specific to your manufacturer.
Constraining the Drawing with ~ons~rain.rlz 'This rule file assembles the constraints the user interface will use to determine what can be drawn and where it can be drawn. Some examples include minimum and maximum hub radii, allowing an arc or hub to be drawn at all, or allowing only certain radii muntins to be drawn.
'This is also where you can set the default width for the muntins. The function database will contain the most up-to-date list of the functions that are available. Most are listed below for your convenience. 'The entire: unit is available to you in this rule file.
~iub and Arc Radii There are two ways to constrain the end user to the drawing of hub and arc radii. The first is by available radii only, the second is by minimum and maximum values. Attempting to do both will cause an error. Use the functions below to constrain these values:
_AddAvailableRadius(Scalar r) _SetMinimumRadius(Scalar r) _SetMaximumRadius(Scalar r) _AddAvailableHubRadius(Scalar r) SetMinimumHubRadius(Scalar r) SetMaximuntHubRadius{Scalar r) Default Muntin Width The available muntin materials are set in materials.rul, but you will have to set a default width here.
GetSelectedMaterial() returns a string that will tell you what the selected material is.
SetDefaultWidth(Scalar w) tells the engine what the width of each muntin will be by default.
;m~OStudioTraining-Custom Grille Editor Allowing flubs and Other Elements The functions below were created to restrict or allow the user to add specific elements to the unit.
AllowLine(bool a) AllowArc(bool a) AllowHub(bool a) Other Misceiloneous ~onfigerrable Settings This section details any configurable settings that allow the user iatterface and operations to be controlled based on the business rules you need to apply.
Enabling Drawing Tools To turn off all ability to draw items in the custom grille tool addlmodify the following entry in manufact.ini. The default setting is to allow drawing new items. Setting it equal to zero removes the drawing toolbar, leaving only the ability to move and align existing grilles.
[CustomGrilleTool]
DrawingToolsEnabled=0 Setting Auto Alignment Seareh Range The auto and manual alignment features have a range it uses to determine how far away it should go to check for lines that it should bring into alignment. The default is one inch and the value is represented in inches. To customize fhis to your needs add/modify the following entry in manufact.ini.
[CustomGrilleToolJ
AutoAlignSearchRange=3 .,...
m2~ Studio Trainincr - Parametric Primitives ~hlidation and P'r°icing The graphical interface and the engine will do some validation but more :roust be done in rule files.
There are two basic rule files that are called to validate and price the custom grille. Validate,rlz is called for each individual life in the grille as it's scope, then oavalidate.rlz is called one last time for each unit in the drawing. The combination of these rule files allow the user to identify the properties of each life or the muntins to validate the drawing and calculate a price, See the description of the drawing design at the end of this chapter for details on what is available to the rule files.
Shape Validation in validate.rla This rule file is called for each life in the grille with this scope. Here, you have the opportunity to get each of the lites bounding sub-segments. From these, you can view the life's properties, compare angles of bounding muntins, or what°ver is needed to validate the shape. You can also place more information on the life for later retrieval, or in the case of an error, provife a custom error message to the end user. Some functions for the validation of the lites are added below. To see a complete list of functions from the drawing engine, see the function database. To see what fields are available for analysis, see the "DrawDesign" section of this chapter.
_SetValid(bool v) sets the life as either valid(true) or invalid(false}
_AddErrorMessage() sets what error message will be returned to the end user HasDanglers() returns true if there are any dangling muntins in the life. This is when a muntin protrudes into the lice and is not attached at at Least one end.
GetShapeSides() returns a BBStruct of the shapes bounding sides. Each side is a subsegment of a muntin and contains it's properties. The elements returned will be in order around the life, so that each segment is attached to the segments before and after it in the vector returned.
GetShapeWidth() and GetShapeHeight(} return scalars representing the shapes width and height, respectively. This function only returns a valid measurement if the lites composed of only horizontal and vertical muntins.
GetAngleBetweenElements(BBStruct muntinl, BBStxuct muntin2) returns the angle between two muntins. The muntins must be attached at one of the endpoints.
_SetShapeType(BBString type) sets the field "ShapeType" on the shape. This does not conflict with "BasicType" and allows you to identify the type of the shape in this validate.rul, then count and summarize in oavalidate.rul.
Unit Validation in oavalidate.rl=
This rule file allows you to have one last look at each life in each area of the unit. The unit's drawing is the scope of this iule file. In the case of composite units, tktis rule file will be called for each sub-component. Fmm this file, you can count each of the lites, examine other properties of those lites or the muntins, and provide line items for the grille that will be displayed in t:he drawing editor. You also have one last chance to validate or invalidate the entire unit and provide custom error messages to the end user. Far a detailed look at what elerr~ents are available, see the diagram at the end of this chapter.
This file is also responsible for answering the grille questions to the appropriate answers. For example, you may have to assign the answer of "Custom" to "GRILLE". Other questions, such as the life pattern question may have to be eonst~x:ained if it is not done in the product knowledge.
SetValid(bool v) sets the unit as either valid(true) or invalid(false}. If any lice or the unit is invalid, the entire unit will be invalid.
AddErrorMessage() sets what error message will be returned to the end user AddPriceItem(BBString desc, BBString val) adds a line item to the unit m2'O Studio Training - Custom Grille Editor GetSelectedMateriat(} returns a string that will tell you what the selected material is _..
'~ ~l O Studio Training - Parametric P~mitives DrawDesign and Available Information Each unit that has been configured with a custom grille will have the design on the BBStruct labeled "DrawDesign" as a BBStruct itself. These fields may be useful to you in your validation.
AreaList: a vectoz of BBStructs that represent each drawing area.
PriceDescriptions: a vector of strings, of the line item descriptions for the grille PriceValues: a vector of strings of the line item values for the grille Each area is also a BBStruct that contains the following useful fields:
ElementList: a vector of BBStructs that represent each muntin in the area ShapeList: a vector of BBStructs that represent each lite created by intersecting the muntins Each shape is a BBStruct that contains the following useful faelds:
BasicType: a string that will either be "Hub" or "Lite". A hub will be a solid hub and is priced differently than a regular lite.
ShapeType: a string that is set by the function _SetShapeType in the validate.r(z and can be observed later in oavalidate.rlz ElementList: a vector of BBStzucts that represent the segments that bound the lite. These segments axe only the subsegrnent portion of the muntin.
DanglerList: a vector of BBStructs that represent the sub-segment portion of the muntins that dangle into the lite.
Each element is a BBStruct chat contains the following useful fields:
StartPoint: a BBPoint that represents the starting point of the element Endpoint: a BBPoint that represents the end point of the element CenterPoint: a BBPoint that represents the center point of the element, if it is an arc RadiusWide: a BBFloat that represents the horizontal radius of the element, if it is an arc RadiusHigh: a BBFloat that represents the vertical radius of the element, if.it is an arc LineType: a BBString that will be one of the following values: "Horizontal", "Vertical", "Diagonal", or "Curvy"
Width: a BBFloat that represents the width of the muntin ,_ rn2O gt~io Training - Custom Grille Editor Retrieving the Prices from the Drawing When a drawing is complete, the information about the drawing will be encapsulated on a BBStruct kept on the unit. 'This Geld is described the "DxawDesign" section of this chapter. The most simple and easiest way to apply the pricing of the customized grille to the unit is to add the pricing tines through esab,rul. T'he following is a code fragment that will pull the pricing lines off of the "DrawDesign"
bbstruct and add the pricing to the pricing line items vecotor:
if(DrawDesign) assign(var(-drawDesign, "BBStruct"), DrawDesign) assign(var(_description, "String"), "Customized Grille") if(-drawDesign.Validate !_ "'True") assign( description, "~ description~ (Invalid l7esign)") assign(var(__pricel)ese, "Object°'), .drawDesign.PriceDescriptions) assign(var(-priceV'alues, "Object"), drawDesign.PriceValues) ifLpriceDese && ~riceValues) assign(var(-count, "Scalar"), sizesub(-priceDesc)) assign(var(_i, "Scalar"), 0}
while(-i < count) assign(var(-desc, "String"), subscript(_priceDesc, -i)) assign(var( value, "String"), subscript(-priceValues, i)) °°~-description~ : ~ desc~;~ value~;GRILLE "
assign( i, "~ i~+1") ..~..- '""
~ ~
~ ~ o O CD t~ ~' ~ ~ S~ _ '°°~ ~ CD ~ C
~ O-~ '~~~ ~ CD ~Q~ C3~~,~ ~~.tn.u~
--~ '~ .=~ ~ O ,.+ O CD G r-'- tD c:~ tt~ O ~~ ~ e~h ~ ~ ~ ~ t~ c0 ~ cD ~ can ~ c~...D cn ~- ~ ~ ~6 n N. o ~.~: o '~. G~
c~ ~ ~ o ~ ' c~
~.co < ~ ~ ~ =~. o = ~- ~ o. ~ su .r cn =' Q ~ ''°'''"Lt~ . CD ~' ~ O ~ ~'~ ~' ~ N
n ~ ~ ~ ~ ~ - t+ ~ ~' O ~ ~_ O ~ ~ O
CD ~ COD
N. ~ ~
~ ~ ~~ ~~rr.
. ~'~...'. tA.
h ~,'~~ C~
~ ~ "'!
~ ~5 ~D
m F
r . 1 boo m5~ The computer programs or algorithms described herein may easily be configured as one or more hardware modules, and the hardware modules shown may easily be configured as one or more software modules without departing from the invention. Accordingly, the invention is not limited by the foregoing description, drawings, or specific examples enumerated herein.
This is called Zoom Factor 1. There will be no smaller zoom that renders the drawing any smaller than the viewing area allows.
~ Maximum Zoom is 4x the Precision factor. While lx the precision factor seems logical, as no canvas movement less than a canvas pixel will register a change, 4x allows a shaky hand to use 4 pixels as one.
(End of Document}
Custom Grille Description Document.DOC ~ 2001-2002 EdgeNet, Tnc. Page 6 m2o~
studia ~/ersion :~.
Training Da~un~r~ntation Custor~n Grille Designer edgenet' ~ 2002 Edgene~: Inc.
6 Cadillac Drive ~ Suite 260 Brentwood, TN 37027 Phone 615.371.3848 ~Fax 615.3713023 Toli Free 877.EDGENET
Table of Contents Overview ............................................................................,..
................................................................. z Setting up the Drawing Editor.................................................................,.......
..............................:....... 3 Launching from an Answer with aeditor.rla.....................................,..............................
.................. 4 Parametric Drawings and the Draw~g Editor.........................................................................
............. 4 Loading the Drawing....................................................,...................
........................................>............. 5 Available Grille materials with materials.rlz..................................................................
.................. 5 Constraining the Drawing with constrain.riz....................................,...........~.................
................... 5 Other Miscellaneous Cor~gurabie Settings ...............................................................................
...... 8 Validation and Pricing ...............................................................................
........"................................... 7 Shape Validation in validate.rlz...................................................................
...................................... 7 Unit Validation in oavaltdate.riz.................................................................
....................................... 7 DrawDesign and Available i~ormation............................,...:....................................
.,.............,............ 9 Retrieving the Prices lrom the Drawing.......................................................,................
...................... 10 _a.....'~ ~~ --a m 20 Studio Traininca - Custom Grilie Editor 1IE'1"111eV11 The Custom Grille Designer allows the end user to customize the look of their grille. The user can add and delete muntins and hubs, an<f move existing rnuntins. Auto aligning featur°es aid this process. The user can change certain properties of the grille from inside editor. Editable propertied include the grille material, and the width of an individual muntin. While the drawing is constructed, manufacturer supplied constraints help prevent the user from drawing an invalid grille. When the drawing is done, the drawing is validated by the drawing engine for one last check with a rule-driven validation routine and pricing specific to the manufacturer. The grille drawing is then saved on the mark and accessible by other parts of m2o via the "DrawDesign" field stored on the unit. More information about this design is included later in this chapter.
.~.
mF2~ Studio Training - Parametric Primitives Setting up Cust~m Grille aesigneir There are a few steps involved to integrate the Custom Grille Designer into your m2o system. The first is to make sure mZo can load the drawing engine. This is done in m:Zo.ini in t:he "Engines" category.
[Engines]
DrawEngine=draweng The next step is to make a button available in the mark editor to enter the Custom Grille Designer.
This is as simple as adding the button to the tool bar as shown below. Like other buttons, this is done in security.ini.
[MarkEditorToolBar]
customGriIlelBtn=i,proshape.xpm,Ctastomize Grille,Customize Grille,Customize Grille,createCustomDrawing(),singlemarkeditor Next, the drawing engine will need to know what question you are using for your grille material.
That is defined in manufact.ini as shown below.
[CustomGrilleTool]
GrilleMaterialQuestion=<your question name here for qrille material>
Finally, the drawing engine will need to know fram each parametr-ic drawing where in the drawing the grilles will be drawn. Much of this has already been done for you and needs only to be activated. Add the following directive to parmdraw.rul in the parmdraw directory of your manufacturer folder.
"DefineArea=1 "
This causes the parametric primitives to return the appropriate information the drawing engine wilt need to allow the end users to customize their grilles. For more information, see the "Parametric Drawing"
section in this chapter and the chapter on "Parametric Drawings".
There is also a variety of colar options that can ba set in m2o.ini. If no unit color is set, the unit will appear with the valid or invalid colors used in the parameMc drawings. If no area color is set, the areas will appear the same as the unit when they are not selected. The active area color is the highlight color that will surround the active area.
[DrawGrille]
UnitColor=black AreaColor=black ActiveAreaColor=blue To ensure the drawing is updated as the configuration changes, you will also need to call RefreshParametric() from postproc.riz. This shouid be done after any question is answered that has the capability to change the parametric drawing, and ultimately, the custom grille. For mare information, see the parametric drawing training manual.
Create a folder under your manufacture folder called "griiledit". This folder is where the drawing engine looks for the following rule files: materials.rul, validate,rul, oavalidate.rul, and constrain.rui 'rn;~~ Studio Training-Custom Grille Editor ~ N
Launching the Custom Grille Iseaiger by ans~nrering a question.
You can also invoke the Custom Grille Designer by answering a question in the mark editor. To enable this feature, return the directive "OpenCustomDrawing" from the aeditor.rul (markedit folder) file under the conditions you want Custom Grille Designer launched. It will most like~.y be on a "Custom"
answer to a grille type question.
if(Question -"GRILLE" && Answer =_ "Custom Grille"~
"OpenCustomDrawing"
Parametric Drawings and Custom Grille Designer The Custom Grille Designer needs some information from the parametric drawings to tell it wheee the user can draw. The information returned from these drawings includes an outline of those areas. This is done by using the Parametric Information system in the ParmDraw engine. See the Parametric Drawing chapter for more information about Parametric Informatioia.
To ensure accuracy of the custom drawing tool, you will need to make sure the sill and casement offsets are set correctly as per manufacturer specifications. There will also need to be more attention given to the calculations in the parametric primitive files. The engine relies on precise coordinates to calculate muntin intersections and lites. The manufacturer will rely on these calculations to create the custom grille.
"..,.
em ~'1~ Studio Training - Parametric Primitives LOadlng the! ~raenring Available Grllle materials with materials.rlz The draw grille interface allows the user to change the grille material. This rule file provides a list of grille materials that are available far the currently configured unit. This is done so by providing a vector of return strings to the engine. The entire unit is available to this rule file. A sample rule file my look something like this below.
if(PROD=="Double Hung"}
"3/4\" Wood"
"I/2\" GBG"
This rule file is also responsible for making sure a grille material question has an initial value. if the grille material question has no value at this time, materiais.rlz will need to answer the question. The grille tool will need to know what material it is working with.
There are also times when the user may have previously chosen not to have any grilles, and the appropriate questions and answers would have been constrained to a "Not Applicable" state. 1f this is the case, this rule file must re-answer the grille question with the appropriate value.
You may also have to concern yourself with other questions the specific to your manufacturer.
Constraining the Drawing with ~ons~rain.rlz 'This rule file assembles the constraints the user interface will use to determine what can be drawn and where it can be drawn. Some examples include minimum and maximum hub radii, allowing an arc or hub to be drawn at all, or allowing only certain radii muntins to be drawn.
'This is also where you can set the default width for the muntins. The function database will contain the most up-to-date list of the functions that are available. Most are listed below for your convenience. 'The entire: unit is available to you in this rule file.
~iub and Arc Radii There are two ways to constrain the end user to the drawing of hub and arc radii. The first is by available radii only, the second is by minimum and maximum values. Attempting to do both will cause an error. Use the functions below to constrain these values:
_AddAvailableRadius(Scalar r) _SetMinimumRadius(Scalar r) _SetMaximumRadius(Scalar r) _AddAvailableHubRadius(Scalar r) SetMinimumHubRadius(Scalar r) SetMaximuntHubRadius{Scalar r) Default Muntin Width The available muntin materials are set in materials.rul, but you will have to set a default width here.
GetSelectedMaterial() returns a string that will tell you what the selected material is.
SetDefaultWidth(Scalar w) tells the engine what the width of each muntin will be by default.
;m~OStudioTraining-Custom Grille Editor Allowing flubs and Other Elements The functions below were created to restrict or allow the user to add specific elements to the unit.
AllowLine(bool a) AllowArc(bool a) AllowHub(bool a) Other Misceiloneous ~onfigerrable Settings This section details any configurable settings that allow the user iatterface and operations to be controlled based on the business rules you need to apply.
Enabling Drawing Tools To turn off all ability to draw items in the custom grille tool addlmodify the following entry in manufact.ini. The default setting is to allow drawing new items. Setting it equal to zero removes the drawing toolbar, leaving only the ability to move and align existing grilles.
[CustomGrilleTool]
DrawingToolsEnabled=0 Setting Auto Alignment Seareh Range The auto and manual alignment features have a range it uses to determine how far away it should go to check for lines that it should bring into alignment. The default is one inch and the value is represented in inches. To customize fhis to your needs add/modify the following entry in manufact.ini.
[CustomGrilleToolJ
AutoAlignSearchRange=3 .,...
m2~ Studio Trainincr - Parametric Primitives ~hlidation and P'r°icing The graphical interface and the engine will do some validation but more :roust be done in rule files.
There are two basic rule files that are called to validate and price the custom grille. Validate,rlz is called for each individual life in the grille as it's scope, then oavalidate.rlz is called one last time for each unit in the drawing. The combination of these rule files allow the user to identify the properties of each life or the muntins to validate the drawing and calculate a price, See the description of the drawing design at the end of this chapter for details on what is available to the rule files.
Shape Validation in validate.rla This rule file is called for each life in the grille with this scope. Here, you have the opportunity to get each of the lites bounding sub-segments. From these, you can view the life's properties, compare angles of bounding muntins, or what°ver is needed to validate the shape. You can also place more information on the life for later retrieval, or in the case of an error, provife a custom error message to the end user. Some functions for the validation of the lites are added below. To see a complete list of functions from the drawing engine, see the function database. To see what fields are available for analysis, see the "DrawDesign" section of this chapter.
_SetValid(bool v) sets the life as either valid(true) or invalid(false}
_AddErrorMessage() sets what error message will be returned to the end user HasDanglers() returns true if there are any dangling muntins in the life. This is when a muntin protrudes into the lice and is not attached at at Least one end.
GetShapeSides() returns a BBStruct of the shapes bounding sides. Each side is a subsegment of a muntin and contains it's properties. The elements returned will be in order around the life, so that each segment is attached to the segments before and after it in the vector returned.
GetShapeWidth() and GetShapeHeight(} return scalars representing the shapes width and height, respectively. This function only returns a valid measurement if the lites composed of only horizontal and vertical muntins.
GetAngleBetweenElements(BBStruct muntinl, BBStxuct muntin2) returns the angle between two muntins. The muntins must be attached at one of the endpoints.
_SetShapeType(BBString type) sets the field "ShapeType" on the shape. This does not conflict with "BasicType" and allows you to identify the type of the shape in this validate.rul, then count and summarize in oavalidate.rul.
Unit Validation in oavalidate.rl=
This rule file allows you to have one last look at each life in each area of the unit. The unit's drawing is the scope of this iule file. In the case of composite units, tktis rule file will be called for each sub-component. Fmm this file, you can count each of the lites, examine other properties of those lites or the muntins, and provide line items for the grille that will be displayed in t:he drawing editor. You also have one last chance to validate or invalidate the entire unit and provide custom error messages to the end user. Far a detailed look at what elerr~ents are available, see the diagram at the end of this chapter.
This file is also responsible for answering the grille questions to the appropriate answers. For example, you may have to assign the answer of "Custom" to "GRILLE". Other questions, such as the life pattern question may have to be eonst~x:ained if it is not done in the product knowledge.
SetValid(bool v) sets the unit as either valid(true) or invalid(false}. If any lice or the unit is invalid, the entire unit will be invalid.
AddErrorMessage() sets what error message will be returned to the end user AddPriceItem(BBString desc, BBString val) adds a line item to the unit m2'O Studio Training - Custom Grille Editor GetSelectedMateriat(} returns a string that will tell you what the selected material is _..
'~ ~l O Studio Training - Parametric P~mitives DrawDesign and Available Information Each unit that has been configured with a custom grille will have the design on the BBStruct labeled "DrawDesign" as a BBStruct itself. These fields may be useful to you in your validation.
AreaList: a vectoz of BBStructs that represent each drawing area.
PriceDescriptions: a vector of strings, of the line item descriptions for the grille PriceValues: a vector of strings of the line item values for the grille Each area is also a BBStruct that contains the following useful fields:
ElementList: a vector of BBStructs that represent each muntin in the area ShapeList: a vector of BBStructs that represent each lite created by intersecting the muntins Each shape is a BBStruct that contains the following useful faelds:
BasicType: a string that will either be "Hub" or "Lite". A hub will be a solid hub and is priced differently than a regular lite.
ShapeType: a string that is set by the function _SetShapeType in the validate.r(z and can be observed later in oavalidate.rlz ElementList: a vector of BBStzucts that represent the segments that bound the lite. These segments axe only the subsegrnent portion of the muntin.
DanglerList: a vector of BBStructs that represent the sub-segment portion of the muntins that dangle into the lite.
Each element is a BBStruct chat contains the following useful fields:
StartPoint: a BBPoint that represents the starting point of the element Endpoint: a BBPoint that represents the end point of the element CenterPoint: a BBPoint that represents the center point of the element, if it is an arc RadiusWide: a BBFloat that represents the horizontal radius of the element, if it is an arc RadiusHigh: a BBFloat that represents the vertical radius of the element, if.it is an arc LineType: a BBString that will be one of the following values: "Horizontal", "Vertical", "Diagonal", or "Curvy"
Width: a BBFloat that represents the width of the muntin ,_ rn2O gt~io Training - Custom Grille Editor Retrieving the Prices from the Drawing When a drawing is complete, the information about the drawing will be encapsulated on a BBStruct kept on the unit. 'This Geld is described the "DxawDesign" section of this chapter. The most simple and easiest way to apply the pricing of the customized grille to the unit is to add the pricing tines through esab,rul. T'he following is a code fragment that will pull the pricing lines off of the "DrawDesign"
bbstruct and add the pricing to the pricing line items vecotor:
if(DrawDesign) assign(var(-drawDesign, "BBStruct"), DrawDesign) assign(var(_description, "String"), "Customized Grille") if(-drawDesign.Validate !_ "'True") assign( description, "~ description~ (Invalid l7esign)") assign(var(__pricel)ese, "Object°'), .drawDesign.PriceDescriptions) assign(var(-priceV'alues, "Object"), drawDesign.PriceValues) ifLpriceDese && ~riceValues) assign(var(-count, "Scalar"), sizesub(-priceDesc)) assign(var(_i, "Scalar"), 0}
while(-i < count) assign(var(-desc, "String"), subscript(_priceDesc, -i)) assign(var( value, "String"), subscript(-priceValues, i)) °°~-description~ : ~ desc~;~ value~;GRILLE "
assign( i, "~ i~+1") ..~..- '""
~ ~
~ ~ o O CD t~ ~' ~ ~ S~ _ '°°~ ~ CD ~ C
~ O-~ '~~~ ~ CD ~Q~ C3~~,~ ~~.tn.u~
--~ '~ .=~ ~ O ,.+ O CD G r-'- tD c:~ tt~ O ~~ ~ e~h ~ ~ ~ ~ t~ c0 ~ cD ~ can ~ c~...D cn ~- ~ ~ ~6 n N. o ~.~: o '~. G~
c~ ~ ~ o ~ ' c~
~.co < ~ ~ ~ =~. o = ~- ~ o. ~ su .r cn =' Q ~ ''°'''"Lt~ . CD ~' ~ O ~ ~'~ ~' ~ N
n ~ ~ ~ ~ ~ - t+ ~ ~' O ~ ~_ O ~ ~ O
CD ~ COD
N. ~ ~
~ ~ ~~ ~~rr.
. ~'~...'. tA.
h ~,'~~ C~
~ ~ "'!
~ ~5 ~D
m F
r . 1 boo m5~ The computer programs or algorithms described herein may easily be configured as one or more hardware modules, and the hardware modules shown may easily be configured as one or more software modules without departing from the invention. Accordingly, the invention is not limited by the foregoing description, drawings, or specific examples enumerated herein.
Claims (30)
1.A system for custom configuration of an object comprising:
a parametric drawing engine providing illustrations of configuration data, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
a parametric drawing engine providing illustrations of configuration data, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
2.The system of claim 1, wherein the first modification to a first element comprises a change in size.
3. The system of claim 1, wherein the second modification is constrained by a plurality of rules.
4.The system of claim 2, wherein the first modification is constrained by a plurality of rules.
5. A system for custom configuration of an object comprising:
a parametric drawing engine providing illustrations of configuration data, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
a parametric drawing engine providing illustrations of configuration data, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
6.The system of claim 5, wherein said attribute is selected from the group consisting of color, material, and texture.
7. A custom configuration system for an object comprising:
a user interface, wherein said user interface receives input data for a desired configuration of an object;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
a user interface, wherein said user interface receives input data for a desired configuration of an object;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
8. The system of claim 7, further comprising a database, coupled to said frame engine, storing configuration data selectively retrieved for output in response to inferences made by said frame engine.
9. The system of claim 8, wherein said frame engine subjects configuration data to be output to said user interface to pertinent rules-based inferences before being output to said user interface.
10. The system of claim 9, further comprising a rules engine, coupled to said frame engine, wherein said rules engine subjects selected configuration data to be output to said user interface to pertinent rules-based inferences before being output to said user interface.
11. The system of claim 7, wherein said frame engine represents data concerning configuration in a hierarchical structure, with frames corresponding to configuration categories, wherein the frames act as nodes of the hierarchical structure containing a collection of slots corresponding to configuration features and options.
12. The system of claim 11, wherein said database stores data representative of product knowledge pertaining to products that may be configured by the system.
13. The system of claim 7, wherein said database stores a plurality of questions for selective output to said user interface based on frame-based inferences made by said frame engine in response to answers input through said user interface.
14. The system of claim 13, further comprising:
a data analysis subsystem performing analysis of configuration data to be output to said user interface; and a graphics formatting output subsystem providing graphical representations of configuration data output to said user interface based on illustrations provided by said parametric drawing engine.
a data analysis subsystem performing analysis of configuration data to be output to said user interface; and a graphics formatting output subsystem providing graphical representations of configuration data output to said user interface based on illustrations provided by said parametric drawing engine.
15. The system of claim 14, wherein said data analysis subsystem comprises a pricing engine providing pricing data corresponding to configuration data output to said user interface.
16. A custom configuration system for an object comprising:
a user interface, wherein said user interface receives input data for a desired configuration of an object;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
a user interface, wherein said user interface receives input data for a desired configuration of an object;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
17. A custom configuration system for a grille comprising:
a user interface, wherein said user interface receives input data for a desired configuration of a grille;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
a user interface, wherein said user interface receives input data for a desired configuration of a grille;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same.
18. A custom configuration system for a grille comprising:
a user interface, wherein said user interface receives input data for a desired configuration of a grille;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
a user interface, wherein said user interface receives input data for a desired configuration of a grille;
a frame engine, receiving data input from said user interface, wherein said frame engine outputs configuration data to said user interface in response to a frame-based inference of the input data; and a parametric drawing engine providing illustrations of configuration data to a user interface, said illustrations comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element.
19. A method of configuring an object design, the method comprising the steps of:
accessing a user interface;
initiating an object design for configuration;
configuring the object by entering object selections;
graphically selecting parameters to configure the object based upon graphic representations of variations of characteristics of components to be selected for the object;
manipulating schematically configured illustrations of components to be selected for the object, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
accessing a user interface;
initiating an object design for configuration;
configuring the object by entering object selections;
graphically selecting parameters to configure the object based upon graphic representations of variations of characteristics of components to be selected for the object;
manipulating schematically configured illustrations of components to be selected for the object, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
20. The method of claim 19, wherein said configuring step involves answering a plurality of questions presented, wherein the questions to be presented during said configuring step are stored in a database and selected for presentation based on inferences made in said performing step.
21. The method of claim 20, wherein said configuring step further comprises the substep of presenting preferred answers to select questions presented on the user interface.
22. The method of claim 20, wherein said performing step further comprises the substep of performing a rules-based inference in response to project selections made in said configuring step.
23. The method of claim 20, wherein the project to be configured includes a custom product, the method further comprising the steps of:
accessing a catalog page to display graphical and textual information pertinent to the product to be configured;
accessing a custom shapes editor to size a product upon configuration and to select a customized combination of dimensional parameters for said product;
accessing an accessories module containing product accessory information; and producing technical specifications containing technical information regarding the project as configured.
accessing a catalog page to display graphical and textual information pertinent to the product to be configured;
accessing a custom shapes editor to size a product upon configuration and to select a customized combination of dimensional parameters for said product;
accessing an accessories module containing product accessory information; and producing technical specifications containing technical information regarding the project as configured.
24. The method of claim 23, wherein said custom product is a grille.
25. A method of configuring an object design, the method comprising the steps of:
accessing a user interface;
initiating an object design for configuration;
configuring the object by entering object selections;
graphically selecting parameters to configure the object based upon graphic representations of variations of characteristics of components to be selected for the object;
manipulating schematically configured illustrations of components to be selected for the object, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
accessing a user interface;
initiating an object design for configuration;
configuring the object by entering object selections;
graphically selecting parameters to configure the object based upon graphic representations of variations of characteristics of components to be selected for the object;
manipulating schematically configured illustrations of components to be selected for the object, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
2b. An article of manufacture comprising a machine-readable storage medium having stored therein a control program having indicia of a plurality of machine-executable steps, the control program comprising the steps of:
accessing a user interface;
initiating a grille design for configuration;
configuring the project by entering project selections;
graphically selecting parameters to configure the project based upon graphic representations of variations of characteristics of components to be selected for the project;
manipulating schematically configured illustrations of components to be selected for the project, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
accessing a user interface;
initiating a grille design for configuration;
configuring the project by entering project selections;
graphically selecting parameters to configure the project based upon graphic representations of variations of characteristics of components to be selected for the project;
manipulating schematically configured illustrations of components to be selected for the project, said components comprising a plurality of elements arranged in a first configuration wherein a first modification to a first element causes a corresponding second modification in at least a second element such that the connections of the first element to the at least a second element remain the same;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
27. The article of manufacture as recited in claim 26, wherein said performing step comprises the substep of representing data concerning configuration of the project in a hierarchical structure, with frames corresponding to configuration categories, wherein the frames act as nodes of the hierarchical structure containing a collection of slots corresponding to configuration features and options.
28. The article of manufacture as recited in claim 27, wherein said performing step comprises the substep of subjecting selected configuration data of the project to pertinent rules-based inferences.
29. An article of manufacture comprising a machine-readable storage medium having stored therein a control program having indicia of a plurality of machine-executable steps, the control program comprising the steps of:
accessing a user interface;
initiating a grille design for configuration;
configuring the project by entering project selections;
graphically selecting parameters to configure the project based upon graphic representations of variations of characteristics of components to be selected for the project;
manipulating schematically configured illustrations of components to he selected for the project, said components comprising a plurality of elements arranged in a first configuration wherein a. first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
accessing a user interface;
initiating a grille design for configuration;
configuring the project by entering project selections;
graphically selecting parameters to configure the project based upon graphic representations of variations of characteristics of components to be selected for the project;
manipulating schematically configured illustrations of components to he selected for the project, said components comprising a plurality of elements arranged in a first configuration wherein a. first modification to an attribute of a first element causes a corresponding second modification in an attribute of at least a second element;
performing a frame-based inference in response to project selections made in said configuring step; and outputting project configuration data to the user interface based on inferences made in said performing step.
30. In an Internet portal for use by manufacturers, distributors, dealers, retailers, and retail customers as participants in a vertical market, a method of distributing news, product information, advertising, discussion forums, and e-commerce transactions, wherein participants gain access to a grille design configuration system that allows users to configure products and services as projects such. that projects so configured are automatically transmitted to selected participants for bid, quote, sales, and ordering of the configured projects.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA2452912A CA2452912C (en) | 2003-12-12 | 2003-12-12 | Automated custom configuration system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA2452912A CA2452912C (en) | 2003-12-12 | 2003-12-12 | Automated custom configuration system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2452912A1 true CA2452912A1 (en) | 2005-06-12 |
CA2452912C CA2452912C (en) | 2013-02-05 |
Family
ID=34658563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2452912A Expired - Lifetime CA2452912C (en) | 2003-12-12 | 2003-12-12 | Automated custom configuration system and method |
Country Status (1)
Country | Link |
---|---|
CA (1) | CA2452912C (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836605A (en) * | 2021-09-08 | 2021-12-24 | 华中科技大学 | Intelligent management system for gear metal powder injection molding |
-
2003
- 2003-12-12 CA CA2452912A patent/CA2452912C/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836605A (en) * | 2021-09-08 | 2021-12-24 | 华中科技大学 | Intelligent management system for gear metal powder injection molding |
Also Published As
Publication number | Publication date |
---|---|
CA2452912C (en) | 2013-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7860690B2 (en) | Automated custom configuration system and method | |
US7461049B2 (en) | Automated configuration system and method | |
US11010800B2 (en) | Made-to-order direct digital manufacturing enterprise | |
US10672047B2 (en) | Intelligent multimedia e-catalog | |
US12067602B2 (en) | Intelligent multimedia e-catalog | |
US8145544B2 (en) | Method and system for demand and supply map/shopping path model graphical platform and supplying offers based on purchase intentions | |
Lin et al. | A manufacturing system engineering ontology model on the semantic web for inter-enterprise collaboration | |
JP5064211B2 (en) | System and method for an electronic catalog supplier portal | |
US8266005B2 (en) | Automated pricing system | |
US7574427B2 (en) | Neutral sales consultant | |
US20100169229A1 (en) | Business Processing System Using Remote PC Control System of Both Direction | |
US20020002501A1 (en) | System and method for an independent retailer business-to-business market exchange | |
US20030187676A1 (en) | Tool for developing a map of relevant business processes and flows | |
US20040034576A1 (en) | Design creation and manipulation systems, methods, and products | |
Kamiebisu et al. | Use cases of the platform for structuring a smart supply chain in discrete manufacturing | |
CA2452912C (en) | Automated custom configuration system and method | |
Kumar et al. | Social network analysis of online marketplaces | |
Martin et al. | Developing E-Commerce Strategies Based on Axiomatic Design | |
Teicholz | Overview and current state of FM technology | |
US20220288858A1 (en) | Tray packing system for additive manufacturing | |
KR20030071944A (en) | 3d virtual reality designing system through the wire and wireless internet and the method using the same | |
WO2002005138A1 (en) | Process guru | |
JP2504333B2 (en) | Information processing system configuration creation system | |
USRE46807E1 (en) | Made to order digital manufacturing enterprise | |
Interactive | Visualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKEX | Expiry |
Effective date: 20231212 |