Title Rule-based System and Method for Machining a Part
CROSS REFERENCES
[0001] This application claims priority from U.S. Application Serial No. 10/346,475 titled "Rule-based System and Method for Machining a Part," filed January 17, 2003, pursuant to 35 U.S.C. §119. The entire contents of this prior application is incorporated herein by reference in its entirety.
[0002] Also, this application is co-pending with and incorporates by reference in its entirety U.S. Appl. Serial No. 10/346,473, titled "Method and System for Computer Aided Manufacturing," filed January 17, 2003.
FIELD OF THE INVENTION
[0003] The invention relates generally to the field of computer aided design and computer aided manufacturing (CAD/CAM), and in particular to machining a part using computer numerical control (CNC) machines.
BACKGROUND OF THE INVENTION
[0004] The use of a computer controlled machines to automatically machine parts has allowed the quick production of precise parts. For the specific case of machining parts, these machines are called computer numerically controlled (CNC) machines and are basically a computerized machinist that cuts material away from a block of material, e.g., metal or plastic, until the desired product is achieved. For example, a three-axis CNC milling machine has a cutting tool, an end mill, and allows for movement of the tool in three directions, X, Y, and Z. By moving the tool (or the part) and by spinning the end mill,
material is removed from the block of material. The CNC machine has its own programming language which includes G and M codes.
[0005] In order to make programming a CNC machine more user friendly than writing many cryptic programming lines having GYM codes, a computer aided manufacturing (CAM) front end software tool is typically used. The CAM software tool has a graphical user interface (GUT) and may use a higher level language, such as Microsoft Visual Basic for Applications (NBA), the industry standard macro and scripting language, for programming. The CAM software then automatically generates the appropriate program, including the G/M codes, to run the CΝC machine to manufacture the part. The CAM software tool is typically used by a manufacturing engineer.
[0006] FIG. 1 is a diagram of an exemplary process of manufacturing a part of the prior art. The manufacturer's process 110 begins in the design section 112 of a company where the part is designed on a computer aided design (CAD) system 114 by the design engineer. The CAD design is stored in a database (DB) 116. The CAD design represents the finished product and is "what" is manufactured. The CAD design, in the form of a geometric model or 2D/3D representation of the finished part, is then electronically transferred to the manufacturing section 120. The CAD model alone normally has insufficient information to manufacture the part, and the manufacturing engineer must add information, such as tool selection and machining parameters, into the CAM tool in order to specify "how" the part is to be machined. The CAM tool may display a solid or 3D surface model of the part, hence allowing the manufacturing engineer full visualization of the finished machined part. The CAM model is stored in DB 124. A program, for example, in NBA and Visual Basic (NB), is written by the manufacturing engineer in order to machine the part from a block of material. The CAM tool significantly reduces the complexity and time needed to write the VB/VBA program. When the programming is finished and debugged, the CAM tool automatically generates the CΝC program. The CΝC program is sent to the shop floor 130 to be executed on the CΝC machine 132.
[0007] The manufacturing process of FIG. 1 has several problems. First, the process has a one-way flow of information, i.e., from design 112 to manufacture 120 to shop 130. For example, if the machinist on the shop floor needs to modify the CΝC program to improve
machining the part, this knowledge will normally not get back to either the manufacturing engineer or the design engineer. Similarly, any changes by the manufacturing engineer that could affect the design process are stored only in manufacturing DB 124. The design engineer typically has no access to DB 124, and even if the design engineer had access, the data representation of the CAD model in DB 116 is normally significantly different than the CAM model in DB 124. Thus lack of feedback information significantly impedes improvement of the overall machining process.
[0008] Another major problem is that if a feature or attribute in a part changes the manufacturing engineer needs to create another CNC program. VBA somewhat reduces this problem, by automating the programming of different versions of a standard part by using a macro. For example, a VBA macro can be written that characterizes a hole (a feature of a part), using attributes such as diameter, depth, XYZ location. The macro is complied and executed. The user is asked to enter values for the attributes or to make a selection among several predetermined choices. The macro takes these values, creates circles representing the holes, selects the cutting tools, automatically creates the drilling operations, and produces the G/M code program. The CNC machine inputs the G/M code program and machines the hole in the part. However, for example, if one feature is different in a similar part, e.g., a threaded hole rather than a counter bored hole, then a new VBA macro is typically written by the manufacturing engineer. Thus the conventional macro only increases program flexibility in a limited way by allowing different values for fixed attributes, but does not allow, for example, the addition removal of features and attributes or the selection of a different manufacturing process.
[0009] hi addition as the programmer is human, two programs, each written by a different person, but machining the same part, are probably different. This "personalized" methodology prevents the standardization of the part manufacturing process.
[0010] Therefore there is need for an improved process of machining a part were the design section, manufacturing section, and shop floor can exchange knowledge and were the programming methodology is more flexible, efficient and standardized.
SUMMARY OF THE INVENTION
[0011] The present invention includes a system and method for centralizing knowledge and standardizing programming for manufacturing a part. An exemplary embodiment includes a database having the features with associated physical characteristics for the part. The database also includes a repository of processes to machine various features on various parts. One or more rules select the appropriate processes from the repository of processes to manufacture the features.
[0012] While the example of machining of a part using a CNC machine is used to describe some embodiments of the present invention, the scope of the invention is not so limited. The manufacture of any part using a computer controlled machine, for example, the forging of a part or assembly of a part, using one or more programmable computer controlled machines, is also within the scope of the present invention.
[0013] An embodiment of the present invention includes a method for machining a feature of a part using a database. First, a feature type associated with the feature is identified by evaluating a first predetermined rule stored in the database. Next, the database is searched to identify a process associated with the feature type. And at least portion of the feature is machined based on the process.
[0014] Another embodiment of the present invention includes a method for machining a feature of a part using a database. First, a feature type of the feature is identified by evaluating a first predetermined rule stored in the database. Second, a key and a value associated with the feature type are identified, where the value is selected by evaluating a second predetermined rule stored in the database. Third, a feature case is created from the feature type, the key and the value. Then using the feature case, a process is retrieved from the database. And lastly, at least a portion of the feature is machined using the process.
[0015] Yet another embodiment of the present invention includes a computer readable medium, e.g., database, containing a data structure for manufacturing a feature of a part. The computer readable medium includes: a first table having a first field identifying a feature type of said feature and a second field having a first rule for selecting the feature type from a plurality of feature types; and a second table comprising a first field identifying a value of a
key of the feature type and a second field having a second rule for determining when said value is selected.
[0016] Yet another embodiment of the present invention includes a system for machining a feature of a part. The system includes: a computer aided design tool for creating a model of the part; a computer aided manufacturing tool for identifying the feature of the part and adding physical characteristic data for the feature to the model; a computer numerically controlled machine tool receiving instructions from the computer aided manufacturing tool on machining the feature; and a centralized database coupled to the computer aided design tool, computer aided manufacturing tool, and the computer numerically controlled machine tool for storing information on machining the feature.
[0017] An aspect of the present invention includes a system for machining a feature of a part. The system includes: a computer aided design and manufacturing tool for creating a model of the part and for identifying the feature of the part and adding physical characteristic data for the feature to the model; a computer numerically controlled machine tool receiving instructions from the computer aided design and manufacturing tool on machining the feature; and a centralized database coupled to the computer aided design and manufacturing tool and the computer numerically controlled machine tool for storing information on machining the feature.
[0018] These and other embodiments, features, aspects and advantages of the invention will become better understood with regard to the following description, appended claims and accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0019] FIG. 1 is a diagram of an exemplary process of producing a part of the prior art;
20] FIG. 2 is a diagram of a process for producing a part with a centralized database of one embodiment of the present invention;
[0021] FIG. 3 is a diagram of a process for producing a part with a centralized database of another embodiment of the present invention;
[0022] FIG. 4-1 is a part hierarchy of a preferred embodiment of the present invention;
[0023] FIG. 4-2 is a feature hierarchy of another embodiment of the present invention;
[0024] FIG. 5-1 is a feature case hierarchy of a preferred embodiment of the present invention;
[0025] FIG. 5-2 is diagram of a process step of an embodiment of the present invention;
[0026] FIG. 6 is a flowchart for creating a manufacturing program of an embodiment of the present invention;
[0027] FIG. 7 is a block diagram of a portion of a generating program which creates a part of a CNC program of an embodiment of the present invention;
[0028] FIG. 8 is an example of a feature manager of display of an aspect of the present invention;
[0029] FIG. 9 shows a process manager window of an aspect of the present invention.
[0030] FIGS. 10-A to 10-F are diagrams of a relational database model of the preferred embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
[0031] In the following description, numerous specific details are set forth to provide a more thorough description of the specific embodiments of the invention. It should be apparent, however, to one skilled in the art, that the invention may be practiced without all the specific details given below. In other instances, well known details have not been described, so as not to obscure the invention.
[0032] A part that is manufactured from one or more materials is composed of one or more features, for example, holes, pockets, slots. Each feature has one or more attributes which describe physical characteristics of a feature. For example, for a hole the attributes include
the location, diameter, and depth of the hole. In the case of machimng a part from a block of material using a CNC machine, each feature is cut out of the block of material. For each feature, there is a corresponding cutting process that includes selecting which cutting tools to use and the tool operations to be performed. For the hole example, a cutting tool, e.g., a drill, and the tool operations, e.g., a tool path, are selected.
[0033] The features and corresponding attributes in certain limited cases may be automatically determined from the geometric model of the part using an image processing algorithm. Once the features and corresponding attributes are recognized a pre-selected process is used to machine the feature. Not all of the steps may be automatic, for example, the user may be asked to input values for the attributes. There are also some major disadvantages using this automated approach, such as inflexibility to change and non- reusability since the features, corresponding attributes, and associated processes are fixed, i.e., hard coded, in the manufacturing program.
[0034] One embodiment of the present invention has a goal of creating a uniform engineering environment for the manufacture of parts, not only for a specific company, but across companies. To achieve this goal one or both of the following are done: the databases used by design, manufacturing, and the shop for creating a part are centralized, which includes standardizing the data structures, and the CAM process is made visible and standard by the use of user defined rules. By having a uniform way of capturing and representing knowledge, the design engineer, manufacture engineer, the CNC programmer and CNC operator expertise can be captured and the system can improve by learning, hi addition, beside intra- company exchange of knowledge, companies can exchange or sell/buy knowledge.
[0035] FIG. 2 is a diagram of a process for producing a part with a centralized database of an embodiment of the present invention. FIG. 2 has one DB 226 which includes both the data in the design DB 116 and in the manufacturing DB 124 of FIG. 1. The design engineer in design section 212 uses CAD tool 214 to created the design model of the part using, e.g., Electronic Data Systems Corporation's Parasolid® solid modeler. The solid geometric model is stored in DB 226 using an application programming interface (API) 224. The API, by constraining what commands can be performed on DB 226, provides an ordered way of retrieving and storing data in DB 226. The manufacturing engineer in manufacture section
220 then gets the solid model from DB 226 and uses the CAM tool to insure the model has manufacturing features and attributes. The manufacturing engineer uses the annotated model and CAM tool to create a VB/VBA program. The NB/NBA program has the processes needed to machine each feature of the part. Hence, the NB/NBA program contains the expert knowledge of the programmer on "how" a part is to be manufactured. Next, the NB/VBA program is automatically converted to a CΝC program having G code which is stored in DB 226. A shop engineer/technician in shop 230 retrieves the CΝC program on CΝC machine 234 from DB 226. If the shop engineer/technician needs to modify the G code program, then he/she uses all or part of another version of the CAM tool running on CΝC machine 234. For example, suppose that the shop engineer/technician knows that a second process other than the one the manufacturing engineer selected has better performance for the particular CΝC machine used. The shop engineer/technician could use the version of the CAM tool running on CΝC machine 234 to change the NB/VBA program to use the second process. Since the changed VB/VBA code is stored in DB 226, it is accessible by the design and manufacturing engineers for future production of parts. In an alternative embodiment the CΝC machine 234 has a personal computer (PC) connected to it, which is used instead of the CΝC machine to run all or part of the other version of the CAM tool. The PC is also connected to DB 226 and is used to modify the G code.
[0036] FIG. 3 is a diagram of a process for producing a part with a centralized database of another embodiment of the present invention. FIG. 3 shows the functions of the manufacturing section 220 of FIG. 2 being re-allocated into the design section 212 and shop floor 230. The manufacturing section 220 is eliminated, FIG. 3 the Design/Manufacturing section 252 has a CAD/CAM tool 254. The CAD tool of the design engineer is the same as the CAM tool of the manufacturing engineer, hi the Manufacturing/Shop section 260 a scaled down version of the CAD/CAM tool 254 is loaded on CΝC machine 264. h an alternative embodiment, a PC connected to CΝC machine 264 and DB 226 has a scaled down version or a full version of the CAD/CAM 254 tool. The PC generates the CΝC program having the G codes for the CΝC machine 264.
[0037] In a preferred embodiment of the present invention the decision points on selection of features, attributes, and processes are explicitly given in the form of rules. A rale includes a
code fragment or function that when executed returns a "True" or "False" Boolean value. The code fragments or functions are stored in the DB 226. Using the selected features, attributes, and processes, cutting tools and machining operations, e.g., the tools cutting feeds and rotational speeds and tool path, are determined and a CNC program is generated to machine the part on a CNC machine.
[0038] Since a part has one or more features, were each feature has one or more attributes, a first set of rules are assigned to the features and a second set of rules are assigned to the attributes. In addition since a process specifies how a feature is made and there may be multiple processes, i.e., ways, to make a feature, a third set of rules is assigned to decide which process should be used. If the third set of rules indicate multiple processes should be used then a human expert or a computerized expert system makes a selection on which process to use and the third set of rules are refined.
[0039] FIG. 4-1 is a part hierarchy of a preferred embodiment of the present invention. A part 412 is described by a model, e.g., model 216 in FIG. 2. The part has one or more part types 414. Typically the user selects the part types belonging to the part 412. In an alternative embodiment the part types are automatically selected using rules (not shown). Each part type 414 has one or more features 416. The part type 414 has also one or more feature recognition rules 418 that allow selection of the features 416 associated with the part type 414. A feature is selected when the feature recognition rule evaluates to true. Although each feature 416 may have one or more feature types 420, in the preferred embodiment, there is one feature type for one feature. Hence the feature type 420 is the primary classification for a feature 416 of a part type 414. The feature type associated with the feature is determined from evaluating rule 422.
An example of part types associated with a solid geometric model of a part may include a prismatic milled part, mold component, and die component. If the user selects part type, i.e., die component, then the feature recognition rules 418 may look for features 416, e.g., holes, pockets, and profiles in the geometric model. If rule 418 evaluates to true for a hole feature 416, then there may be one or more feature types, e.g., counterbored hole, threaded hole, or tapped hole. The feature type 420 selected is dependent on rule 422 evaluating to true.
[0041] Each feature type 420 has associated with it one or more processes 424. To determine if the process is applicable to the feature type, the accompanying rale 426 is evaluated. Each process has one or more process steps 428. Each feature type 420 may also have one or more attributes (not shown), where an attribute describes a physical characteristic of a feature. An attribute can be further subdivided to include a key with zero or more values.
[0042] FIG. 4-2 is a feature hierarchy of another embodiment of the present invention. A feature 450 has one or more feature types 452. An attribute of each feature type 452 has been further subdivided to include a key and one or more values. Hence, each feature type 452 has one or more keys 456. Each key 456 has one or more values 458, where if no value is specified by the user for a key, the value is assigned to be "undefined". To determine if a particular feature type 452 is applicable to a particular feature 450, the accompanying rule 454 is evaluated to determine if it is "true". All the keys 456 for an applicable feature type 452 are next retrieved. To determine if a particular value 458 is applicable to a particular key 456, the accompanying rule 460 is evaluated to determine if it is "true".
[0043] Hence each feature type (or feature) has one or more keys and each key has one or more values assigned to it, including the possibility of having a value assigned as "undefined". Each feature type thus has one or more key/value pairs. The feature type along with a combination of one or more of its key/value pairs is called a feature case. The feature case is used to search for the one or more processes that are to be used in manufacturing the feature in the part.
[0044] FIG. 5-1 is a feature case hierarchy of a preferred embodiment of the present invention. Each feature case 510 has one or more processes associated with it. To determine if a particular process 512 is applicable for a particular feature case 510, the accompanying rule 514 is evaluated to determine if it is "true". Each process has one or more process steps 516. The process step hierarchy is shown in FIG. 5-2. The process steps 516 describe, for example, the cutting tools, machining parameters, and machining cycles to be used in making the part on the CNC machine.
[0045] For the two examples of feature cases below, assume the following feature types and key/values:
Feature type = "Threaded Hole M"
Keyl = "Size", Possible Values "M8", "M9", "M10"... Assigned
Value="M10"
Key2 = "Tolerance", Possible Values "HI", "H2", "H3"... Assigned
Value = -undefmed-
[0046] The first example of a feature case is:
Feature type = "Threaded Hole M" Keyl/value = "M10" Key2/value = -undefmed-
[0047] The second example of a feature case is:
Feature type = "Threaded Hole M" Key2/value = -undefined-
[0048] FIG. 5-2 is diagram of a process step of an embodiment of the present invention. Each process step 516 has one or more machining cycles 524. Each machining cycle 524 has one or more machining parameters 526 and one or more cutting tools 530. Each cutting tool 530 has one or more cutting tool parameters 532. A machimng parameter 526 has associated with it an optional formula 528 that is used in calculating a numerical value to be assigned that machining parameter. A cutting tool parameter 532 has associated with it another optional formula 534 that is used in calculating a numerical value to be assigned that cutting tool parameter.
[0049] An example of the rules and formulae in FIGS. 4-1, 4-2, 5-1, and 5-2 are:
Feature type rule: (feature.layer.name = "ThreadedHole")
Value rule: ( isequal (feature.diameter, 10) )
Process rule:( islessthan(feature.area, 10) AND islessthan(feature.volume, 20))
Machining Parameter formula: ( (tool. diameter * .85) + 0.001 )
[0050] FIG. 6 is a flowchart for creating a manufacturing program of another embodiment of the present invention. At step 610 a model of the part is retrieved from database 720. The features of the part are selected from a list of features using a first set of rules (step 612). The feature types of each feature are selected from a list of feature types using a second set of rules (step 614). At step 616, a list of keys is retrieved for each feature type. At step 618, a value for each key is selected using a third set of rules. For each selected feature type with a combination of one or more key/value pairs, one or more feature cases are created. For each feature case the database 720 is accessed to retrieve a list of associated processes (step 622). At step 624 from this list of associated processes, a process is selected for the feature case
using a fourth set of rules. At step 626, for each process step of each selected process the machining cycle(s) and associated machining parameters and cutting tools and associated cutting tool parameters are determined. For each machining parameter a numerical value is determined using the associated formula. The numerical value may optionally be a cost. For each cutting tool parameter a numerical value is determined using the associated formula. At step 628, for each process step, a portion of CNC code is generated and inserted into the CNC program.
[0051] FIG. 7 is a block diagram of a portion of a generating program 710 which creates a part of a CNC program 740 of an embodiment of the present invention. Program 710 includes a software module 712 to evaluate the rules and a software module 714 to generate the CNC program 740. The programs 710 and 740 are stored in a computer readable medium. A computer, having a processor and a memory, executes generating program 710 to produce CNC program 740. The computer is connected to database (DB) 720 via a communications link. Generating program 710 uses data from DB 720. The evaluate rales module accesses rale tables, e.g., feature rales 721, feature type rales 722, value rales per key 724, and process rales 726, and evaluates the rales in these tables to true or false, where the rales include, e.g., logical expressions, function calls with a logic true/false return value, and code fragments that evaluate to true or false. Because the user inputs these rules directly into DB 720, the generating program does not need to be changed when the rules change. In an alternative embodiment the generating program 710 is self-modifying, i.e., modifies itself to result in CNC program 740.
[0052] DB 720 also has a table 728 having parameter formulas for the machining parameters or conditions (there is also another table (not shown) for the cutting tools and associated parameters). Each parameter has an associated formula, which in some cases may be a single predetermined number, which when evaluated gives the parameter a numerical value. The parameters (not shown) are also stored in DB 720. hi addition the DB 720 includes a plurality of machining cycles, where each machining cycle includes a section of predetermined source code (for example, in C++), e.g., machining cycle 1 730 to machining cycle N 732, where N is an integer number. A process step via the generate CNC code module 714 will use a machining cycle to generate a CNC block of code, e.g., CNC code
block 1 742 or CNC code block 2 744, where the CNC block of code includes the tool path (G-code). The CNC code blocks are inserted into the CNC program 740, which is used to machine the features on the part on a CNC machine.
[0053] FIG. 8 is an example of a feature manager display of an aspect of the present invention. Feature manager window 810 has four sub-windows, i.e. a parts sub-window 812 listing the parts, a feature sub-window 820 listing the features for a highlighted part, a keys sub-window 830 listing the keys for a highlighted feature, and a value sub-window 840 listing values for a highlighted key. For example, in the parts sub-window 812 there is a column 814 for part name and a column 818 for a description of the part. Part name "Gear Box 8742" 819 is highlighted. The feature sub window 820 has a column 822 for the feature name, a column 823 for unit, a column 824 for the feature object type, a column 826 for the feature rale, and a column 827 for a description of the feature. The features listed are for part "Gear Box 8742." The feature row 821 with feature name "threadedhole," unit "Inch," feature object type "FeaturePTOP," and feature rale "Feature.layer.name = "ThreadedHoles" is highlighted. The keys sub-window 830 has a column 832 for the feature name and a column 833 for the key description. Three keys for feature "threadedhole" are shown: Pitch 834, Size 834, and Tolerance 838, where pitch is highlighted. The value sub-window 840 has a column 842 for name and a column 844 for the rule. The value names listed are for the Pitch key: "20," "13," and "14". hi the case of row 848, when the feature.customproperties("Pitch").value, and a Visual Basic (VB) function returns the number 14, then the Pitch key will have associated value 14.
[0054] FIG. 9 shows a process manager window 910 of an aspect of the present invention. The part type 912 is "Gear Box 8742." The features may be filtered based on part type 912, unit 910 such as "Inch," and feature type object ("ESPRIT feature Type") 911 such as "FeaturePTOP". The processes may be filtered on part material class 952 and unit 954. h the feature case sub- window 914 there is a key column 916 and a value column 918. One feature case is shown for feature (or "Feature Type") 920 being "Counterbored Hole" 939, key = "Size" 922 and value = "Any" 924. These items are also shown in the feature manager window of FIG. 8. For example, in the feature sub-window 820 the feature "Counterbored Hole" 850 with unit "Inch" 852, object type "FeaturePTOP" 854, a NULL for the rule 856,
and no description 857 are displayed. In the processes sub-window 930 the name 931, unit 932, rule 933, and description 934 of the processes for the feature case displayed in sub- window 914 is shown, hi this case only one process 936 is shown, i.e., the process name is "3/4" Counterbored Hole" with a unit inch 937, a NULL rule 938, and no description 939. The process steps sub window 940 has a column for the process step name 941 and for the cutting cycle 942. The two process steps shown, 944 and 946, are for Pre Drill and Plunge Mill with MillDrill as the cutting cycle.
[0055] FIGS. 10A to 10F are diagrams of a relational database model of the preferred embodiment of the present invention. All table names begin with "tbl." All field names in the table begin with "fldpk" for the primary key, ""fldfk" for the foreign key, and "fid" for a data field. All field names are followed by an underscore followed by the table name. The tables have a structure similar to Figs. 4 and 5.
[0056] Table 1010 (tblPartType) has a list of parts. An example Table 1010 is shown in parts type sub-window 812 of FIG. 8. For each part there are one or more features as given in table 1014 (tblFeatureType). An example Table 1014 is shown in feature sub-window 820 of FIG. 8. The feature rule is stored in field 1015 (fldRecognitionRules_tblFeaturetype) of table 1014, and an example feature rale condition is item 858, i.e., "feature.name = "Face"" in FIG. 8. For each feature there are one or more keys as given in table 1022 (tblKey). An example Table 1022 is shown in keys sub-window 830 of FIG. 8. For each key there are one or more values as given in table 1024 (tblvalue). An example table 1024 is shown in values sub- window 840 of FIG. 8. The value rule is stored in field 1026 (fldRecognitionRules__tblValue) of table 1024, and an example value rale condition is item 860, i.e., "feature.diameter = .5", in FIG. 8.
[0057] Table 1030 (tblFeatureCase) has one or more feature cases. An example Table 1030 is shown in feature case sub-window 914 of FIG. 9. Table 1050 (tblProcess) has a one or more of processes for each feature case. An example Table 1050 is shown in processes sub- window 930 of FIG. 9. The process rule is stored in field 1052 (fldRules_tblProcess) of table 1050, and an example process rule condition is rule 938, i.e., NULL, in FIG. 9. Table 1060 (tblProcessStep) has one or more process steps for each process. An example Table 1060 is shown in process steps sub-window 940 of FIG. 9. Associated with a process step
(tblProcessStep) are tables 1062 (tblProcessorStepParameter), 1064 (tblToolSelection), and 1066 (tblESPCuttingCycle) of FIG. 10B which give the machining parameter(s), cutting tool(s), and cutting operation(s), respectively.
[0058] Figs. 10D and 10F show tables for the tooling group including the cutting tool (table 1070) and coolant type (table 1072). FIG. 10E has tables for the Speed feeds group, including table 1080, which has speed and feed data for the cutting process.
[0059] A feature of a part may be constrained, as illustrated in FIG. 9, to have a Unit 910 "Inch" and an ESPRIT feature type 911 of "FeaturePTOP." Hence table 1014 (tblFeatureType) is related to table 1016 (tblESPFeatureType) and table 1018 (tblESPUnit). In addition, a process may be constrained to use a particular material class (Part Material Class 952 of FIG. 9) and a certain unit (Unit 954 of FIG. 9). hi this case there are no constraints. Table 1050 (tblProcess) is related to table 1055 (tblPartMaterialClass) via table 1054 (tblPartMaterialClasshidex) and table 1050 (tblProcess) is also related to table 1018 (tblESPUnit).
[0060] The following describes how the tables (Figs. 10A - 10F) stored in DB 226 are related to the sequence of steps to find the process associated with each feature in a part. The process associated with the feature has the program code to machine the feature on the CNC machine. The first step is to use an SQL search to extract a list of possible features for the part from the DB. The list is given by searching table 1012 (tblFeatureTypelndex) to get the feature type ID's for the features for each part and then retrieving the table 1014 (tblFeatureType) for each feature type ID. For each possible feature, i.e., table 1014, it's VB rales (fldRecognitionRules_tblFeaturetype 1015) are evaluated to Trae or False. A NULL VB rule evaluates to False. There may be multiple features in a part. The next step is to get for each feature with their VB rules evaluating to True, the list of keys and values. An SQL search is executed to extract a list of keys for a feature. The list is given by searching table 1020 (tblKey idex) to get the key ID's for the keys for each feature in a part, and then retrieving the table 1022 (tblKey) for each key ID. The value tables 1024 (tblValue) are retrieved for each Key table 1022 (tblKey). For each value for a key, its VB rules (fldRecognitionRules_tblNalue 1026) are evaluated to True or False. A NULL VB rale evaluates to False. A key/value pair is a key having one value with VB rules evaluating to
true. If there is another value for the key in the key/value pair, then a second key/value pair is formed. A list of applicable feature cases, i.e., combinations of feature with associated key/value pairs for each feature in a given part, can be formed.
[0061] For a given feature, once the processing above has been performed, the associated process is selected using the following methodology. The DB 226 includes a plurality of predetermined feature cases. Each predetermined feature case has assigned to it one or more predetermined process(es) (where the same process may be assigned to multiple feature cases). Table 1030 (tblFeatureCase) has for each feature (fldpkFeatureTypelD) the feature cases (fldpkFeatureCaseld). Table 1040 (tblProcessfridex) then gives, for each feature case (fldpkFeatureCaseld), the list of processes (fldkProcessrndexId). For each process, table 1050 (tblProcess) describes the process.
[0062] Since for each feature in a given part, the key/value pairs have been determined, each applicable feature case (fldpkFeatureCaseld) can be found using table 1028 (tblNaluehidex) and table 1030 (tblFeatureCase). Thus by performing, for example, a SQL search of the DB, including tables 1028 and 1030, for each applicable feature case, if there is a match (or matches) in the DB, then the corresponding predetermined process(es) are retrieved. The matches are ranked by the number of values in the predetermined feature case that match the applicable feature case.
[0063] The retrieved processes are sorted based on ranking highest to lowest. For each retrieved process its VB rules (fldRule_tblProcess 1052) are evaluated to True or False. A NULL rule evaluates to TRUE. For the processes with VB rules evaluated to True, either the user will be asked to select or by default the highest ranking process is selected.
[0064] Once the process is selected for the feature, the process steps are retrieved via SQL query. Optionally, each process step may also have a rule (not shown in Figs. 10A - 10F). The VB rales are evaluated to True or False. A NULL rule evaluates to True. The process step is executed only when its rule evaluates to true.
[0065] In order to better understand the process selection process, an example of a DB having eight features cases (feature case ID F51 - F58) is described below. The feature cases are generated using the following example data:
[0066] Feature Type: M, MF
[0067] Key 1: SizeM with Values: M8xl.25, M10xl.25, M12xl.5, M14x2
[0068] Key 2: Tol with Values: A, B, C
[0069] Key 3: Class with Values : XI, X2, X3
[0070] Key 4: Family with Values: Hard, Soft
[0071] Table I below shows an example DB having a plurality of feature cases with associated processes, where the processes are identified by ProcessCaselD.
[0072] Table I
[0073] Given an applicable feature case with a particular feature and key/value pair, Table I is searched to find the feature case ID (FeatureCaselD) and thus the process (ProcessCaselD) for the feature case. There are typically three search scenarios of interest.
[0074] Scenario 1 : The search criterion is more specific than the data available.
[0075] Search Criteria (M, M8xl.25, A, xl, Soft)... Returns (54). For a search which matches the feature M and at least on e key/value, which is called in this example a full search, the feature case IDs returned are (54, 58, 53, 55, 56, 57).
[0076] Search Criteria (M, M8xl.25, A, xl, Hard)...Returns (54); full search returns (54, 53, 55, 56, 57, 58)
[0077] Search Criteria (M, M8xl.25, B, xl, Soft)... Returns (55); full search returns (55, 54, 58, 53, 56, 57)
[0078] Scenario 2: The search criterion is less specific than the data available.
[0079] Search Criteria (M, M8xl.25)...Returns (53); full search returns (53, 54, 55, 56, 57)
[0080] Search Criteria (M, M8xl.25, A)... Returns (53); full search returns (53, 54, 56, 57,
55, 58)
[0081] Scenario 3: The Search criterion is equivalent to the data available [0082] Search Criteria (M, M10xl.25)...Returns (52); full search returns (52)
[0083] Search Criteria (M, M8xl.25, A, xl)... Returns (54); full search returns (54, 53, 55,
56, 57, 58)
[0084] Search Criteria (M, M8xl.25, A, x3)... Returns (57); full search returns (57, 53, 54,
56, 55, 58)
[0085] The search criteria may be implemented using SQL. As seen from the above example, a feature case, i.e., search criterion, may be more specific, less specific, or equivalent to the data in the database, hence different processes may be returned for different feature cases. In one embodiment, different feature cases are tried and the feature case that most closely fits the data in the database, i.e., the search criterion equivalent to the data
available or closest to the data available, is selected. The processes associated with the selected feature case have their rales evaluated and the rales evaluating to "true" are used to machine the part.
[0086] From the above example, it can be seen that multiple feature type rules, key/value rules, and process rales may be trae at the same time, and a conflict of which rule to execute may occur. In one embodiment, the user is shown the choices and must select one of the choices. The user by setting a conditional expression to automatically select his/her choice, has incorporated his/her decision rationale into the system, e.g., generating program 712. Thus the expert, i.e., user, is teaching the system, and the system is capturing the expert's knowledge. In another embodiment, a default priority may be set.
[0087] Although specific embodiments of the invention have been described, various modifications, alterations, alternative constructions, and equivalents are also encompassed within the scope of the invention. The described invention is not restricted to operation within certain specific data processing environments, but is free to operate within a plurality of data processing environments. Additionally, although the invention has been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that the scope of the invention is not limited to the described series of transactions and steps.
[0088] Further, while the invention has been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of the invention. The invention may be implemented only in hardware or only in software or using combinations thereof.
[0089] The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions, and other modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.