METHOD AND APPARATUS FOR GENERATING DIGITAL MOCK-UPS FOR ARBITRARY ASSEMBLIES FROM THE GEOMETRIC
MODELS OF PARTS
Background
A key aspect of mechanical engineering design is making and updating accurate visual representations of components in their relation to each other in an assembly of those parts. Formerly, such representations were simple two-dimensional drawings drafted by hand . Today, however, such representations, which are known as digital mock-ups, are made using CAD and other computer graphics and modeling programs, with the assembly representation being displayed on a computer screen or output to a printer as needed. Such representations are widely used throughout the design process by designers, engineers, project planners, managers, salespersons, etc. In addition to the visual representation itself, other information about the parts and the assembly can be accessed through and stored with the visual representation.
From a systems engineering perspective, design should take proceed along a "top down" approach, with the overall requirements of the "system" or assembly being specified first, and the constituent parts of the assembly being defined according to these requirements. One step in a top down approach is defining an interface between constituent parts, and between assemblies that are themselves constituents of larger assemblies.
For mechanical assemblies having parts that are connected to each other, defining the interface between the constituent parts primarily involves designing a mating surface at which these parts will mate when they are assembled together. In conventional methods, however, a top down design process is not followed.
According to a first conventional method for locating parts of an assembly in a graphical representation of the assembly, geometrical models of the parts are loaded into a common coordinate reference frame. These part models are then manually repositioned relative to each other so that the graphical representation of the assembly has the same appearance as a true assembly of ideal parts. Typically, the positional information contained in the graphical representation is then stored with links within a product composition structure, e.g., in a database.
According to a second conventional method, the parts of the assembly are located in the graphical representation by manually entering a number of alignment constraints based on geometrical features of the parts taken from their geometrical models. A constraint solver methodology or program is then used to determine a solution to a system of equations, with the result being a position and a rotation for
each part in a common coordinate reference frame, e.g., the coordinate reference frame of the graphical representation of the assembly.
According to a third conventional method, relative positions of geometrical features of parts known to have mates in the assembly are established using experimental or theoretical methods. Relative locations of parts having geometrical features that mate are stored as a transform with the pair of mating parts and the pair of geometrical features that effect their mating as a key.
One refinement of the third method is to store information specifying how a part of a certain type would be located relative to a part of another type if they were assembled together such that one or more geometric feature(s) of the parts mate together. In particular, the relative locations of part types are stored as transform with information on the pair of part types and the pair of geometrical features that effect their mating. Information about which parts mate and by what pair of geometrical features is derived from a data structure called a liaison graph, from which locations of all of the parts in the database having matching component types can be determined. In each of the conventional methods, the information about how parts mate is determined from a manual alignment of the parts that are supposed to mate, and depends upon geometrical features that a designer designs as mates in a certain junction. The positional information, e.g., the transformation of the mating parts relative to each other, must be determined and stored for every combination of the features, both for ( 1 ) the features the designer may have associated with a new junction, and (2) the features some designers may have associated with all other junctions or junction types that can possibly mate with the new junction or the new junction type. This process involves a considerable amount of time and expense, especially if numerous parts can be alternatively mated together. Thus, it would be desirable to have a methodology for implementing a top down design process.
Summary
Among the goals of an improved digital mock-up system and related methods is to reduce the memory space necessary for the product documentation, to reduce the effort for creating and maintaining the product documentation, and to enable an automatic locating of the parts of an assembly, even for configurations and parts never encountered before.
In a method implemented in a computer program, an unpositioned component of an emerging assembly that is connected through one of its ports to a port of an already-positioned component, is automatically or semi-automatically placed
in the assembly, the position being computed from the position of the connected port in the unpositioned component, the position of the connected port in the positioned component, and the position of the positioned component.
The present invention is directed toward novel and non-obvious aspects of an improved digital mock-up system and related methods, both alone and in combination with one another and as defined by the claims below. The apparatus is not limited to approaches which meet the above goals, although these are desirable.
Brief Description of the Drawings Fig. 1 is a screen display of a computer program showing a pictorial view of one component of a first component type and two components of a second component type with their respective ports indicated, prior to assembly of the components.
Fig. 2 is a screen display similar to Fig. 1 , but showing the components after they have been assembled together automatically according to the program. Fig. 3 is a flow chart of steps of a top-down design process implemented in the computer program.
Fig. 4 is an exploded view of an assembly showing first and second mating parts with their mating sides exposed. Fig. 5 is an exploded pictorial view showing an interface and first and second mating parts designed according to each side of the interface.
Fig. 6 is an exploded pictorial view showing an interface that has already been designed and first and second complementing genders being defined according to that interface. Fig. 7 is a pictorial view of the first gender of Fig. 6 showing solid geometrical elements added to convey information about its mating side and geometrical features.
Fig. 8 is a pictorial view of the second gender of Fig . 6 showing solid geometrical elements added to convey information about its mating side and geometrical features.
Fig. 9 is another pictorial view similar to Fig. 8, except rotated to show the mating surface of the second gender.
Fig. 10 is a side view of the interface and first and second parts of Fig. 5 viewed in the direction of the arrows 10 in Fig 5, which shows the relative positions of the complementing geometric features in the first and second parts.
Fig . 1 1 is a sectional view of the first gender viewed in the direction of the arrows 1 1 in Fig. 7, which shows the relative positions of the geometrical features and the added solid geometrical elements.
Fig 1 2 is a sectional view of the second gender viewed in the direction of the arrows 1 2 in Fig. 8, which shows the relative positions of the geometrical features and the added solid geometrical elements.
Fig. 1 3 is a generalized entity diagram showing principal relationships among various entities used in an implementation of the method
Fig. 14 is a diagram showing entity relationships of the kind shown in Fig. 1 3 for a specific example, together with structural elements of an implementation of the apparatus.
Fig. 1 5 is a drawing of a display showing a block diagram for an assembly
Fig. 1 6 is a drawing of a display showing a block diagram of a definition of a composite component type comprising an assembly of one component of a first component type and two components of a second component type.
Fig. 1 7 is a drawing of a display showing a block diagram of an assembly with one part being of the type shown in Fig. 1 6.
Fig. 1 8 is a diagram depicting a general-purpose computing device constituting an exemplary system for implementing the methods and apparatus.
Detailed Description
In the following description, Section I provides an overview of key aspects of a specific embodiment of the new method in connection with Figs. 1 -3. Section II describes further details of specific aspects of embodiments of the method in connection with Figs. 4-1 2. Section III describes the various data types used in implementing embodiments of the method in greater detail, and Section IV describes relationships between these data types in connection with Figures 1 3-1 7. I. FIGS. 1 -3 A Digital Mock-Up (DMU) is a data structure that represents the geometry of a mechanical system for generating a pictorial representation of the system on a 2D plane or in a 3D virtual reality space. DMUs are used in the development of an assembly from two or more components, and particularly for determining whether the assembly meets a specified design goal (e.g., whether the assembly will fit within an allotted space) .
The parts are the components that together make up the assembly. For any desired assembly, a list of the components that make up the assembly is easily generated. The parameters of each component, particularly its size and geometry, are also easily generated. In contrast, establishing the relationship between the components in the finished assembly, i.e., showing how the components appear when assembled together, is difficult. In the CAD environment in which DMUs are used, the components, once generated, in one approach must be manually moved into their respective positions in the completed assembly. Thus, this process is slow and subject to human error.
According to embodiments of the invention, each component has one or more ports that can relate that component to other components. The ports are usually defined in the description of a component type, with each component of that type exhibiting an identical set of ports. A relationship between components in an assembly is established by connecting one port of one part to one port of another part. Fig. 1 is a screen display showing a pictorial view of an assembly 100. The assembly 100 includes a first A component 1 02, a second A component 104 and a B component 106. In this simplified example, the first A component 102 and the second A component 104 are identical cylindrical solids, and the B component 106 is a rectangular solid. The assembly 1 00 as shown in Fig . 1 is in a state before the first A component 102 and the second A component 104 are moved into position connected to the B component 106 in the final assembly.
The first A component 102 has a port 1 08, and the second A component 104 has a port 1 10. Because the components are of the same type, the ports 108, 1 1 0 in this example are of the same type, i.e., both may be male or female. However, the components need not be of the same type. The B component 106 has a port 1 1 2 and a port 1 14. The port 1 1 2 is of complementary gender to the port 108 of the first A component 102. Similarly, the port 1 14 is of complementary gender to the port 1 10 of the second A component 104. As shown by the respective arrows 1 1 6 and 188, the port 108 is connected to the port 1 1 2, and the port 100 is connected to the port 1 14.
Fig. 2 shows the assembly 100 in a connected state. According to this embodiment invention, however, the first A part 102 and the second A part 104 are automatically (or semiautomatically in response to a user command) put into appropriate position relative to the B part 106 by the program, without any manual movement by the operator.
In mathematical terms, the process of positioning and orienting each component of the assembly requires determining the transformation matrix. The transformation matrix represents the relationship between the coordinate system of the assembly and the coordinate system of each of the components. According to a conventional method: ( 1 ) one of a pair of components to be connected is manually moved into its assembled position with respect to the other of the pair of components; (2) the relative position and orientation of the connected components are determined; and (3) the transformation matrix from the coordinate system of one component to the coordinate system of the other component is computed . Thus, according to this conventional method, a first component has a distinct transformation matrix that must be computed for each different component with which the first component can be connected .
According to an exemplary embodiment of the invention, however, a port/component transformation matrix is only computed for each different port of a component type. The transformation matrix between two connected components is computed mathematically from the computed port/component transformation matrix for each of the connected components.
This follows because the port of a first component and the corresponding port of a second component connected to the first component each refer to the same surface (e.g., the mating surface) . For example, with reference to
Fig. 1 , the port 108 of the first A part 102 and the port 1 1 2 of the B part 1 06 refer to the same surface (i.e., the mating surface), and these referenced surfaces coincide when the ports 108 and 1 1 2 are assembled together.
With the illustrated embodiment, a new component type may require only a single new transformation matrix per port, rather than a new transformation matrix for each different component and port or each different component type and port with which a component of the new type can be connected.
Fig. 3 is a flow chart showing the steps of the method of one embodiment. According to the new method, the first step is to define the interface type and its port types (e.g., port genders, as described below), and then the steps of defining the components and defining the assembly follow. Thereafter, the components can be automatically positioned appropriately relative to each other based on these definitions.
In a first phase, interface and port type design (step 100), the port types and their geometries are defined and represented such that when two mating
ports are brought into a common coordinate system with identical transformation matrices, the mating surfaces of the two ports will coincide.
In a second phase, component design (step 1 10) , each different component type is defined by designing its geometry and defining its ports and by positioning each port in the component's geometry and storing the position with each port.
In a third phase, assembly definition (step 1 20) , as a first step (step 1 22), the constituent components are defined as to their type, and the connections between ports of components within the assembly are defined . Then, the positions of all components relative to the assembly are computed . One component's position can be arbitrarily chosen, for example. As a second step (step 1 24), for an unpositioned component that is connected through one of its ports to a port of an already-positioned component, the position is computed from the position of the connected port in the unpositioned component, the position of the connected port in the positioned component, and the position of the positioned component. The component position is then stored with the yet unpositioned component, making it a positioned component, as the third step (step 1 26) . The second and third steps (steps 1 24 and 1 26) are repeated as necessary. II. Figs. 4-12 Following is a more specific description of aspects of the method described above and associated apparatus with which the method may be implemented. First, concepts used in the method, some which are introduced above, are defined, and then a exemplary implementation of these concepts as used in the method is described in connection with Figs. 4-1 2. A. Preliminary Concepts: Interface, Mating Surface, Gender, Port, Connection and
Connection Type
An interface is an abstraction representing a type of relationship between two or more objects. Specific information about the relationship is associated with the interface. In some implementations, the interface serves as the "carrier" for such information, i.e, a data structure associated with the interface includes the information or a reference to the information (e.g., a pointer) .
The type of relationship that is represented by an interface can be ranked along a hierarchical scale ranging from ( 1 ) force, torque and degrees of freedom; (2) position and datum flow; (3) material (e.g., fluid flow); (4) energy; (5) signals; (6) information; to (7) control. An interface of a higher rank usually includes at least one interface of each lower rank.
One type of relationship between two objects is a mechanical junction between two connected parts of an assembly. For the purposes of the following description, it will be assumed that the junction is formed from two connected parts. Other junctions, however, may involve three or more connected parts. One characteristic of the interface for the junction between two connected parts is the mating surface of the interface, which may be expressed, e.g., in a geometrical model . The mating surface of the interface is a mathematical, ideal surface positioned between the connected parts where they mate. Typically, although not necessarily, the mating surface is defined as the nominal mating surface, i.e., the mating surface for ideal parts having exactly nominal geometry without reflecting actual tolerances. As a result of this definition, ideal parts connected at the interface ( 1 ) are coincident with the mating surface of the interface at points where the parts contact each other, (2) do not penetrate the mating surface of the interface and (3) have their respective material sides lying exactly on one side of the mating surface of the interface.
Interfaces are typically designed at each junction between parts in an assembly. In a top-down design approach, interfaces are most desirably designed deliberately in an early step, and the design of the parts connected at the interfaces takes place in a subsequent step. For each interface, a geometrical model is created that defines the mating surface represented by the interface and associated with the interface in product documentation, i.e., useful information about the product. The information is preferably stored such that it can be retrieved and accessed efficiently when needed to enhance the efficiency of product engineering.
The geometrical model may be very elaborate, precise and complete, or it may be reduced to key geometric elements that exhibit, e.g., alignment features sufficient to construct the nominal mating surface, if necessary. The minimal geometrical model may even be an empty coordinate reference frame if documentation provided elsewhere is sufficient to enable a designer to precisely align geometrical features of the design relative to the defined minimal mating surface, given the location of the coordinate reference frame provided for the mating surface.
For each interface, one or more (usually 2 to 5, predominantly 2) port genders can be defined, each representing one possible implementation of the interface. For an interface with spatial extent, each such gender represents the nominal geometry of material that a part designed according to the respective side of the interface would exhibit. The term "gender" is used because of the engineering tradition of naming one side of a mating surface "male" and the other side "female. " If
the mating surface does not exhibit a self-similarity under normal inversion, two genders naturally arise. More than two genders are sometimes needed to address compatibility constraints frequently encountered in practice.
A typical example of an interface that has more than two genders is a mechanical interface that employs fasteners. In such an interface, through holes, holes with internal threads (tap holes), fixed bolts with external threads, etc , must be distinguished from each other.
For each interface, the genders that are possible or expected to be used are defined Each gender is typically defined by designing the geometrical features of that port gender and associating the geometrical model of these features with the gender in the product documentation. In designing the geometrical features, a copy of the nominal mating surface of the interface is temporarily or permanently added into the coordinate reference frame of the gender. Alternatively, the "copy" of the mating surface may be a geometrical model that is added or accessed from another memory location. The "copy" of the mating surface serves as the reference for aligning the geometrical features of the gender relative to the geometrical features of the nominal mating surface and, optionally, for checking certain criteria for formal compliance. The copy may be extensional, i.e., a copy of every subobject in the object to be copied, or intentional, i.e., as a reference object that refers to the object to be copied or its object type.
A port is an abstraction representing the capability of a component to enter into a relationship with some other component. A port can serve as a "carrier" of specific information about this capability. In a specific implementation, each port is characterized by a reference to one of the genders of the interface with which it is associated. For mechanical parts, a port can serve as a partial description of the design task. For example, if the geometrical features that are incorporated into the part to embody the gender are associated with a port for that part, the port will convey the purpose of these features and the design intent
For every junction between two parts, two ports can be defined, one of which is assigned to each part. These ports represent the capability of the respective part to enter into a relationship with some other part. The two complementing genders embodied by the two ports will be such that they belong to the interface that represents a nominal mating surface designed for the junction of the first parts.
The ports, however, each define a general capability of entering into a relationship, and if second part types exist that exhibit ports with compatible genders, the defined ports of the first parts will also enable a designer to decide the technical
viability that these first parts can be joined with instances of the second part types via a check of the genders of these ports on a syntactical or logical level alone.
A connection is an abstraction representing the existence of a relationship between two parts and serves as a "carrier" of the specific information about that relationship As one example, the connection will indicate which port of one part is related to which port of another part, and the particular assembly or composite component type in which the connection is established Thus, a set of connections for an assembly defines how the parts of that assembly are joined when the assembly is complete. In specific implementations, a reference to the type of connection is included for faster access to that information A connection type is an abstraction that indicates the viability of establishing a junction between two parts through two ports, each with a given gender. Each connection type is a carrier for information about the two genders that two ports of two parts must exhibit in order to be connectable by a connection of that type. At a basic level, if a connection type exists, the two parts can be connected by their respective ports. In more sophisticated implementations, the connection type may include information on the relative strength of a connection of that type relative to other connection types, as well as other information, e.g., the fasteners, tools, materials, etc. needed to establish the junction. In some embodiments of the invention, the transform that represents the location (position and orientation) of the nominal mating surface in the reference frame of the gender must be captured and associated with the gender.
In one embodiment, the same coordinate reference frame is used for all genders of an interface and the same location chosen for the copy of the mating surface. In another embodiment, the common coordinate reference frame for the genders is made to be the same as that of the geometrical model of the nominal mating surface that defines the interface.
In still another embodiment, the definition of each interface is completed by determining and storing in the product documentation for all pairs of genders of that interface information about whether a mating of ports of those genders will result in an assembly that is technically viable in that respect
In yet another embodiment in which some gender is defined in a coordinate reference frame of its own, the definition of each interface is completed by determining and storing in the product documentation at least for all technically viable pairs of genders of that interface the geometrical transform that would result in a co- location of the geometrical models of the genders such that the copies of the nominal
mating surface in the geometrical models of the genders would coincide in the chosen coordinate reference frame. This transform is obtained by multiplying the transform defining the location of the nominal mating surface in the reference frame of one of the genders with the inverse of the transform defining the location of the nominal mating surface in the reference frame of the other gender.
In the most desirable implementations of the embodiments mentioned above, the storing of those transforms is unnecessary because they will always be the unity matrix as result of the specific process of definition disclosed herein.
Certain benefits result from defining port genders of an interface before defining ports. For instance, all specifications and/or decisions about whether ports fit together can be considered at one time for pairs of the port genders (and stored in "connection types") . As a result, deciding whether two ports are compatible with each other only requires querying whether a connection type exists for the particular port genders, which can be done on a syntactic level and does not involve any semantics or geometrical evaluation.
Once the geometrical model of the nominal mating surface is available in the geometrical model of the gender, the decision is made about which side of the nominal mating surface is the material side for that gender and which side is the mating side (as commonly understood, no material geometrical features are present on the mating side of a gender) .
This decision can be represented in the geometrical model in any one or several of multiple known ways suitable to enable a designer to recognize easily from the geometrical model which is the material side. Examples of such representations are: at least one normal vector associated with any of the elementary surfaces of the mating surface a mating direction vector a solid model of one or more geometrical features positioned near or adjacent to the material side of the mating surface, especially a partial or full solid model that contains matching surfaces for some or all elementary surfaces in the nominal mating surface a set of solid geometrical features adjacent to the datum areas of the mating surface - a solid model with geometrical features that represent the minimal material deemed necessary to enable an embodiment of the gender to function satisfactorily.
B. Exemplary Implementation
An example of the above process is described with reference to Figs. 4- 1 2. For the purposes of illustration, an exemplary assembly 200 of a first part 202 and a second part 204 is shown in Fig. 4. According to the illustrated embodiment, but not necessarily in every case, the assembly 200 is the result of a top-down design process beginning with the design of an interface, with the design of the parts 202, 204 and their assembly together taking place subsequently.
Fig. 5 shows a mating surface 206, which in this implementation is the nominal mating surface of the interface. For purposes of this example, the first part 202 and the second part 204 are shown separated from and on opposite sides of the mating surface 206.
The mating surface 206 comprises a ground plane 208 of finite size For the sake of description, the visible side of the mating surface 206 is referred to as a first side 207a, and the opposite side is referred to as a second side 207b. The mating surface 206 is located in a coordinate reference frame 214 of the geometrical model for the interface
The mating surface 206 also comprises the geometrical features of a cylindrical feature 209 and a rectangular feature 21 1 . From the first side 207a, the cylindrical feature 209 will appear as a cylindrical boss 210a projecting from the ground plane 208, and the rectangular feature 21 1 will appear as a rectangular recess 21 2a formed in the ground plane 208. From the second side 207b, the cylindrical feature 209 will appear as a cylindrical recess 21 0b formed in the ground plane 208, and the rectangular feature 21 1 will appear as a rectangular boss 21 2b projecting from the ground plane 208. As can be seen in Figs. 5 and 10, when the parts 202, 204 are designed according to the interface, they exhibit features that correspond to the features of the mating surface 206. The first part 202 has a cylindrical boss 21 6b positioned and shaped to correspond to the cylindrical recess 21 0b and a rectangular recess 21 8b positioned and shaped to correspond to the rectangular boss 21 2b. Correspondingly, the second part 204 has a cylindrical recess 21 6a positioned and shaped to correspond to the cylindrical boss 210a, and a rectangular boss 21 8a positioned and shaped to correspond to the rectangular recess 21 2a
Referring to Fig. 6, the initial steps of a design process that begins with definition of the interface are now described. As shown in Fig. 6, a suitable interface, such as the mating surface 206, is represented as a geometrical model 21 7 located in a coordinate reference frame 21 5. In this example, copies of the geometrical model
21 7 of the mating surface 206 are created (or a suitable model is otherwise obtained, e.g., by adding it) , and each copy is treated as an intermediate geometrical model 21 9, 221 in defining respective first and second genders 220, 222.
In the example of Fig. 6, the representation of the intermediate geometrical models 21 9, 221 relative to the mating surface 206 indicates that a material side of the mating surface 206 has been chosen. For the first gender 220, the cylindrical feature 209 has been chosen as a boss 224b (i.e., "male") Thus, for the second gender, the cylindrical feature 209 has been chosen to be a cylindrical recess 224a (i.e. , "female") . Similarly, the rectangular feature 21 1 has been chosen as a rectangular recess 226b (i.e., "female") for the first gender 220, and as a rectangular boss 226a (i.e., "male") for the second gender 222.
As also shown in Fig. 6, in this example a normal m , m is specified for each of the geometrical models 21 9, 221 , respectively, to specify the non-material (or "mating") side of each of the respective genders 220, 222. Any surface normal would be sufficient. Without more, the normals m , n2 are sufficient to define the genders 220, 222 and how they would be assembled together.
Alternatively, mating direction vectors coincident with these normals m , n∑ in the example could have been added to indicate that the geometrical models 21 9, 221 are intended to mate together in the direction shown by the arrows, with the opposite side of each geometrical model being a material side.
Referring to Fig. 7, the first gender 220 is shown with added geometrical elements that enable a designer to discern its material side. In addition, a sectional view of the first gender 220 is shown in Fig. 1 1 . The cylindrical boss 224b is filled with a solid cylinder coincident with it, which is indicated in Fig. 7 by stiphng on its outer surface. In a virtual model, the boss 224b and any other solid areas may be shown to be solid by appropriate shading or other visual effects. The rectangular recess 226b is shown to be not solid, but a solid geometrical element 228 is placed on one side of the rectangular recess 226b to indicate its material side. In the example of Fig . 7, the element 228 is stipled to indicate that it is solid. Three rectangular solid blobs 232b are shown adjacent a ground plane
230b of the first gender 220. The datum points 232b are placed on a material side of the ground plane 230b, and thus serve as a further indication of which side is the material side. One motivation for defining gender geometry is to convey information about the primary datum areas of the gender embodiment, e.g., areas that define the ideal plane to which dimensions and tolerances refer
The second gender 222 is shown from two perspectives in Figs. 8 and 9. In addition, a sectional view of the second gender 222 of Fig . 8 is shown in Fig . 1 2. The perspective of Fig. 8 is the same as Fig. 6, whereas the perspective of Fig. 9 is rotated 1 80 degrees to show a mating side of the second gender 222. The material side of the cylindrical recess 224a is defined by adding a cylindπcally hollow cylinder coincident with the recess, as shown in Fig . 9 by stiphng on its inner and outer surfaces. An end surface of the cylindrical recess 224a need not be shaded because no solid geometry is present there. The rectangular boss 226a is shown to be filled with a solid rectangular body by stiphng on its outer surface. A ground plane 230a of the second gender 222 is located by three datum target areas, which are defined by rectangular solid blobs 238. Locating the ground planes, the cylindrical boss, the rectangular boss and the respective recesses as described above meets ASME dimensioning and tolerancing standards as expressed

C. Defining Genders
If not all genders are defined with the same coordinate reference frame, with each gender the transform ("NMSTransform ") usually must be associated that defines the position of the nominal mating surface in its coordinate reference frame. Also, a transform ("Initial Transform") can be associated with each pair of genders (included in the product documentation as a "connection type") that can result in a technically viable mating in an assembly or can be computed from the input variables on demand.
This InitialTransform is computed from the stored NMSTransform of the first gender and the NMSTransform of the second gender by the matrix operations InitialTransform (l,J) = NMSTransform(l) *NMSTransform (J) where I and J are the references to the two genders and the " 1 " indicates the inverse of a matrix.
In some specific implementations of the embodiments mentioned above, this initial transform is the unity matrix by power of the construction method as disclosed herein.
D. Definition of a Simplex Component type
To define a simplex component type, i.e , a type of component that for the purposes of the user can be viewed as one solid object with conceptually one single solid geometry model and that usually is called a "piece-part, " some, and desirably all, of the following information may be associated with the component type in the product documentation'
one record in the "ComponentType" table with the basic information about the component type one record in the "Ports" table with the information about the port for every port that the simplex component type exhibits to it outside at least one record in the "ComponentModel" table with the content of or a reference to the geometrical model of (an instantiation of) the component type.
The information about the ports may be determined in one of three modes of operation, depending on the maturity of the geometrical model at the time of creation of the entry into the product documentation.
(a) when the geometry model is mature: For each of the relationships an instance of the component type can have with other components in an assembly, a port is defined, an interface may be assigned to that port and a gender of that interface is assigned to that port. Optionally a name is given to the port.
Then the geometrical model of the assigned port gender is permanently or temporarily copied into or in other ways made manipulatable in the coordinate reference frame of the geometrical model of the component and either manually positioned in this coordinate reference frame or positioned with the help of alignment services from manually defined alignment relationships entered as available in state-of-the- art CAD tools either by means of a CAD tool or by means of a specialized layout tool.
The transformation that defines the location of the coordinate reference frame of the port gender's geometrical model in the coordinate reference frame of the component's geometrical model is captured from the layout tool or CAD tool and stored as the port's transformation.
(b) when the geometry model is empty or immature: For each of the relationships a component of the type can have with other components in an assembly, a port is defined and named, an interface is assigned to that port and a port gender of that interface is assigned to that port.
Then the geometrical model of the assigned port gender is permanently copied into the coordinate reference frame of the existing or newly created geometrical model of the component type and positioned in this coordinate reference frame, either manually or by means of a layout algorithm, and either in isolation or in synchrony with one or more designated mating ports associated with other component types.
The transformation that defines the location of the coordinate reference frame of the port gender's geometrical model in the coordinate reference frame of the component type's geometrical model is captured and stored as the port's transformation. The augmented or newly created and initially
filled geometrical model is associated with the component type and made available as the model for the detailed design of the component types geometry in a CAD tool .
In a preferred embodiment of the invention, each such copy of the geometry model of the port gender is tagged to be recognizable as the port gender model of a specific port for the user of the CAD tool and/or for an information extraction tool.
(c) when the geometry model contains geometry models that can be recognized by a human or an information recognition tool as geometry model of a port gender for a specific port: let a program analyze or support a human to analyze the geometry model of the component type and revise the definitions of the ports associated with the component type in the product documentation such that for each geometrical model of the port gender of a specific port recognized in the geometrical model of the component type a port is associated with the component type and/or that the port gender recognized is associated with that port and/or that the port name is associated with that port and/or that the transform that defines the position of the coordinate reference frame of the port gender's geometry model in the coordinate reference frame of the component type's geometry model is stored as the transform of that port.
E. Definition of a Composite Component Type
To define a composite component type, i.e., a type of component that can be manufactured by assembling prefabricated parts and that usually is called an
"assembly, " at least some of, and desirably all of, the following information is associated with the component type in the product documentation: one record in the "ComponentType" table with the basic information about the component type. - for every part that an instance of the composite component type is composed of: one record in the "Parts" table with the information about the part for every port that the composite component type exhibits to its outside: one record in the "Ports" table with the information about the port for every pair of ports of parts that are required to mate when the parts are assembled to manufacture an instance of the component type, and for every outside port of the assembly that is embodied by a port of a part: one record in the "Connections" table with the information about the two ports and the part(s) .
The entries in the "Parts" table can be drawn from the same sources that were used for the state-of-the-art Bill-of-Mateπal lists.
The entries into the "Connections" table about the connections between ports are determined and entered by one or a suitable combination of approaches, such as by these methods: automatically by a computer program deriving the connection information from a role model that had been manually associated with the composite component type and establishing from that composite component type all the connections that have been defined for the role model and concern ports that exist in the parts that fill the roles in the composite component type. - automatically by a computer program that analyzes the yet unconnected ports of the parts and determines all possible connections that are viable in consideration of the port genders associated with the ports and the physical position of these ports and establishes or proposes connections between those ports depending on a manually entered or general strategy profile. manually by a human who takes into account the component type of each of the parts and the ports that have been defined for those component types and then determines from the engineering knowledge about the function of the role that each part plays in the assembly which relationships need to exist between the parts in the assembly and then documents the necessary relationships as connections between the ports that represent the capability of the component types to enter into that relationship.
The entries into the "Ports" table about the ports the composite component type exhibits to its outside are determined by one or a suitable combination of methods, such as any of the following: automatically by a computer program deriving the port information from a role model that had been manually associated with the composite component type and establishing for that composite component type all the ports that have been defined for the role model and concern unconnected ports that exist in the parts that fill the roles in the composite component type. automatically by a computer program that determines all yet unconnected ports of the parts that constitute the composite component type and enters equivalent ports into the table for the composite component type or proposes such entries. manually by a human who takes into account the functionality of the composite component type and defines the ports like in the case of the simplex component type. F. Determination of the Location of the Parts of a Composite Component type
As stated, the conventional methods require manual repositioning and reorientation of components so that they appear in relative positions identical to an assembly of ideal embodiments of the components. This involves significant manual work, especially if the parts that can possibly be mated together are numerous, because the information (the transformation) is determined and stored for every
combination of the features a designer may have associated with a new port with the features some designers have associated with all the other ports or port types that can possibly mate with the new port or port type.
One goal of the disclosed implementation is to reduce the memory space necessary for the product documentation, reduce the effort for creating and maintaining the product documentation, and enable an automatic locating of the parts of an assembly even for configurations and parts never encountered before This may be achieved by, for example, the following procedure.
If the composite component type is assumed or supposed to be a rigid assembly of its parts, one approach is to mark all parts, ports and connections as belonging to the same rigidly connected subassembly and apply the method set forth in
Section H below Otherwise, the method set forth in Section G may be applied
G. Method for Locating the Parts of a Non-Rigidly connected Composite
Component Type 1 . Identify all separate rigidly connected subassemb es within the composite component type by taking into account the information stored in the product documentation about the degree of freedom of the interfaces and/or gender and/or connection types of the connections in the composite component type and excluding the connections that do not by themselves lead to rigidly connected assemblies
2. During step 1 or afterwards determine the parts, connections, and ports of the composite component type that belong to each such rigidly connected subassembly. 3 During step 1 or 2 or afterwards, introduce into the product documentation the information about the rigidly connected subassembly that the ports and parts of the composite component type belong to into the product documentation.
4. For each rigidly connected subassembly in the composite component type, locate the parts and ports that belong to it by the procedure described below in Section H.
5 If some connection exists in the composite component type that does not form by itself a rigidly connected assembly, determine all subassembhes that are pairwise connected rigidly by combinations of non-rigid connections by repeating for each pair of rigidly connected subassembhes until no more such subassembhes could be found:
5.1 . determine the non-rigid connections that connect the tow subassembhes and the location of the ports that they connect.
5.2 determine whether there are any degrees of freedom left for movement between the two subassembhes when the superposition of the constraints imposed by the non- πgid connections at the position of the ports they
connect are incrementally taken into account; if there are no degrees of freedom left, determine the parameters of the connections that suffice for rigidly assembling the two subassembhes, determine the position of the two subassembhes relative to each other and merge the two subassembhes into one.
H. Method for Locating the Parts of a Rigidly Connected Subassembly
The method comprises the following steps.
1 If one of the parts is designated in the product documentation as the base part, skip step 2
2 Determine the most suitable base part by the following steps.
2.1 . identify that port among the ports of the composite component type that has the highest datum flow strength defined for the port gender or the connection type of its connection within the complete component t tvy/npfe. n orr f fnorr t thhpeiirr i innttperrffaarcpe.
2.2 identify the part within the composite component type to which that port is connected to within the composite component type. 2.3 make that part the base part.
3. Introduce the selected base part as the initial constituent of the emerging assembly, set an arbitrary location for the base part relative to the coordinate reference frame of the geometric model of the composite component type, e.g ., the identity transform, and initialize the lists that will be used to keep track of interesting sets of pointers
4. Repeat until all parts have been located or the remaining parts cannot be located
4.1 . find the connection C with the highest priority among all connections from the not yet connected ports of the emerging assembly, or, if no priority can be assigned, choose one of the connections. Priority of a connection in a preferred embodiment of the invention:
4.1 .1 . the priority is the sequence precedence of the connection in the assembly sequence of the composite component type if it is known or else
4.1 .2. the "strength" of the datum flow of the connection type or interface of the connection directly or superimposed on the strength of the superimposed datum flow strengths of all connections that locate the part from which the connection originates. The datum flow strength DFS of the supeπmposition of connections k of datum flow strength DFS(k) can be computed, e.g., as the inverse of the sum of the inverses of the DFS(k) .
4.2 identify the part B and the port b of part B that the connection leads to, and identify the port a (and, if necessary, the part A) where the connection originated
4.3 determine the location of the part B from the known position TA of part A in the coordinate reference frame of the composite component type and from the information contained in the product database about the location Tβb of port b relative to the coordinate reference frame of the geometrical model of part B and abut the location TA3 of port a relative to the coordinate reference frame of the geometrical model of part A. and, if necessary, about the geometrical transforms Tco and Tc associated with the connection type C between the gender ga of port a and the gender g- of port b such that the part B will be located with its port b mating with the port a of part A as disclosed in the procedure described in Section I.
4.4. Update the lists that are used to keep track of interesting sets of pointers. Such pointers might be, e.g., the not yet dealt with connected ports of all parts in the emerging assembly, the connections not yet dealt with, and the locations Gy = Tx*Tχy of the not yet dealt with connected ports.
5. For each of the ports p of the composite component type, determine its position TP relative to the coordinate frame of the composite component type's geometry model by
5.1 . determining the port y within the composite component type with which it is identified
5.2 determine the part X to which the port y belongs 5.3 compute Tp = Tx*Txy where
TX is the location of part X in the rigid subassembly and Txy is the location of port y in the geometric model of part X
6. Store the found transformations for each of the parts and ports of the rigidly connected subassembly at their proper place in the production documentation as the default position and the cache used for fast generation of DMUs from that product documentation.
I. Method for Locating a Part B Mating with a Part A
One aspect of an embodiment of the invention is a method for determining the location of a part B such that its port b mates nominally with the port a of a part A. As a specific example:
1 . In a preferred embodiment in a case wherein all port genders of an interface have the same location for the nominal mating surface, the transform TB that locates a part B such that its port b mates nominally with the port a of Part A may be computed for connection of "regular" connection type by
where
TA IS the transform that locates part A in the coordinate reference frame of the composite component type and TAB IS the transform that locates port a in the coordinate reference frame of part A and
TB. IS the transform that locates port b in the coordinate reference frame of part B. "Regular" are connection types that refer to mates of different genders of an interface that has no mating symmetries and no kinematic degrees of freedom.
2. In a preferred embodiment of the invention in a case wherein the geometry of the interface has mating symmetries or leaves kinematic degrees of freedom, the position may be computed by TB = TA*TAa * (Tc)D * (TBb) 1 where
Tc is the isomere transform [Definition required?] stored in the database for the connection type Cgiai gi. i and p is the isomere parameter stored for the connection between port a of part A and port b or Part B In preferred embodiments of the invention, (Tc)p may be computed by multiplying p with the two transformation parameters for rotation and translation of Tc and computing the corresponding 4 *4 matrix from these parameters or by multiplying the 4*4 matrix of Tc p-1 times with itself.
3. In a preferred embodiment in a case wherein, if the connection type is for a self-mating interface without degrees of freedom or mating symmetries, the position TB may be determined by
where
Tco is the initial transform stored in the database for the type of connection Cgiai gim The same computation may be applied in embodiments of the invention in which the geometric models of the port genders of an interface have not been defined with the same coordinate reference frame, for connection types without degrees of freedom or mating symmetries
4 In a preferred embodiment in a case wherein the connection type is for a self-mating port gender with degrees of freedom or mating symmetries, the position TB may be determined by the general formula TB = TA * TAa * (Tc)D *Tcθ* (TBb) 1 where
TA IS the transform that locates part A in the coordinate reference frame of the composite component type and TAΘ IS the transform that locates port a in the coordinate reference frame of part A and
Tβb is the transform that locates port b in the coordinate reference frame of part B and
Tco is the initial transform of the connection type C and
Tc is the isomere transform of the connection type C and p is the isomere parameter stored in the connection that locates part B relative to part A. The same computation may be applied in embodiments of the invention in which the geometric models of the port genders of an interface have not been defined with the same coordinate reference frame, for connection types with degrees of freedom or mating symmetries. The above approaches are specific examples and may be modified without departing from the principles of the invention. III. Figs. 13-17
The following data types and structures may be used in implementing the methods described above. Relationships between data structures (or "entities") used to store this data are described in connection with Figs 1 3-1 7.
A. Data Types and Structures
The following are the data types which may be used in the methods described above.
1 . Port
A "port" may be defined as the documented representation of the capability of a first component to enter into a relationship with another components through one port of the first component.
The data stored for a port in a specific implementation may comprise one or more, and desirably all, of the following:
PPoorrttlldd:: The unique identification of the port in the database
InComponentType: The type of component to which the port belongs
Portname: The name by which it is distinguished for a human among the ports of the component type
Gender: The gender of the port Transform: The transform from the port's coordinate system to the component's coordinate system
SubAssyld: The rigid subassembly within the component to which the port belongs Symbol l : Optional; Information about the symbolization of the port and/or its default location relative to the frame of the component type symbol
Symbol2: Optional; Information about the symbolization of the port and/or its default location relative to the sheet of the schematic of the component composition
2. Gender
A gender may be defined as the documented representation of a type of port. Each gender is associated with an interface. Interfaces have at least one gender, usually two genders, and in many practical cases, more than two genders.
A gender can be defined for an interface generally without reference to a mating surface if the interface does not have spatial extent, e.g., for an interface between software components where many interfaces are those between some procedure and the calls to the procedure, also involving the passing of parameters to and from the procedure. Another example is the interface that represents a data exchange protocol
The data stored for a gender in a specific implementation comprise one or more, and desirably all, of the following :
Genderld: The unique identifier of the gender in the database Interface: The interface to which the gender belongs
Name: The name by which the gender is distinguished from other genders of the same interface Geometry: A geometrical model that can serve as visual representation of the geometrical features of the gender and/or "as container" for alignment points that help determining the spatial relationship between a port of that gender and geometrical features of that type of components when that type of component has spatial extent.
The coordinate system of the geometry is chosen to be same as for every other gender of the interface type. Typically this is achieved by making it the same as to coordinate system of the interface. Also, typically, this is achieved by initially creating the geometry as a copy of the geometry of the mating surface of the interface, and subsequently adding and aligning solid geometric elements on one side of the mating surface NMSTransform. Optional; the transform that describes the location of the nominal mating surface in the coordinate reference frame of the gender's geometry model, not necessary in specific implementations of the invention
Symbol: Optional; Information about the symbolization that is used to signal the gender of a port or a connection's stub in a schematic 3. Interface
An interface may be defined as the documented representation of a type of relationship between components. A mechanical interface between components will usually define the mating surface, and, typically, the nominal mating surface, between the possible genders of that interface. The data stored for an interface in a specific implementation may comprise one or more, and desirably all, of the following.
WO 00/67205 PCT/USOO/l 2084
Interfaceld: The unique identifier of the interface in the database
Name: The name by which the interface is distinguished from other surfaces
Geometry: A geometrical model that can serve as visual representation of the geometrical features of the mating surface associated with the interface for interfaces that express spatial
10 relationships.
Isomere Transforms: The set of spatial transforms that result in distinguished viable alternate matings between genders.
For regularly formed sets, these
1 5 transforms are usually stored "intentionally" as:
Basiclsomere Transform : A transform that can be applied multiple times to construct the set of Isomere
20 Transforms
IsomeresQuantity: The maximal number of application of the basic isomere transform needed to construct all members
25 Initial Transform: Transform necessary on a Gender in case it would contact to itself
Supertype: The identifier of a class of interfaces that contains the interface
DatumFlowStrength: A quantity that characterizes the
30 predominance of the interface in establishing spatial relationships between components
Composite: Information about whether the interface is elementary or a composite of simpler
35 interfaces, can be inferred when the interface has a non-empty set of parts
DegreesOf Freedom: A characterization of the kinematic degrees of freedom in that connection that allows the efficient determination of
40 the resulting kinematic degrees of freedom for subassembhes that have one or more spatial relationships with each other through the same or through different types of interfaces
45 Rigid: Identifies interfaces that form rigid mechanical assemblies of the related components. This data can be combined
with and/or inferred from Degreesof Freedom
Symbol : Optional; Information about the symbolization that is used to signal the type of interface in the connection lines of a schematic
4. Connection Type
A connection type documents the viability of a mating between two genders. Usually, only connection types exist that represent the mating of two genders of the same interface. However, the concept can be extended to include relationships that involve more than one kind of interface if such a relationship exists in reality.
The data stored for a connection type in a specific implementation may comprise one or more, and desirably all, of the following. ConnectionTypeld: Unique identifier for the type of connection
FromGender: One of the genders for which the capability of mating is represented
ToGender: The other gender for which the capability of mating is represented
InitialTransform: Basic Transformation to mate the FromGender to ToGender if one of the Genders is used as if in self-connecting mode
Invalidlsomere: Information used to determine those isomeres among the ones documented for the interface that are viable for this pair of genders
DatumFlowStrength: Information used in establishing the priority of the connection if different from the value associated with the interface
AuxConnectionData: Information used to specify fasteners, tools, material, skills, time, etc., employed in establishing the connection during the assembly process
Symbol: Optional; Information about the symbolization that is used to signal the type of interface in the connection lines of a schematic if different from that associated with the interface
5. Component type
A "component type" may be defined as a documented representation of a type of component or product. It is a type of component because there can exist
multiple instances of the component type The component type serves as the representation of the common data that are always the same for all instances of the type component.
The data stored for a component type may comprise one or more, and desirably all, of the following :
ComponentTypeld: The unique identification of the port in the database
ComponentTypeName: The name by which the component type is known, e.g , the part number
Supertype: The class of component types to which the component type belongs
RoleModel: The component type that serves as role model for the component type
KindOf Component: Information about whether components of the type are elementary or a composite of simpler components (which can be inferred when the component type has a non-empty set of parts)
Subassembhes: Information about the number of rigid subassembhes within the component, can be inferred from the data of the parts/subassemblies related to the type of component
Terminally Instantiate: Information that the component type may be part of a fully configured component or product (which can be inferred from other data contained in the database) . Distinguishes role models and other conceptual models from component types that can become part of a real component or product
SuperCategory: Implementation-dependent. Used to distinguish different types of components in implementations with a common database table for more than one category of component
Symbol: Optional; Information about the default symbol frame and symbol design that is used to represent the component type in a schematic of component composition
Resources: Optional, Information about the resources and assertions provided by the component type for the benefit of the owner and/or maintamer and/or end user of the product
Preferences: Optional; Information about the preferences of location (position and/or orientation) of an instance of the component type in the component or product it is part of, e.g., the direction of gravity (up'Vdown") , the direction of normal movement
( "front"/" back'V'forward"/" backward"), the direction towards the curbside.
6. Part/Subassembly
A Part may be defined as the documented representation of the part-of relationship between a constituent of a composite component and the composite component type The part-of relationship is documented once for the type of composite component; it asserts that within any instance of that composite component type there is a constituent that conforms with the information in a Part.
A composite component type may contain several rigid subassembhes. When an instance of that component type becomes part of a composite component, each of these subassembhes may become assembled to a separate rigid subassembly of the composite component. A single level of representation may be chosen for parts and subassembhes.
The data stored for a part/subassembly in a specific implementation may be one or more, and desirably all, of the following:
PartSubassemblyld: Unique identifier for the part/subassembly in the database RoleName: The name by which the part is distinguished from other parts of the component
InComponentType: The type of component of which the part/assembly is a constituent InSubassembly: Identification of the rigid subassembly of the composite component to which the part/subassembly belongs
Transform: The transform from the part/subassembly's coordinate system to the coordinate system of the rigid subassembly of the composite component. This serves as cache for the transform when it has been automatically determined.
PartType: The type of component that fills the role, i.e., the part's type. PartSubassembly: Identification of the rigid subassembly of the part type that is represented by the documented Part/Subassembly
FirstSubassembly: Identification of the subassembly of the part type that serves as representation of the whole part which the subassembly belongs
SymboH : Optional; Information about the location of the symbol that represents the part in the schematic of the composition of the component type, possibly also information about the location of the ports of the part
Symbol2: Optional; Information about the locations of the part's port symbols in the schematic of the composition of the component type, in embodiments of the invention that allow the manual rearrangement of position of individual port symbols within individual part symbols.
Alternatively a two-level representation may be used that separates the information about the relationship of the ComponentType and its parts from that about the relationship between the ComponentType, its subassembhes and subassembhes of the parts that constitute the subassembhes of ComponentType.
7. Connection
A Connection may be defined as the documented representation of a connection between one port each of two part/subassemblies within a composite component or between a port of a part/subassembly and an external port of the composite component.
The data stored for a connection in a specific implementation may comprise one or more, and desirably all, of the following:
Connectionld: Unique identifier for the connection in the database
ConnectionType: The ConnectionType of the connection InComponentType: Component type to which the connection belongs
FromPort: One of the ports connected by the connection, of the part type of FromPart
FromPart: Part/Subassembly of the first port of the connection
To Port: The other of the ports connected by the connection, of the part type of ToPart
To Part: Part/Subassembly of the second port of the connection
IsomereTransform: Information about the Isomere instituted in the connection between the ports
InSubassembly: Identifies the rigid subassembly of ComponentType to which the connection belongs, can be inferred from other information in the database
Kind : Kind of connection, i .e. , internal or external, can be inferred from InComponentType and ToPart
FunctionalCircuit: Optional; Information about Global Function Flow that the connection conducts
Symbol: Optional; Information about the locations of characteristic points in the routing of the connection line that represents the connection in the schematic of the composition of the component type
In the interest of a symmetrical implementation of the connectivity information, it may be beneficial to split the information about the connection into two records, each with the information pertaining to one end of the connection, and either duplicate the common information in each of the two records, or store it in a third record.
8. Item Model
An item model may be defined as the documented representation of details of a simplex component. For simplex components with spatial extent, it refers to the geometrical features of the component. It is sometimes practical to allow more than one item model to be associated with one component type In that case, if more than one model is a geometrical model, one can use the boolean union of the solids in all geometry models as the intended complete geometrical model for the component.
The data stored for an item model in a specific implementation may comprise one or more, and desirably all, of the following:
Modelld: Unique identifier for the model in the database
InComponentType: Component type to which the item model belongs
ModelData: Data of the geometrical model, or information about the location of the geometrical model in the information storage system
Transform: Optional; Transform from the coordinate system of the component geometry to the coordinate system of the stored geometrical model
SubmodelName: Optional; Name that distinguishes the item model among those of the component type
ModelCategory: Optional, Category of model, e.g. , geometry, function or connectivity, in case other kinds of model are employed than one geometry model
In the interest of improved consistency of the database under manual maintenance it can be beneficial to restrict the associativity of item models to simplex component types
When the part-of relationship is employed to represent the association of geometrically simplex components with functional models, it may be suitable to introduce a separate data field that stores the information that a component type is geometrically simplex, and allow models to be associated only with those component types.
It may be beneficial under the circumstances of some implementations to restrict the number of geometry models associated with a simplex component type to at most one and store the information about that geometry model directly in a data field of the component type. 9. Component Class
A component class may be defined as the documented representation of a set of component types that have something in common that can serve as classification criterion. A component type is a Component Class if it is referred to by the supertype attribute in the definition of some other component type. Component Classes typically carry a value Termιnallylnstantιable = False. It can be beneficial to characterize such component types by a value of "Class" in the "KmdOfComponent" data field.
10. Role Model
A role model may be defined as the documented representation of the schema with which component types are supposed to comply. A role model, e.g , for a component type can be an elementary role model, defining only the ports of the component type, or a composite role model defining also the inner architecture with parts (the roles) and the connections between the ports within the role model.
The representation of a role model is typically the same as for an component of that category, except that the value of Terminallylnstantiable will typically be set to FALSE in the database because one or more of its parts is defined as a type of component that itself not sufficiently specified or configured to make it instantiate in a product and thus has a value Terminallylnstantiable = FALSE
Role Models can be associated with an component class through a supertype relationship Alternatively, Role Models can be conceptually united with the class concept, i.e., each class associated with exactly one role model. B. Figs. 13-17: Relationships Between the Data Types Fig . 1 3 is an entity relationship diagram that is embodied in a database
(e.g., to define tables therein) showing referential relationships between various entities used to organize and relate the various kinds of information for a specific implementation of the methodology. Each of the entities and relationships can be a separate data structure, or various entities and relationships containing common data can be combined together while preserving their individual functionality as shown. The entities that are shown in Fig . 1 3 are connections, parts, ports, component types, connection types, port genders, interfaces and geometrical models.
In Fig. 1 3, each class of entities is represented as a rectangular element. A possible relationship between any two entities is indicated by a diamond- shaped element linked by two connecting lines to these two entities. The text in the diamond indicates the nature of the relationship. The letter "n" on connecting lines indicates that the entity can have multiple relationships of that nature, whereas the number " 1 " or "2" indicates that the entity usually has that number of relationships, or has exactly that number of relationships in a specific implementation. Fig. 1 3 describes the following entities and their possible relationships:
The basic entity in which information about a type of component is represented is a component type entity 376. There can be specialized component types, e.g., a simplex component type entity 372 for piece-parts and a composite component type entity 374 for assemblies, each of which is "a kind of" component type, as represented at 382, 384, respectively. The simplex component type entity 372 "has" 370 a geometrical model 320, as indicated at 370. Because of the "a kind of" relationship 381 , 382 between the simplex component type and the composite component type, any other relationship that refers to a component type can also refer to a simplex component type or to a composite component type. A part of an assembly is represented by a part entity 31 2. Each part entity 31 2 is "in" exactly one composite component type entity 374, as indicated at 340, but more than one part entity 31 2 can have that relationship with the same composite component type entity 374. A part entity 31 2 is "of type" in relationship to exactly one component type, as indicated at 338, but a component type can be the type of more than one part.
A port of a component is represented by a port entity 304, each of which is "in" exactly one component type entity 376, as indicated at 328. A component type entity 376 can be in such a relationship with more than one port entity 304. Each port entity 304 has exactly one "of type" relationship 336 with a port gender entity 334. A port gender entity 334 can be the type of more than one port entity 304.
A port gender entity 334 is "of" an interface entity 360, as indicated at 362 An interface can be in such a relationship with more than one port gender. Each port gender and each interface "has" at most one geometrical model entity 320, as indicated at 366.
A connection type represents the fact that two port genders are compatible and that two ports can be connected if one is of type of one of the port genders and the other of the other port gender. Each connection type entity 348 is "from " exactly one port gender entity 334 (as indicated at 354) and is "to" exactly one port gender entity 334 (as indicated at 356) .
A connection between ports of parts is represented by a connection entity 31 6. A connection entity 31 6 is "in" exactly one composite component type (as indicated at 346) and a composite component type can be in multiple such relationships. A connection entity 31 6 is "of type" with exactly one connection type entity 348, as indicated at 352.
A connector entity 307 Is an entity that encodes the port and part of one side of a connection. A connector is "to" exactly one part entity 31 2 (as indicated at 310) and "at" exactly one port of the component type entity 384 with which the part entity 31 2 is in "of type" relationship 338 (as indicated at 302) . The connector entity 307 is "in" exactly one connection entity 31 6 (as indicated at 31 8), and exactly two connectors 307 are "in" each connection entity 31 6.
As indicated by the block 300, the particular embodiment of the encoding illustrated for the connection and connector is exemplary only. Other embodiments are possible and known to those of skill in the art. Fig. 14 is a diagram showing the interaction between a computer system 400 with a program 401 embodying the method, a product structural information storage 402 with the various entities specified for an assembly of two parts and a geometrical models data storage 406. In general, the program 401 uses a file 405, information from the product structural information storage 402 and geometrical models from the geometrical models storage 406, to create an image 404
of the assembly referred to in the file 405 on a display 408 of the computer system 400.
The assembly 404 comprises a first part (i.e., a bracket 223) and a second part (i.e., a body 1 29), which are shown separately in their respective geometrical models 410 and 420.
The product structural information storage 402 contains entities of the classes depicted in the entity relationship diagram of Fig . 1 3, with the relationships and special information for the assembly 404.
An interface is shown that has four holes for M4 fasteners, which is named "4* M4" in the interface entity 41 1 . A geometrical model 41 2 of the interface is stored in the geometrical models storage 406.
A first gender has four holes for M4 fasteners, which is named "4* M4 Holes" in a port gender entity 414. A second gender has four tap holes for M4 fasteners, which is named "4* M4 Tap Holes" in a port gender entity 41 6. A first component type entity 424 (named Bracket 223) has a relationship to the first part entity, to the geometrical model 41 0 of the first component type, and to port A of the first part. Similarly, a second component type entity 422 (named Body 1 29) includes a reference to the second part, to the geometrical model 420 of the second gender 420, and to port B of the second part. Port A embodies the first gender 414. A copy of the model of the first gender 414 is depicted as part of the geometrical model 410 of the first component type to indicate port A. Similarly, port B embodies the second gender 410, and a copy of the geometrical model of that gender is depicted as part of geometrical model 420 of the second component type 422. A connection type entity 430 (named "4*M4 Hole-Tapholes") has references to the first and second port genders 414, 41 6, and by its existence, documents that the first and second genders are matable.
A connection entity 426, together with the related connector entities, includes a reference to the first and second parts, to the ports A and B, to the connection type entity 430, and to a composite component type 428.
The composite component type entity 428 is named "Assembly 1 29234. " The file 405 contains a reference to the Assembly 1 29234 stored as the composite component type 428 in the product structural information storage 402. In the display of Fig. 1 5, a symbolization 500, which is similar to a block diagram, shows the composition structure of an assembly 502 having as parts one instance of a B component (P1 ) and two instances of an A component (P2 and
P3) . The symbolization 500 provides more information than a conventional bill of materials for the assembly 502, which would only include a list of the names of the constituent parts, their respective quantities, and, possibly, some drawing depicting the parts in their assembled position. The symbolization 500, however, shows the components and their connections to other components graphically, as well as all equivalent information found in the conventional bill of materials
The B-type part P1 has three ports A1 , A2 and A3. The port A3 is open, i.e., not connected, whereas the ports A1 and A2 are shown with connections to ports of the A-type parts P2 and P3, respectively. To define an assembly 509 as a new composite component type, a designer specifies information as depicted in a symbolization 51 0 as shown in Fig . 1 6. This information includes a component type name 51 2 (which may be, e.g ., a part number), the port(s) of the component type (e.g., a port 514 and its identifier 528 ("B")), the constituent parts 51 8a, 51 8b and 51 8c of the assembly 509, the connections 520a, 520b between ports of the parts, and a connection 522 between a port of the part 51 8c and the external port 514 of the newly defined component type.
In specific implementations, a contour 526 of the block showing the defined component type, and the symbolization 524 of the external port 514 and its placement relative to the contour 526, are stored in the product documentation to define the symbolization 510.
Fig . 1 7 is the symbolization 534 of an assembly 536 with four parts, including one part of the component type 1 B2A1 2 defined in Fig. 1 6. Ad
The present invention can be implemented, e.g., with any computer application program having PDM (product data management) capability, with 3-D visualization tools (e.g., any web browser with a VRML plug-in or EAI VIS MOCK-UP) or with CAD application programs (e.g. , CATIA, VPM, 4-D Navigator) . Suitable programs may have one or more of the following capabilities: 2D viewing, a virtual reality browser, 3D isometric viewing and/or stereoscopic viewing. Other suitable implementations would be known to those skilled in the art. Fig. 1 8 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the embodiments of the methods described above may be implemented. Although not required, the methods are described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those
skilled in the art will appreciate that the methods may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like The methods may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
With reference to Fig . 1 8, an exemplary system for implementing the invention includes a general purpose computing device in the form of a conventional personal computer 620, including a processing unit 621 , a system memory 622, and a system bus 623 that couples various system components including the system memory to the processing unit 621 . The system bus 623 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read only memory (ROM) 624 and random access memory (RAM) 625. A basic input/output system 626 (BIOS) , containing the basic routine that helps to transfer information between elements within the personal computer 620, such as during start-up, is stored in ROM 624. The personal computer 620 further includes a hard disk drive 627 for reading from and writing to a hard disk, not shown, a magnetic disk drive 628 for reading from or writing to a removable magnetic disk 629, and an optical disk drive 630 for reading from or writing to a removable optical disk 631 such as a CD ROM or other optical media. The hard disk drive 627, magnetic disk drive 628, and optical disk drive 630 are connected to the system bus 623 by a hard disk drive interface 632, a magnetic disk drive interface 633, and an optical drive interface 634, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 620. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 629 and a removable optical disk 631 , it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, CDs, DVDs, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment. A number of program modules may be stored on the hard disk, magnetic disk 629, optical disk 631 , ROM 624 or RAM 625, including an operating
system 635, one or more application programs 636, other program modules 637, and program data 638. A user may enter commands and information into the personal computer 620 through input devices such as a keyboard 640 and pointing device 642 (such as a mouse) . A camera 655 (such as a digital/electronic still or video camera, or film/photographic scanner) capable of capturing a sequence of images 656 can also be included as an input device to the personal computer 620. The images 656 are input into the computer 620 via an appropriate camera interface 657. This interface 657 is connected to the system bus 623, thereby allowing the images to be routed to and stored in the RAM 625, or one of the other data storage devices associated with the computer 620. However, it is noted that image data can be input into the computer 620 from any of the aforementioned computer-readable media as well, without requiring the use of the camera 655. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 621 through a serial port interface 646 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or a universal serial bus (USB) . A monitor 647 or other type of display device is also connected to the system bus 623 via an interface, such as a video adapter 648. In addition to the monitor, personal computers typically include other peripheral output devices (not shown), such as speakers and printers.
The personal computer 620 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 649. The remote computer 649 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer 620, although only a memory storage device 650 has been illustrated in Fig. 1 8. The logical connections depicted in Fig. 1 8 include a local area network (LAN) 651 and a wide area network (WAN) 652. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
When used in a LAN networking environment, the personal computer 620 is connected to the local network 651 through a network interface or adapter 653. When used in a WAN networking environment, the personal computer 620 typically includes a modem 654 or other means for establishing communications over the wide area network 652, such as the Internet. The modem 654, which may be internal or external, is connected to the system bus 623 via the serial port interface
646. In a networked environment, program modules depicted relative to the personal computer 620, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Having illustrated and described the principles of my invention with reference to several exemplary embodiments, it should be apparent to those of ordinary skill in the art that the invention may be modified in arrangement and detail without departing from such principles. I claim all such modifications that fall within the scope of the following claims.