EXTENSIBLE METROLOGY SYSTEM

Abstract: Methods and apparatus for extending the capabilities of a metrology system are disclosed. In one embodiment, the metrology system includes a measurement device to measure a physical part and a measurement device controller including a plurality of measurement objects available for use by a measurement program processor to cntrol the measurement device. A method is provided for modifying the measurement device controller. A measurement object defined according to a measurement object specification is identified. The measurement object is not one of the plurality of measurement objects. The measurement object is added to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor.

Description: EXTENSIBLE METROLOGY SYSTEM Field of the Invention The present invention is directed to methods and apparatus for interacting with measuring devices and, more specifically, to methods and apparatus for allowing users to - extend the capabilities of software for controlling measurement devices. Description of the Related Art Coordinate measuring machines (CMMs) are used for dimensional inspection of workpieces such as machined parts. A workpiece is typically secured to a table, and a measuring probe is movable within a measuring volume. Measuring scales monitor the position of the probe within the measuring volume. To measure the coordinates of a point on the workpiece, the probe may be brought into contact with the point, and the X, Y, and Z measuring scales of the machine are read. To measure a distance between two points, the points are contacted successively, the coordinates of both points are read and distance is calculated from the coordinates. Contact probes and non-contact probes, such as optical probes, are known. State of the art coordinate measuring machines have refinements such as high resolution measuring systems, electrical contact probes, motor drives, computer control drives, and computer acquisition and processing of data. CMMs are used to measure dimensions of a wide variety of structures. One common use of a CMM is to verify that the dimensions of a manufactured part conform to the dimensions specified by the part's design. In particular, it is common to design a part using Computer Aided Design (CAD) software, which is capable of generating and manipulating a three-dimensional model of a part, to manufacture the part according to the design, and then to verify the accuracy of the manufacturing process by measuring the manufactured part using a CMM. The CMM may, for example, take physical measurements of the manufactured part and compare the measurements to the ideal measurements specified by the CAD model. A variety of manufacturers produce a large number of CMMs for measuring a wide variety of parts. Some CMMs, for example, are adapted to measure very large parts, such as airplane wings, while other CMMs are adapted to measure extremely small parts, such as components of computer chips. Typically, a manufacturer of CMMs designs, manufactures, and provides a separate controller to be used with each model of CMM. A human operator uses the controller to control the actions of the CMM. Some controllers take the form of software executing on a computer. Referring to FIG. 1 , for example, in a typical prior art metrology system 100, a CMM controller 106 controls a CMM 102. To cause the CMM 102 to measure a part 104, a user provides user input 110 to the CMM controller 106. The user input 110 describes the actions that the user wishes the CMM 102 to take. The CMM controller 106 translates the instructions embodied by the user input 110 into instructions (e.g., computer program instructions or electrical signals) that the CMM 102 understands. In response, the CMM 102 measures the part 104 using, e.g., a touch probe. The CMM 102 provides measurement data descriptive of the part 104 to the CMM controller 106. The CMM controller 106 provides results of the measurement to the user in the form of display information 112. As described above, the manufacturer of the CMM 102 typically designs the CMM controller 106 to work in conjunction with the particular CMM 102. Furthermore, the CMM controller is typically configured with a predefined set of commands that the user can use to control operation of the CMM 102, a predefined set of three-dimensional shapes for modeling the part 104 to be measured, and a predefined set of tolerances for indicating acceptable degrees of difference between the ideal measurements of the part 104 and the actual measurements of the part 104 obtained by the CMM 102. The propagation of this large number of CMM controllers having fixed capabilities results in a number of problems. One problem is that because each CMM controller has a fixed set of capabilities, different CMM controllers are used for different purposes in accordance with their capabilities. Typically, each CMM controller understands a distinct set of commands and provides a distinct user interface to the operator. Because each CMM controller functions differently, CMM controller operators need to learn how to use a variety of different CMM controllers for a variety of different purposes. This makes the task of operating CMMs difficult, because operators need to know how to use multiple CMM controllers. A further problem is that users who require functionality that is not provided by a particular CMM controller cannot easily obtain such functionality. If a user requires additional functionality, the only recourse is typically to switch to another CMM controller or RECTIFIED SHEET (RULE 91) to contact the manufacturer of the CMM controller and request that the additional functionality be added to a future version of the CMM controller (which may, as described above, be implemented in software). In such a case, the user is not guaranteed that the requested functionality will be added to the next version of the CMM controller, and if it is, the next version may not be released for a significant amount of time. Furthermore, adding user-requested functionality to a CMM controller introduces a number of problems. For example, if the CMM controller is implemented in software, subsequent releases of the software will include functionality requested by a variety of users, and as a result individual users will receive software with functionality that they do not need. Furthermore, some users may wish to retain proprietary rights in functionality designed at their request or otherwise maintain the confidentiality of such functionality, neither of which is possible with public releases of software. Although the developer of CMM controller software could release the source code of the software to its users to enable them to make their own modifications to the software, such modifications would be difficult for users to implement, would result in propagation of a variety of versions of the software, and would not maintain the confidentiality of the source code. What is needed, therefore, is a CMM controller whose capabilities may easily be extended by its users. Summary In one aspect, the present invention is directed to a method for modifying a measurement device controller in a metrology system. The metrology system includes the measurement device controller and a measurement device to measure a part. The measurement device controller includes a plurality of measurement objects available for use by a measurement program processor to control the measurement device. The method includes steps of: (A) identifying a measurement object defined according to a measurement object specification, wherein the measurement object is not one of the plurality of measurement objects; and (B) adding the measurement object to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor. In one embodiment, the measurement device controller comprises a computer, the measurement program processor comprises a computer program executable on the computer to execute computer program instructions to control the measurement device, and the step (A) includes a step of: (A)(1) identifying a measurement object defined according to a measurement object specification in compliance with an object model provided by an underlying operating system of the computer for specifying software objects to be shared among computer programs executing on the computer. In another embodiment, the underlying operating system of the computer comprises an operating system in the Windows family of operating systems, and the object model comprises an object model consistent with the Component Object Model. In a further embodiment, the underlying operating system of the computer includes a database of software objects available for use in the operating system, and the step (A) includes steps of: (A)(l)querying the database of software objects for software objects defined in accordance with the measurement object specification; and (A)(2) identifying the measurement object based on results of the query. The underlying operating system of the computer may be an operating system in the Windows family of operating systems, and the step (A)(1) may include a step of querying the Windows Object Broker for software objects defined in accordance with the measurement object specification. In another embodiment, the measurement device controller comprises a computer, the measurement program processor comprises a computer program executable on the computer, and the step (B) includes a step of: (B)(1) generating an instance of the measurement object without modifying source code of the measurement program processor. In a further embodiment, the measurement device controller includes a computer, the measurement program processor comprises a computer program executable on the computer, and the step (B) comprises a step of: (B)(1) generating the measurement object to the plurality of measurement objects without compiling source code of the measurement program processor. In another embodiment, the method further includes a step of: (C) generating an instance of the measurement object without modifying the measurement program processor. In another embodiment, the measurement device controller comprises a computer, the measurement program processor comprises a computer program executing on the computer, and the step (A) includes a step of: (A)(1) identifying a measurement object defined by a computer program other than the measurement program processor. The measurement object may, for example, be an inspection program item specifying computer program instructions for controlling the measurement device, a feature specifying physical properties of parts measurable by the measurement device, or a tolerance specifying at least one range of values of at least one physical property of a part measurable by the measuring device. Brief Description of the Drawings FIG. 1 is a block diagram of a prior art metrology system. FIG. 2 is a block diagram of a metrology system according to one embodiment of the present invention. FIG. 3 is a block diagram of metrology software according to one embodiment of the present invention. FIG. 4 is a block diagram of a measurement program according to one embodiment of the present invention. FIG. 5 is a block diagram of a data structure used to identify and create a measurement object according to one embodiment of the present invention. FIG. 6 is a flow chart of a process for identifying available measurement objects according to one embodiment of the present invention. FIG. 7 is a flow chart of a process for assigning values to properties of a measurement object according to one embodiment of the present invention. FIG. 8 is a flow chart of a process for adding a user-defined measurement object to metrology software according to one embodiment of the present invention. Detailed Description In one aspect, the present invention is directed to metrology software including user- defined measurement objects. As used herein, and as described in more detail below, the term "measurement object" refers to any data and/or computer program instructions that may be used to control measurement of a part by a measurement device, such as a CMM. As described in more detail below, a user may create new measurement objects for use in the metrology software or import measurement objects from other software (e.g., CAD software) for use in the metrology software. Such user-defined measurement objects may be added to the metrology software without modifying the metrology software ' s source code or rebuilding the metrology software. In this way, the capabilities of the metrology software of the present invention may be easily extended by the user to satisfy the user's needs. Various features, embodiments, and advantages of the present invention will now be described in more detail. Referring to FIG. 2, in one embodiment of the present invention, a metrology system 200 is provided including a CMM controller 206 to control a CMM 202. To cause the CMM to measure a part 204, a user provides user input 210 to the CMM controller 206. The user input describes the actions that the user wishes the CMM 202 to take. The CMM controller 206 translates the instructions embodied by the user input 210 into instructions (e.g., computer program instructions or electrical signals) that the CMM 202 understands. In response, the CMM 202 measures the part 204 using, e.g., a touch probe. The CMM 202 provides measurement data descriptive of the part 204 to the CMM controller 206. The CMM controller 206 provides results of the measurement and other output to the user in the form of display information 212. Print, record on disk, etc. As described above, the manufacturer of the CMM 202 typically designs the CMM controller 206 to work specifically in conjunction with the CMM 202. The CMM controller 206 is provided with a CMM driver 224 which is typically a software program that acts as an interface between the CMM controller 206 and the CMM 202. The CMM controller 206 may be configured to control other CMMs (not shown) by providing the CMM controller 206 with CMM drivers configured to communicate with the other CMMs. The CMM controller 206 includes metrology software 214. The metrology software 214 may be implemented in any of a number of ways, such as by an application program residing in a computer-readable memory and executing on a computer processor. The metrology software 214 provides the user with the ability to issue commands to the CMM 202 to cause the CMM 202 to measure the part 204, to provide measurement data to the CMM controller, and to analyze the measurement data. The manner in which the user issues such commands to the metrology software 214 is better understood in conjunction with a discussion of the measurement objects 216, which will now be described in more detail. The measurement objects 216 may include any data and/or computer program instructions that may be used to control measurement of the part 204 by the CMM 202. For example, referring to FIG. 3, three kinds of measurement objects that may be supported by the metrology software 214 are referred to herein as features 304, tolerances 306, and inspection program items 302. The features 304 include components from which physical parts (e.g., the part 204) to be measured may be composed. For example, the features 304 include features corresponding to a plane 304a, a line 304b, a point 304c, a circle 304d, a cylinder 304e. and a cone 304f. Features 304 will be described in more detail below. The tolerances 306 define acceptable ranges of values for properties of features 304. For example, the tolerances 306 include a tolerance corresponding to flatness 306a, diameter 306b, length 306d, position 306e. parallelism 306f. and circularity 306g. Tolerances 306 will be described in more detail below. Inspection program items 302 correspond to computer program instructions for controlling the CMM 202. For example, the inspection program items 302 include measure feature 302a, evaluate tolerance 302b, start loop 302c, end loop 302d, and if-then-else 302e inspection program items. The user of the metrology software 214 may select, customize, and arrange inspection program items 302, features 304, and tolerances to generate a measurement program 220 to carry out a sequence of measurement- related activities. The metrology software 214 includes both standard measurement objects 218a and user-defined measurement objects 218b. The standard measurement objects 218a correspond to measurement objects that are provided by the manufacturer of the metrology software 214 and which are intended to be of general use to users of the CMM controller 206. For example, the plane 304a is one of the standard measurement objects 218a. The user-defined measurement objects 218b include measurement objects that are created by the user of the CMM controller 206 using the metrology software 214 or which the metrology software 214 imports from other software or devices. The ability to generate user-defined measurement objects 218b provides significant advantages over conventional metrology software by enabling the user to expand the capabilities of the metrology software 214 to suit the user's particular needs. Each of the features 304 defines a set of properties. For example, the plane feature 304a may be defined by a width property and a height property. The user of the metrology software 214 may select one of the features 304 and assign ideal values to its properties corresponding to desired properties of the part 204 to be measured. In one embodiment of the present invention, the metrology software 214 provides the user with a graphical user interface (such as the graphical user interface provided by the Windows family of operating systems) through which the user may select a particular Feature from a list of available features 304 (including both standard features and user-defined features). Having selected a feature, the user may provide the metrology software 214 with values for the properties of the selected feature. For example, if the user selects the plane feature 304a, the user may provide the metrology software 214 with values for the width and height of the plane feature 304a. Similarly, the user may select and provide values for properties of other features and combine the features together to form a model of the part 204 to be measured. Features 304 are capable of storing both ideal properties and properties measured by the CMM 202. For example, as described above, the user may provide ideal values for the properties of features of the part 204. When the CMM 202 measures the part 204, CMM 202 provides measurement data describing the object to the metrology software 214. The metrology software 214 may then store the actual measurements of the part 204 in the features in the user's model corresponding to the part 204. The ideal and real values may then be used for further processing, as described in more detail below with respect to the discussion of tolerances 306. Referring to FIG. 3, the metrology software 214 includes standard classes of tolerances 306. As used herein, a "tolerance" refers to an acceptable range(s) of values for a feature. The tolerances 306a-f shown in FIG. 3 correspond to a number of tolerances that are typically useful for validating features of objects measured by the CMM 202, and that are therefore typically provided with metrology software. For example, the tolerances 306a-f include flatness 306a, diameter 306b, length 306c, position 306d, parallelism 306e, and circularity 306f. Each of these tolerances 306 defines an acceptable range of property values for a particular feature. For example, the length tolerance 306c defines an acceptable range or ranges of a feature such as the line feature 304b. The metrology software 214 provides the user with a user interface through which the user may select one of the tolerances 306, provides values for its properties, and associate the selected tolerance with one of the features 304. For example, assume that the user has defined a line feature and assigned an ideal length to the line feature. The user may then use the graphical user interface of the metrology software 216 to select the length tolerance 306c. The length tolerance 306c may have any of a variety of properties for defining an acceptable length or lengths. For example, the length tolerance 306c may have a minimum length property and a maximum length property to which the user may assign values. After providing values for the properties of the length tolerance 306c, the user may associate the length tolerance 306c with the line feature 304b. RECTIFIED SHEET (RULE 91) Using the techniques described above, a user of the metrology software 214 may generate and assemble a number of features and tolerances to generate a model of the part 204 to be measured, as described in more detail below with respect to FIG. 4. Referring to FIG. 3, a number of standard classes of inspection program items 302a-e are shown. As used herein, the term "inspection program item" refers to an item specifying computer program instructions for controlling the CMM 202. The inspection program items 302a-f shown in FIG. 3 correspond to a number of computer program instructions that are typically useful for controlling the CMM 202 and that are therefore typically provided with metrology software. For example, the "measure feature" 302a inspection program item defines a sequence of computer program instructions specifying the actions that the CMM 202 should take to measure a feature of the part 204. Referring again to FIG. 2, the user may select, customize, and assemble inspection program items, features, and tolerances to form a measurement program 220. In general, the measurement program 220 describes a sequence of instructions that are to be executed to cause the CMM 202 to measure the part 204, to analyze the results of the measurements, and to respond to the results of the measurements. The instructions in the measurement program 220 are executed by a measurement program processor 222, which instructs the CMM 202 (through the CMM driver 224) to carry out the instructions in the measurement program 220 and issues instructions to the metrology software 214 to, for example, store measurement data in the measurement objects. Referring to FIG. 4, an example measurement program 220 is shown. As shown in FIG. 4, the measurement program 220 may include a sequence of inspection program items 426-440 to be executed by the measurement program processor 222. To insert an inspection program item, such as the measure feature inspection program item 426, into the measurement program 220, the user of the metrology software 214 may select the measure feature item 302a (FIG. 3) using the graphical user interface of the metrology software 214. The user may then associate the measure feature item 302a with a particular feature, such as the plane feature 402. When the measure feature item 426 is subsequently executed (as described below), the CMM 202 will be instructed to measure a plane of the part 204 defined by the plane feature 402. The CMM 202 will provide the measurement data thus obtained to the measure feature inspection program item 426, which stores the measurement data in the plane feature 402. As a result, the plane feature 402 will contain both the ideal measurements RECTIFIED SHEET RULE 91 of the corresponding plane as input by the user and the actual measurements of the plane as measured by the CMM 202. The standard inspection program items may also include an evaluate tolerance inspection program item 302b (FIG. 3). The evaluate tolerance inspection program item 302b defines a sequence of computer program instructions for evaluating one of the tolerances 306 with respect to a feamre with which it is associated. For example, as shown in FIG. 4, the flatness tolerance 416 is associated with the plane feature 402. An evaluate tolerance inspection program item 428 is associated with the plane feature 402. When the evaluate tolerance inspection program item 428 is executed (as described in more detail below), the evaluate tolerance inspection program item 428 will determine whether the measured properties of the plane 402 fall within the limits specified by the flatness tolerance 416, and will then store a result of the indication that may be used by subsequent inspection program items in the measurement program 220. The user of the metrology software 214 may select the evaluate tolerance inspection program item 302b using the graphical user interface of the metrology software 214. The user may then associate the evaluate tolerance inspection program item 302b with a particular feature, such as the plane feature 402 (FIG. 4). Other standard inspection program items include a start loop inspection program item 302c, which may be used to initiate a program loop (i.e., a sequence of inspection program items to be repetitively executed until the occurrence of a specified termination condition); an end loop inspection program item 302d, which is used in conjunction with the start loop inspection program item 302c to indicate the end of the sequence of inspection program items to be repetitively executed; and an if-then-else inspection program item 302e which provides a standard if-then-else computer program construct to conditionally perform specified inspection program items based on specified branch conditions. As shown in FIG. 4, the measurement program 220 includes a sequence of inspection program items 426-440 including measure feature inspection program items 426, 432, and 434, and evaluate tolerance inspection program items 428, 430, 436, 438, and 440. The measurement program 220 may, however, include any inspection program items arranged in any order. In one embodiment of the present invention, the metrology software 214 enables a user to define new measurement objects, such as new inspection program items, new features, and new tolerances, within the metrology software 214. The user may define such new measurement objects in any of a variety of ways. For example, in one embodiment of the present invention, the user may define a new measurement object by defining properties of the new measurement object within the metrology software 214. In another embodiment of the present invention, the user may define a new measurement object by importing a measurement object into the metrology software 214 from a software application such as a CAD program. In one particular embodiment of the present invention, the metrology software 214 enables the user to define new classes of measurement objects without modifying the source code of the metrology software 214. In a further embodiment of the present invention, the metrology software 214 enables the user to define new classes of measurement objects without recompiling the metrology software 214. In one embodiment of the present invention, measurement objects (including both the standard measurement objects 218a and the user-defined measurement objects 218b) are represented as software objects in a memory of a computer according to the Component Object Model (COM). COM is a component software architecture provided by Microsoft Corporation of Redmond, Washington for use in conjunction with the Windows family of operating systems (e.g., Windows 3.1, Windows 95/98, and Windows NT). COM allows applications and systems to be built from components supplied by different software vendors. COM is the underlying architecture that forms the foundation of higher-level software services provided in Windows, such as those provided by Object Linking and Embedding (OLE). COM provides for communications between components (including communication across process and network boundaries), shared memory management between components, error and status reporting, and dynamic loading of components. In one embodiment of the present invention a COM component named CoInspectionPlanProgram (COIPP) is defined that provides the functionality of the measurement program 220. The internal structures of a COIPP component can describe the measurement program 220 without being bound to any particular traditional programming language, and are therefore language-independent. Also defined is a CoElement component that provides the functionality of measurement objects. A CoInspectionProgramltem (CoIPItem) COM component defines the functionality of inspection program items, a CoEFeature component provides the functionality of features, and a CoETolerance component provides the functionality of tolerances. A COIPP component may provide a variety of functionalities. For example, the COIPP component, as described above, may contain a sequence of CoIPItems and may therefore be used to define the measurement program 220. A single CoIPItem is associated with executable code for an inspection program item and corresponds to a complete unit of program execution. CoIPItems may be arranged in any order within the COIPP component. Once CoIPItems have been selected and arranged within a COIPP component, some or all of the CoIPItems within the COIPP component may be executed using known techniques. As described above, CoIPItems correspond to inspection program items 302 in one embodiment of the present invention. For example, a variety of CoIPItems may be defined, each corresponding to a distinct inspection program item. In one embodiment of the present invention, CoIPMeasureFeature corresponds to the measure feature inspection program item 302a, CoIPStart corresponds to the start loop inspection program item 302c, CoIPEnd corresponds to the end loop inspection program item 302d, CoIPTolerance corresponds to the evaluate tolerance inspection program item 302b, and CoIPIfThenElse corresponds to the if- then-else inspection program item 302e. As a COM component, the COIPP component provides a public interface including methods for interacting with the COIPP component. For example, the COIPP component provides methods for obtaining a pointer to the first CoIPItem in the sequence of CoIPItems within the COIPP component, for getting the last CoIPItem in the sequence of CoIPItems within the COIPP component, for setting the current CoIPItem within the COIPP component (i.e., the CoIPItem to next be executed), for getting a pointer to the current CoIPItem within the COIPP component, for getting a pointer to the next CoIPItem in the sequence of CoIPItems within the COIPP component, and for obtaining the number of CoIPItems in the COIPP component. All of these methods may be implemented using known data structures and techniques. The public interface provided by the COIPP component also provides a variety of methods for executing CoIPItems in the COIPP component. For example, the COIPP component provides methods for executing the current CoIPItem in the sequence of CoIPItems contained in the COIPP component, for executing a specified number of CoIPItems, and for executing all CoIPItems. Each of these methods may be implemented by maintaining a pointer within the COIPP component to the current CoIPItem and by executing the executable code associated with the appropriate CoIPItems. Similarly, the public interface provided by the COIPP component provides a variety of methods for manipulating the sequence of CoIPItems within the COIPP component. For example, the COIPP component provides methods for adding a CoIPItem to the COIPP component, for deleting all CoIPItems in the COIPP component, and for deleting a specified CoIPItem in the COIPP component. Each of these methods may be implemented by maintaining the sequence of CoIPItems in a standard data structure such as an array, list, or queue, and by applying known techniques for adding and deleting elements from such a data structure. As a COM component, the CoIPItem component provides a public interface including methods for interacting with the CoIPItem component. For example, the CoIPItem component includes methods for returning the type of the CoIPItem component and for getting and setting a text comment associated with the CoIPItem component. Similarly, each type of CoIPItem component provides methods in its public interface. For example, the CoIPStart component provides methods for setting and getting a name for the CoIPStart component. The CoIPMeasureFeature component provides methods for defining a path of points to measure on the corresponding feature and for getting and setting the feature to be measured by the CoIPMeasureFeature component. The CoIPTolerance component provides methods for getting a pointer to the tolerance to be measured by the CoIPTolerance component and for setting an output format to be used to format the results of evaluating the associated tolerance. The CoIPLoop component provides methods for getting and setting a starting value for a loop counter, for getting and setting an ending value for the loop counter, and for getting and setting a loop step value (a value to be added to the loop counter upon each iteration of the loop). It should be appreciated that the particular implementations of COM objects described above for representing the inspection program items 302, features 304. and tolerances 306 are provided merely for purposes of example and are not limiting. Rather, as will be apparent to those of skill in the art, the inspection program items 302, features 304, and tolerances 306 may be implemented in any of a variety of ways using COM or other component or object- oriented technologies. Addition of user-defined measurement objects 218b to the metrology software 214 according to one embodiment of the present invention will now be described. In this embodiment, the metrology software 214 is implemented as a software application program operating in accordance with COM in the Microsoft Windows operating system environment, as described above. When the metrology software 214 is installed on the CMM controller 206 (which may, for example, be a personal computer), the installation process registers standard measurement objects 218a, each of which is implemented as a CoIPItem component, with the Windows Object Broker. The Windows Object Broker is a database maintained by the Windows operating system for storing information about application programs. COM components, and other software and data available for use within the operating system environment. Referring to FIG. 5, each registry entry created by the installation process is associated with a particular one of the standard measurement objects 218a, and includes a unique identifier 502 for the measurement object and an executable file 504 that may be used to create an instance of the corresponding measurement object. To subsequently create an instance of a particular measurement object, such as the measurement object having the registry entry 500, the metrology software 214 may invoke a standard COM method for generating objects using the unique identifier 502 of the measurement object. In response, the Windows operating system creates an instance of the measurement object by executing the computer program instructions within the executable file 504 and provides the metrology software 214 with a handle to the created instance. Referring to FIG. 6, in one embodiment of the present invention the metrology software 214 uses a process 600 to identify all COM measurement objects that have been registered with the Windows operating system. As described in more detail below, both standard measurement objects 218a and user-defined measurement objects 218b may be registered with the Windows operating system and the metrology software 214 may therefore use the process 600 to identify both standard measurement objects 218a and user-defined measurement objects. The metrology software 214 may, for example, execute the process 600 upon initialization of the metrology software 214 to obtain a complete list of available measurement objects 216 for display to the user. The metrology software 214 requests a list of the unique identifiers of all registered measurement objects from the Windows Object Broker using a routine named CcatInformation() provided by the Object Broker (step 602). In response, the Object Broker provides the metrology software 214 with the requested unique identifiers. The metrology software 214 uses the identifiers obtained in step 602 to create a single instance of each registered measurement object (step 604). As described above, COM provides a method named CoCreatelnstanceQ that creates an instance of a component having a specified identifier. The metrology software 214 may use this method to create the measurement object instances in step 604 using the identifiers obtained in step 602. Each of the measurement objects 216 provides a method that returns a text string containing a name of the measurement object. The metrology software 214 invokes this method for each of the measurement object instances created in step 604 to obtain the name of each of the measurement objects (step 606). The metrology software 214 inserts each of the names into a menu containing a list of available measurement objects (step 608) and screen displays the menu to the user (step 610). The user may then select from the menu the name of any measurement object, including either one of the standard measurement objects 218a or one of the user-defined measurement objects 218b. Referring to FIG. 7, in one embodiment of the present invention the metrology software 214 uses a process 700 to handle selection of a measurement object by the user. The metrology software 214 receives the selection from the user of a measurement object (step 702). The metrology software 216 identifies the unique identifier of the measurement object selected by the user (step 704), and invokes the CoCreatelnstanceO method described above to create an instance of the selected measurement object (step 706). The metrology software 214 receives from the user values for the properties of the measurement object instance (step 708) and stores the received values in the measurement object instance (step 710). The user may provide values for the properties (step 708) in any of a variety of ways, and the present invention is not limited to any particular way for providing or receiving values for properties of measurement objects. For example, to provide values for a feature, the metrology software 214 may allow the user to select from a list of three-dimensional shapes. In response, the metrology software 214 may use the dimensions of the selected three dimensional shape to provide the values for the properties of the feature. Alternatively, upon creation of an instance of a selected measurement object (step 706), the metrology software screen 214 may display a property page containing descriptive labels for each property of the feature. Displayed next to each descriptive label may be a text field in which the user may enter values for the corresponding properties. Another alternative way for the user to provide values for the properties of a feature is for the user to instruct the metrology software 214 to instruct the CMM 202 to measure the part 204 and to use the measurement data obtained thereby to provide values for the properties of the feature. The user may refine the measurements obtained in this way. For example, the user may modify the measurements obtained to make them match a desired ideal feature more closely or to eliminate measurement errors. Similarly, the metrology software 214 may allow the user to provide values for properties of a tolerance in any of a variety of ways. For example, upon creation of an instance of a tolerance (step 706), the metrology software 214 may display a property page containing descriptive labels for each property of the tolerance. Displayed next to each descriptive label may be a text field in which the user may enter values for the corresponding screen properties. Typically, the user may identify, through the property page, which feature to associate with the tolerance as well as limits for the acceptable range(s) of values defined by the tolerance. Such ranges may be defined in any of a variety of ways, such as by use of minimum and maximum numerical limits or by reference to boolean expressions including mathematical functions of the properties of the corresponding feature. It should be appreciated that the available measurement objects 216 may be identified to the user in any of a variety of ways, and that the menu created by the process 600 is described purely for purposes of example. The metrology software 216 may, for example, generate a list of measurement object names in a dialog box or in a text box. Alternatively, the metrology software 214 may display graphical icons corresponding to available measurement objects 216 or allow the user to select a measurement object by typing or speaking the name of the measurement object to select. In one aspect of the present invention, the user may add user-defined measurement objects 218b to the metrology software 214. For example, consider a user who wishes to add a new "Key Hole" feature corresponding to a three-dimensional keyhole, a new tolerance "Key Length" defining acceptable lengths of keys for use with the keyhole, and a new inspection program item "Measure Key" for measuring a Key Hole feature. In one embodiment of the present invention, the user may add a user-defined measurement object to the metrology software by defining a new COM component that implements the methods of the interface of the measurement object component CoElement. In particular, to define a user-defined feature (such as the "Key Hole" feature), the user defines a new COM component that implements all of the methods of the CoEFeature interface, described above. Similarly, to define a user-defined tolerance (such as the "Key Length"), the user defines a new COM component that implements all of the methods of the CoETolerance interface, described above. Similarly, to define a user-defined inspection program item (such as the "Measure Key" inspection program item), the user defines anew COM component that implements all of the methods of the CoIPItem interface, described above. COM components for user-defined measurement objects 218b may be defined in the source code of any programming language, such as C, C++, or Java. Once the user has defined a new COM component corresponding to a user-defined measurement object, the user may compile the source code for the COM component to produce object code. The object code may, for example, be stored in a library file referred to as a dynamic link library (DLL). To make the newly-defined measurement object available for use in the metrology software 214, the user may register the user-defined measurement object using an application program provided with the Windows operating system in a file named regsvr32.exe. Executing this file with the measurement object DLL as a parameter causes the measurement object to be registered with the Windows Object Broker. As described above, this results in an object broker entry being made for the measurement object which contains a unique identifier for the measurement object and an executable file that may be executed to create an instance of the measurement object within the metrology software 214. The techniques described above may be used to create instances of the user-defined measurement object within the metrology software 214 in the same manner as the standard measurement objects 218a. The description above refers specifically to techniques that may be used to add a user- defined measurement object to the metrology software 214 within the Windows operating system environment. It should be appreciated that this description is provided merely for purposes of example and is not limiting, and that embodiments of the present invention may be used in conjunction with any operating system. Referring to FIG. 8, in general, to add a user-defined measurement object to the metrology software 214, the user provides a definition of the measurement object to be added (step 802). In the example described above, the definition includes the object code contained in the DLL created from the user ' s source code. If the user-defined measurement object is to be used within an operating system environment that includes a standard means for defining software components, such as COM, the definition provided in step 802 may be provided in accordance with the software component standard. The user then adds the definition of the measurement object to a list of available measurement objects (step 804). In the example described above, the list of available measurement objects is contained within the Windows Object Broker. If the user- defined measurement object is to be used within an operating system environment that includes a standard means for defining software components, such as COM, the list of available measurement objects may be maintained in accordance with the software component standard. Furthermore, the definition of the measurement object provided in the list of available measurement objects may provided a means for creating an instance of the measurement object, such as the executable file 504 (FIG. 5). As described above, the user may add user-defined measurement objects to the metrology software 214 by generating source code for the measurement objects and compiling the source code into object code. The user may, however, add user-defined measurement objects 218b to the metrology software 214 in any of a variety of ways. For example, the user may import measurement objects into the metrology software 214 from other software applications, such as from a CAD program. For example, in one embodiment of the present invention, a software application such as a CAD program provides definitions of measurement objects, such as features defining a three-dimensional object, in a form that may be imported into the list of user-defined measurement objects. For example, the CAD program may provide definitions of measurement objects in a DLL file. The metrology software 214 may import these measurement object definitions from the DLL using the Windows registration executable file regsvr32.exe in the same manner described above with respect to the user DLL. Once the measurement objects from the CAD program have been imported into the metrology software 214, the user may create and manipulate the imported measurement objects within the metrology software in the same manner as other measurement objects, such as the standard measurement objects 218a. Various aspects of the present invention have a number of benefits and advantages including, but not limited to, the following. One advantage of the ability to create user- defined measurement objects and to import measurement objects from other application programs is that the user may use a single metrology software (e.g., the metrology software 214) to measure a wide variety of objects using a variety of CMMs. Users may therefore choose to use the metrology software 214 to satisfy all of their metrology needs, rather than using a variety of metrology software associated with various CMMs and objects to be measured. This ability to use metrology software 214 for a wide variety of uses in place of using a variety of metrology software may result in decreased costs associated with training operators of CMM controllers, because such operators will only need to learn how to use the single metrology software 214, rather than a variety of incompatible metrology software. Furthermore, as operators of the CMM controller 206 become more experienced with the operation of the metrology software 214, they may develop additional measurement objects for use with the metrology software 214 more quickly than if they continued to use a variety of metrology software. Thus development times and associated costs may be decreased as a result of replacing a variety of incompatible metrology software with the metrology software 214. Because the metrology software 214 uses a single user interface to receive user input 210 from the user and to provide display information 212 to the user regardless of the CMM that is controlled by the CMM controller 206 or the object that is measured by the CMM, operators of the CMM controller 206 need only learn how to use a single user interface to measure objects, resulting in increased ease of use compared to conventional environments in which operators must learn how to use multiple user interfaces to interact with multiple CMMs and measure multiple objects. Furthermore, if the user interface provided by the metrology software 214 is one that is familiar to CMM operators from other environments, such as the graphical user interface provided by the Windows family of operating systems, which is in widespread use on personal computers, required training of CMM operators will be greatly decreased. A further advantage of metrology software that allows creation of user-defined measurement objects 218b is that it eliminates the need for custom software to be developed from the ground up by manufacturers of CMMs for use with individual CMMs. Instead, the metrology software 214 provides the entire operating environment in which the CMM operator can interact with the CMM, except for a small piece of code (e.g., the CMM driver 224) that handles communications between the CMM controller 206 and the CMM 202. All other functions (e.g., user input and output, screen display, creation and manipulation of measurement objects, execution of inspection program items) are handled by the metrology software and need not be performed by software provided with the CMM. As a result, manufacturers of CMMs may rely on the use of the metrology software 214 to enable them to focus on their core business — development and/or manufacture of CMMs — rather than on redundant software development. A further advantage of the metrology software 214 is that it enables users to quickly and easily create user-defined measurement objects 218b for their own purposes. As described above, conventional metrology software is provided with a standard set of measurement objects. Users of such systems cannot create additional user-defined measurement objects for use with such systems. If a user needs an additional measurement object, the only recourse is to use other metrology software or contact the manufacturer of the metrology software and request that additional measurement objects be added to the next release of the software. In such a case, the user is not guaranteed that the requested measurement object will be added to the next release, and if it is, the next release may not be released for a significant amount of time. Furthermore, adding user-requested measurement objects to subsequent releases of the software introduces a number of problems. For example, subsequent releases of the software will include measurement objects requested by a variety of users, and as a result individual users will receive software with measurement objects that they do not need. Furthermore, some users may wish to retain proprietary rights in measurement objects designed for them or otherwise maintain the confidentiality of such measurement objects, neither of which is possible with public releases of software. Although the developer of metrology software could release the source code of the metrology software to its users to enable them to make their own modifications to the metrology software, such modifications would be difficult for users to implement, would result in propagation of a variety of versions of the metrology software, and would not maintain the confidentiality of the metrology software source code. The metrology software 214, which allows users to create user-defined measurement objects, addresses the problems described above. Enabling users to individually and directly implement additional measurement objects to suit their own needs is likely to result in such needs being satisfied more quickly than requiring the users to rely on having their suggestions implemented in subsequent public releases of the metrology software. Users know best what their needs are and how to satisfy them, so it is likely that user-defined measurement objects will satisfy the users' needs well. Furthermore, user-defined measurement objects 218b remain within the user's CMM controller 206 and need not be distributed elsewhere, satisfying the user's need for confidentiality and/or ownership rights to the user-defined measurement objects. The user need not have access to or modify the source code of the metrology software 214, thereby decreasing the complexity of adding measurement objects to the metrology software 214 and maintaining the confidentiality of the metrology software source code. Furthermore, the ability to create user-defined measurement objects 218b without modifying or recompiling the source code of the metrology software 214 greatly reduces the amount of time needed to add measurement objects to the metrology software 214. A related advantage of the metrology software 214 is that it, as described above, it enables the user of the metrology software 214 to import measurement objects from other metrology software. Measurement objects imported in this way can then be used within the metrology software 214 in the same manner as standard measurement objects 218a and user- defined measurement objects 218b generated within the metrology software 214. This ability advantageously allows the operator of the CMM controller 206 to use the metrology software 214 to measure a wide range of objects using a variety of CMMs, without having to manually redefine measurement objects that have already been defined in other metrology software. The ability to automatically import measurement objects in this way provides a significant time savings over manually redefining measurement objects in the metrology software. Furthermore, the ability to import measurement objects from other metrology software into the metrology software 214 enables the operator of the CMM controller 206 to apply capabilities of the metrology software 214 to the measurement objects that are not provided by the other metrology software. The illustrative embodiments of the present invention discussed above have been described in connection with the illustrative system shown in FIG. 2. However, it should be appreciated that the present invention is not limited in this respect, and that the aspects of the present invention described above can be used in connection with computer systems having numerous other configurations capable of providing extensible metrology software. The CMM controller 206 may be any device for controlling the CMM 202. For example, the CMM controller 206 may be a general purpose computer having a processor and a memory, in which case the metrology software 214 may be software executing in the memory of the general purpose computer. The CMM controller 206 may be implemented in hardware, software, firmware, or any combination thereof. Although the CMM controller 206 shown in FIG. 2 contains the metrology software 214, the CMM controller 206 and the metrology software 214 may be merged into a single element or divided into multiple elements for performing the same functions. The CMM controller may communicate with the CMM 202 over any kind of communication link, such as a serial or parallel cable connection, or any kind of network connection, such as a Local Area Network (LAN) connection, a Wide Area Network (WAN) connection, an intranet connection, or an internet connection. The metrology software 214 may be implemented in any of a variety of ways. For example, the metrology software 214 may be implemented as a computer application program residing in a memory of a general purpose computer. The metrology software 214 may be implemented as any kind of computer program, such as an application program, a background process, a driver, or one or more dynamic link libraries. Furthermore, the metrology software 214 is not limited to use with any particular computer platform, computer processor, or high-level programming language. Although the metrology software 214 may be implemented as a computer program executable by a computer processor, the metrology software 214 may be implemented in software, hardware, firmware, or any combination thereof. The metrology software 214 may also be implemented as a computer program product tangibly embodied in a machine-readable storage medium for execution by a computer processor. In this respect, it should be appreciated that the metrology software 214 can be generically considered as a controller, such that the metrology system 200 can be provided with at least one controller to provide a user with the ability to define and provide measurement objects. These functions can be performed by a single controller, or can be distributed among multiple controllers. Various steps of embodiments of the invention, such as those described above and illustrated using flow charts, may be performed by a computer processor executing a program (i.e., software or firmware) tangibly embodied on a computer-readable medium to perform functions by operating on input and generating output. The computer-readable medium may, for example, be a memory in the CMM controller 206, or a transportable medium such as a compact disk, a floppy disk, or a diskette, such that a computer program embodying the aspect of the present invention can be loaded onto any computer. The computer program is not limited to any particular implementation and may, for example, include an application program, foreground or background process, driver, or any combination thereof, executing on a single computer processor or multiple computer processors. Computer programming languages suitable for implementing such a system include procedural programming languages, object-oriented programming languages, and any combination thereof. The measurement objects that may be provided by the metrology software 214 and the measurement objects that may be defined by the user using the user input 210 are not limited to the particular examples of measurement objects described herein. Rather, the kinds of measurement objects (i.e., inspection program items, features, and tolerances) and the particular classes of measurement objects (e.g., Measure Feature, Plane, Flatness) described herein are provided merely for purposes of example and do not constitute limitations of the present invention. Rather, measurement objects may include any include any data and/or computer program instructions that may be used by the metrology software 214 to perform measurements of the part 204. For example, although inspection program items, features, and tolerances are described above as separate classes of measurement objects, these kinds of measurement objects may be combined or subdivided in any manner to perform the same functions. Furthermore, the classes of measurement objects that are described herein as "standard" measurement objects provided by the metrology software 214 are provided merely for purposes of example, and any particular metrology software may offer a fewer or greater number of standard measurement objects and may offer different classes of standard measurement objects. Although the metrology software 214 is described above as operating in accordance with the COM standard, this is provided merely for purposes of example and does not constitute a limitation of the present invention. Rather, the metrology software 214 may operate in conjunction with any system for implementing component-based software on any computer operating system or platform. Furthermore, it should be appreciated that the metrology software 214 need not operate in conjunction with a component object standard, but rather may implement a component object model that is proprietary or otherwise specific to the CMM controller 206 or the metrology software 214. Furthermore, the metrology software 214 is not limited to implementing the measurement objects 216 as components according to a component object model. Rather, the metrology software 214 may implement each of the measurement objects 216 as any kind of data structure, so long as the metrology software 214 provides or operates in conjunction with a mechanism for adding user-defined measurement objects 218b to the metrology software 214 without modifying the source code of the metrology software 214 and without rebuilding the metrology software 214. The CMM 202 may be any coordinate measurement machine or any measurement device for measuring characteristics of a part or parts. For example, the CMM 202 may be WO 01/29624 „ „ PCT/USOO/25802 -24- any of a variety of CMMs available from Brown & Sharpe Manufacturing Company of North Kingstown, Rhode Island. The CMM 202 may use any means for measuring characteristics of the part 204, such as a touch probe or a laser beam. Furthermore, the CMM 202 may measure any characteristic of the part, such as any of the characteristics defined by the features 304. The CMM 202 may gather, store, and transmit measurement data obtained by measuring the part 204 in any known manner. The hardware platform for the CMM controller 206 may be a conventional PC-based microprocessor system, including, for example, a CPU, main memory, a hard disk drive, a keyboard, a mouse, and a video display screen. The part 204 may be any object, regardless of size, shape, or number of component parts. Typically, as described above, a part is modeled within the metrology software 214 by defining features corresponding to the part 204. The part 204 may therefore be any object capable of being modeled by standard and/or user-defined features in the metrology software 214. The user input 210 may provide a variety of information to the CMM controller 206 and may take any of a variety of forms. For example, the user input 210 may include specifications provided by the user of new user-defined measurement objects 218b to be added to the metrology software 214. If the metrology software 214 is implemented using a graphical user interface, as described above, the user input 210 may include any form of input capable of being received by the graphical user interface, such as keystrokes from a keyboard, mouse clicks, and recognized speech. Furthermore, although the metrology software 214 is described above as providing a graphical user interface to interact with the user, the metrology software 214 may use any interface to interact with the user. For example, the metrology software 214 may use a text-based (e.g., command line) interface through which the user may provide text-based commands to the metrology software 214, or the metrology software 214 may be controlled by voice commands issued by the user and recognized by a speech recognition engine. Furthermore, although the metrology software 214 is described above as receiving commands from a user, the metrology software 214 may interact with and receive instructions from a computer or computer program configured to control the metrology software 214. The display information 212 may take any of a variety of forms. For example, as described above, the metrology software 214 may display information to the user through a WO 01 / 29624 ^ PCT/USOO/25802 graphical user interface such as that provided by the Windows family of operating systems. The metrology software 214 may, however, provide other kinds of display information to the user, such as text-based display information in a system such as MS-DOS, or hardcopy generated by a printer. Having described several embodiments of the invention in detail, various modifications and improvement will readily occur to those skilled in the art. Such modifications and improvements are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description is by way of example only, and is not intended as limiting. The invention is limited only as defined by the following claims and the equivalents thereto. What is claimed is:

Claims: WO 01/29624 ^ PCT/USOO/25802 - o- CLAIMS 1. In a metrology system including a measurement device to measure a physical part and a measurement device controller including a plurality of measurement objects available for use by a measurement program processor to control the measurement device, a method for modifying the measurement device controller, the method comprising steps of: (A) identifying a measurement object defined according to a measurement object specification, wherein the measurement object is not one of the plurality of measurement objects; and (B) adding the measurement object to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor. 2. The method of claim 1, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer to execute computer program instructions to control the measurement device, and wherein the step (A) comprises a step of: (A)(1) identifying a measurement object defined according to a measurement object specification in compliance with an object model provided by an underlying operating system of the computer for specifying software objects to be shared among computer programs executing on the computer. 3. The method of claim 2, wherein the underlying operating system of the computer comprises an operating system in the Windows family of operating systems, and wherein the object model comprises an object model consistent with the Component Object Model. 4. The method of claim 1 , wherein the underlying operating system of the computer includes a database of software objects available for use in the operating system, and wherein the step (A) comprises steps of: (A)(1) querying the database of software objects for software objects defined in accordance with the measurement object specification; and (A)(2) identifying the measurement object based on results of the query. 5. The method of claim 4, wherein the underlying operating system of the computer comprises an operating system in the Windows family of operating systems, and wherein the step (A)(1) comprises a step of: querying the Windows Object Broker for software objects defined in accordance with the measurement object specification. 6. The method of claim 1, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer, and wherein the step (B) comprises a step of: (B)(1) adding the measurement object to the plurality of measurement objects without modifying source code of the measurement program processor. 7. The method of claim 1, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer, and wherein the step (B) comprises a step of: (B)(1) adding the measurement object to the plurality of measurement objects without compiling source code of the measurement program processor. 8. The method of claim 1 , further comprising a step of: (C) generating an instance of the measurement object without modifying the measurement program processor. 9. The method of claim 1. wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executing on the computer, and wherein the step (A) comprises a step of: (A)(1) identifying a measurement object defined by a computer program other than the measurement program processor. 10. The method of claim 1, wherein the measurement object comprises an inspection program item specifying computer program instructions for controlling the measurement device. 11. The method of claim 1 , wherein the measurement object comprises a feature specifying physical properties of parts measurable by the measurement device. 12. The method of claim 1, wherein the measurement object comprises a tolerance specifying at least one range of values of at least one physical property of a part measurable by the measuring device. 13. A computer-readable medium encoded with a program for execution on a host computer in a metrology system including the host computer, a measurement device to measure a physical part, and a measurement device controller including a plurality of measurement objects available for use by a measurement program processor to control the measurement device, the program, when executed on the host computer, performs a method for modifying the measurement device controller, the method comprising steps of: (A) identifying a measurement object defined according to a measurement object specification, wherein the measurement object is not one of the plurality of measurement objects; and (B) adding the measurement object to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor. 14. The computer-readable medium of claim 13, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer to execute computer program instructions to control the measurement device, and wherein the step (A) comprises a step of: (A)(1) identifying a measurement object defined according to a measurement object specification in compliance with an object model provided by an underlying operating system of the computer for specifying software objects to be shared among computer programs executing on the computer. 15. The computer-readable medium of claim 14, wherein the underlying operating system of the computer comprises an operating system in the Windows family of operating systems, and wherein the object model comprises an object model consistent with the Component Object Model. 16. The computer-readable medium of claim 13, wherein the underlying operating system of the computer includes a database of software objects available for use in the operating system, and wherein the step (A) comprises steps of: (A)(1) querying the database of software objects for software objects defined in accordance with the measurement object specification; and (A)(2) identifying the measurement object based on results of the query. 17. The computer-readable medium of claim 16, wherein the underlying operating system of the computer comprises an operating system in the Windows family of operating systems, and wherein the step (A)(1) comprises a step of: querying the Windows Object Broker for software objects defined in accordance with the measurement object specification. 18. The computer-readable medium of claim 13, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer, and wherein the step (B) comprises a step of: (B)(1) adding the measurement object to the plurality of measurement objects without modifying source code of the measurement program processor. 19. The computer-readable medium of claim 13, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executable on the computer, and wherein the step (B) comprises a step of: (B)(1) adding the measurement object to the plurality of measurement objects without compiling source code of the measurement program processor. 20. The computer-readable medium of claim 13. wherein the method further comprises a step of: (C) generating an instance of the measurement object without modifying the measurement program processor. 21. The computer-readable medium of claim 13, wherein the measurement device controller comprises a computer and the measurement program processor comprises a computer program executing on the computer, and wherein the step (A) comprises a step of: (A)(1) identifying a measurement object defined by a computer program other than the measurement program processor. WO 01/29624 3Q PCT/USOO/25802 22. The computer-readable medium of claim 13, wherein the measurement object comprises an inspection program item specifying computer program instructions for controlling the measurement device. 23. The computer-readable medium of claim 13, wherein the measurement object comprises a feature specifying physical properties of parts measurable by the measurement device. 24. The computer-readable medium of claim 13, wherein the measurement object comprises a tolerance specifying at least one range of values of at least one physical property of a part measurable by the measuring device. 25. A metrology system comprising: a measurement device for measuring a physical part; and a measurement device controller comprising: A plurality of measurement objects available for use by a measurement program processor to control the measurement device; means for identifying a measurement object defined according to a measurement object specification, wherein the measurement object is not one of the plurality of measurement objects; and means for adding the measurement object to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor. 26. A metrology system as defined in claim 25 wherein said measurement device comprises a coordinate measuring machine. 27. A metrology system as defined in claim 25 wherein said measurement device controller comprises an electronic digital computer including a central processing unit and a memory unit. 28. A measurement device controller for use in a metrology system including a measurement device for measuring a physical part, said measurement device controller comprising: A plurality of measurement objects available for use by a measurement program processor to control the measurement device; means for identifying a measurement object defined according to a measurement object specification, wherein the measurement object is not one of the plurality of measurement objects; and means for adding the measurement object to the plurality of measurement objects available for use by the measurement program processor without modifying the measurement program processor.

Inventors: CASWELL PAUL F, TORNQUIST CLAY, TURCOTTE DONALD G, CASWELL, PAUL, F., TORNQUIST, CLAY, TURCOTTE, DONALD, G.
Applicants: BSIS INC, BSIS, INC.
Application year: 2000
Main classification: G05B19
IPC codes: G05B19