The computer has greatly affected essentially all forms of information management, including the graphical editing and computer aided design and drafting (CAD) tools. Some simpler geometric modeling computer program products are two dimensional, providing only length and width dimensions of objects, while more complex and powerful computer program products provide three dimensional editing and visualization.
Three dimensional geometric modeling programs can generate a scene or part which can comprise one or more constituent 3D solid shapes. For example, a scene featuring a simple table could comprise a solid shape for each leg of the table, as well as a solid shape for a flat table top. The geometric modeling computer program typically has an executable object used to define and generate each solid shape. The object for each solid shape can have several components, the components being a combination of executable code and data structure. For example, a boundary representation (“B-rep”) component includes a data structure describing the geometry and entity data for the solid shape (e.g., length, width, depth, and coordinates of the solid part).
Most three dimensional geometric modeling programs employ a feature-based parametric modeling technique. In feature-based parametric modeling, the executable object for each solid shape has not only a boundary representation component, but also a history or creation component, referred to herein as a “feature tree” or “dependency tree,” which includes a data structure reflecting how a solid shape has been created. That is, the dependency tree includes data that indicates an order or chronological sequence of steps employed to construct the solid shape. For a simple solid block, for example, the history may indicate that the solid block began as a simple two dimensional rectangle that was extruded into a third dimension.
Typically, when the user wants to modify a feature-based solid shape by changing any aspect of the solid shape, the feature-based parametric modeling technique re-evaluates the entire solid shape, i.e., goes through the entire dependency tree in order to revise the part in accordance with the change. For example, if the user wanted to lengthen the table top of the table described above, another solid shape would be added adjacent to the previous table top. In so adding another solid shape corresponding to the increased length of the table top, another step is added to the history. Alternatively, the user may modify the 2D profile of the table top and let the program re-evaluate the solid shape of the table.
Often, a modification attempted by a user in a feature-based parametric modeling may provide a result different than that expected by the user, since most edits require a “roll back” of the tree to the state wherein the geometry was originally created. As the edit is performed, it may destroy an entity that a feature added downstream uses to bind for position in the model, causing a binding failure. As a result, the downstream feature must be manually reedited and repositioned to maintain design intent destroyed by a subsequent modification added later in time, but earlier in the feature tree.
Generic Example of Binding Failure
Referring to FIG. 1. The user creates a cube 100 that is 4 inches×4 inches×4 inches—corresponding to length×width×height. The user then defines a hole feature 105 through the middle of the cube 100, positioning a hole center 110 a distance of 2.000 inches from a mid-point of a straight reference edge 115 of a cube face 120. Then the user inserts a dimension notation 125 from the hole center 110 to the straight reference edge 115 of the cube 100, thereby binding not only the hole 105 to the straight reference edge 115, but also the dimension notation 125 to the straight reference edge 115. At this point the straight reference edge 115 is a parent to at least two children, the hole 105 and the dimension notation 125. A binding problem arises when a subsequent feature modifies the parent in such a way that the parent gets destroyed causing the at least one child to fail to bind to the parent.
Referring now to FIG. 2 to illustrate this binding problem, the user subsequently modifies the cube 100 from the original straight reference edge 115 to a round feature 200 inserted before the hole 105 by rolling back feature tree for the solid model to insert the round 200 between the cube 100 and hole 105, thereby causing the feature to change from cube→hole to cube→round→hole. As the model computes, it creates the cube 100; the round 200; and then tries to bind the hole 105 to the straight reference edge 115, as before. This action results in a bind failure because the straight reference edge 115 used to position the hole 105 is no longer present.
Conclusion
There is a need for a solution that can maintain the binding of child object where its parent object is modified or otherwise destroyed by a subsequent modification and that is independent of parent, where that parent geometry can be analytical or spline-based. Analytic geometry refers to referencing geometry that follows a mathematical function like spheres, cones, tori, etc. Whereas, spline-based geometry refers to referencing geometry that does not conform to known mathematical equations and is approximated, like free form, for example.