Patent Publication Number: US-8983805-B2

Title: Modeled object updating

Description:
RELATED APPLICATION(S) 
     This application claims priority under 35 U.S.C §119 or 365 to European Application No. 10306543.9, filed Dec. 30, 2010. 
     The entire teachings of the above application(s) are incorporated herein by reference. 
     FIELD OF THE INVENTION 
     The invention relates to the field of computer programs and systems, and more specifically to a method, system and program for updating a modeled object. 
     BACKGROUND 
     Computer-aided techniques are known to include Computer-Aided Design or CAD, which relates to software solutions for authoring product design. Similarly, CAE is an acronym for Computer-Aided Engineering, e.g. it relates to software solutions for simulating the physical behavior of a future product. CAM stands for Computer-Aided Manufacturing and typically includes software solutions for defining manufacturing processes and operations. 
     A number of systems and programs are offered on the market for the design of objects (or parts) or assemblies of objects, forming a product, such as the one provided by Dassault Systemes under the trademark CATIA. These CAD systems allow a user to construct and manipulate complex three dimensional (3D) models of objects or assemblies of objects. CAD systems thus provide a representation of modeled objects using edges or lines, in certain cases with faces. Lines or edges may be represented in various manners, e.g. non-uniform rational B-splines (NURBS). These CAD systems manage parts or assemblies of parts as modeled objects, which are mostly specifications of geometry. Specifically, CAD files contain specifications, from which geometry is generated, which in turn allow for a representation to be generated. Geometry and representation may be stored in a single CAD file or multiple ones. CAD systems include graphic tools for representing the modeled objects to the designers; these tools are dedicated to the display of complex objects—the typical size of a file representing an object in a CAD system being in the range of one Megabyte per part, and an assembly may comprise thousands of parts. A CAD system manages models of objects, which are stored in electronic files. 
     Also known are Product Lifecycle Management (PLM) solutions, which refer to a business strategy that helps companies to share product data, apply common processes, and leverage corporate knowledge for the development of products from conception to the end of their life, across the concept of extended enterprise. By including the actors (company departments, business partners, suppliers, Original Equipment Manufacturers (OEM), and customers), PLM may allow this network to operate as a single entity to conceptualize, design, build, and support products and processes. 
     Some PLM solutions make it for instance possible to design and develop products by creating digital mockups (a 3D graphical model of a product). The digital product may be first defined and simulated using an appropriate application. Then, the lean digital manufacturing processes may be defined and modeled. 
     The PLM solutions provided by Dassault Systemes (under the trademarks CATIA, ENOVIA and DELMIA) provides an Engineering Hub, which organizes product engineering knowledge, a Manufacturing Hub, which manages manufacturing engineering knowledge, and an Enterprise Hub which enables enterprise integrations and connections into both the Engineering and Manufacturing Hubs. All together the system delivers an open object model linking products, processes, resources to enable dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production and service. 
     Such PLM solutions comprise a relational database of products. The database comprises a set of textual data and relations between the data. Data typically include technical data related to the products said data being ordered in a hierarchy of data and are indexed to be searchable. The data are representative of the modeled objects, which are often modeled products and processes. 
     Product lifecycle information, including product configuration, process knowledge and resources information are typically intended to be edited in a collaborative way and in a dynamic way. For this reason notably, modeled objects are intended to be modified a certain number of times after they have been first created. 
     Any 3D object that is supposed to fit user defined specifications can be simulated through a virtual part. The virtual part is created by the designer using standard modeling features (extrude, revolute, cut, round etc.) or standard surfacing features (sweep, blend, loft, fill, deform, smoothing etc.). Many CAD systems supporting such modeling functions are history based system. This means that the creation history of design features is saved through an acyclic data flow linking the said features together through input and output links. 
     The history based modeling paradigm is well known since the beginning of the 80&#39;s. A solid part is described by two persistent data representations: history and B-rep (i.e. boundary representation). The B-rep is the result of the computations defined in the history. The shape of the part displayed on the screen of the computer is (a tessellation of) the B-rep. The history of the part is the design intent. Basically, the history gathers the information on the operations which the modeled object has undergone. The B-rep is generally saved together with the history because it is not possible to display complex parts only from the history data. The history is saved together with the B-rep in order to allow design changes of the part according to the design intent. 
     Another advantage of history based paradigm is for a designer to prepare reusable models. Indeed, other designers can reuse models by changing parameters of the history and letting the system update the new part. Since the update leads to the same result as running again the history with the new parameters, the new part is intrinsically compliant with the new design intent. 
     In such a context, the speed at which the update is performed is of matter, all the more for complex parts or for applications where many modifications are performed. Several technologies of the prior art for updating the part have been disclosed and are discussed below. 
     A very popular method to update the shape of a modeled object of which history has been modified is the following. First of all, during the creation phase, all intermediate results of the history are saved. A modification is typically for the designer to change the parameters of a feature, in other words, to change the data of a leaf node of the history. In this case, updating is for the system to replay all operations by following the input-output links from the modified leaf node down to the root node. This method holds as well for a multi-root data flow and when several leaf nodes are modified in one shot. Maystrovsky&#39;s U.S. Pat. No. 5,850,535 “Roll-back regeneration in a computer-aided design system” typically describes this technology in the particular case of a linear feature list. This update technology features two drawbacks. Firstly, the update time is closely related to the structure of the history (whether it is a linear list or a well balanced tree for example). In many low end CAD systems, the history is a linear list and its structure is out of the designer&#39;s reach. In this case, the update time is proportional to the age of the modified feature. When the history structure is controlled by the user, it is an additional difficulty for the user to balance the said history structure while designing a complex part. An inexperienced designer cannot perform this double task. The second drawback is that many operations are recomputed only because they are on the path (from the modified leaf node down to the root node) while they do not influence the resulting solid. In other words, many operations on the update path are spatially far from the actual change. Deciding whether an operation is meaningful or not during the update is a difficult question. As a consequence, the update is slow. 
     Another update method is to replay all operations of the history. It avoids intermediate results storage, thus saving memory. Some CAD systems used this method in the early 80&#39;s, but it is marginally used nowadays. Replaying the whole history after a modification results in an update time that is proportional to the global complexity of the part and not to the complexity of the modification. The designer expects a “simple” change to be updated faster that a “big” change. This behavior is undesirable from the designer&#39;s point of view. As a consequence, the update is slow. 
     Chin&#39;s U.S. Pat. No. 7,313,504 “Model management technology using feature chains” does not require history storage. Persistent data are solid primitives together with their respective “scopes” from which the algorithm dynamically generates a transient history structure. Then, the algorithm traverses this structure to compute the new part after a primitive creation or modification. This technology rebuilds a history structure each time the part is modified. Consequently, the update process requires a computation time that is proportional to the number of primitives and not to the complexity of the modification. A very simple modification would require the same amount of computation than a complex modification, which is not optimal from the designer&#39;s point of view. As a consequence, the update is slow. 
     In yet another technology for updating models based on history, all leaf nodes are solids, and all operations are pure Boolean operations (which are union, subtraction, intersection as opposed to non Boolean operations such as round, fillet, draft angle, tweak, thickness, shell). Given a modification intent, for example changing the size or position of a leaf solid, there exists, by theorem, a 3D volume outside which the resulting solid is invariant. This is the “a priori localization volume”. In many cases, this knowledge allows a faster update by simplifying the shape of leaf solids that are spatially far from the change, thus performing trivial or simpler operations to compute the new solid. This technology is inspired by the research paper “A null-object detection algorithm for constructive solid geometry” by R. B. Tilove, Communication of the ACM, July 1984, vol. 27, No 7. This technology features two drawbacks. Firstly, it does not take into account non Boolean operations such as draft angle, round, fillet, shell and thickness which are very popular in mechanical design. The reason is that it is impossible to anticipate how a round (or fillet, draft angle, shell, thickness) will proliferate on the solid due to tangency propagation, which eliminates the a priori localization volume. This restriction to pure Boolean operations is a major drawback in mechanical design and in solid modeling in general because a real life part always features some non Boolean characteristics (round, fillet, shell etc.). Secondly, even in the pure Boolean case, there are examples when this technology is not efficient. Consider for example the solid S=(X+Y)+Z illustrated on  FIG. 1  and defined by three primitives X,Y,Z and a linear history tree involving union operations only. Let Y′ be the new version of Y, meaning that the modification intent is to replace Y with Y′. According to this technology, the best possible localization volume is V=(Y′−Y)+(Y−Y′), as illustrated on  FIG. 2 . The principle is to write the modified solid S′=(X+Y′)+Z as S′=(S′−V)+(S′·V)=(S−V)+(S′·V), which is illustrated on  FIG. 3 . The first step of the updating process is to compute the B-rep of the invariant portion of the resulting solid S′ which is S−V. Then, the history tree of the changed portion of the solid is S′·V=((X+Y′)+Z)·V. Since this formula is equal to (((X·V)+(Y′·V))+(Z·V)), all primitives α such that α·V=φ are eliminated from the expression of S′·V, which hopefully yields a reduced history tree. Finally, the updating process computes the B-rep of the solid corresponding to the reduced history tree and merges this B-rep to the B-rep of the invariant portion S−V, which yields the B-rep of the modified solid. Applied to the primitives illustrated in  FIGS. 1-3 , it is clear that this does compute the operation +Z because primitive Z overlaps volume V, although it is obviously not necessary to compute the operation +Z. As a consequence, the update is slow, all the more when there are non-Boolean operations in the history. 
     B-rep modeling is an alternate technology to history based modeling. B-rep modeling does not save the history of the part. Thus, a change is directly and locally performed on the B-rep, by deleting, moving, extrapolating, healing faces, which is very fast compared to history replay. B-rep modeling technology provides a very fast update because there is no history to replay. The first drawback is a lack of semantic. The design intent expressed through the history is lost, and reusing predefined models is not possible. Secondly, not all topological and geometrical changes are possible through B-rep modeling. Finally, a very useful integrity property of history based modeling is that the new part is equal to the part created from scratch with new inputs. B-rep modeling does not guarantee this property. In this technology, there is no need for an update method because the modifications on the model dynamically update it. However, as no information on the operations which the object has undergone is kept, a subsequent modification is actually difficult for the user. Furthermore, B-rep modeling has geometrical and topological restrictions which lead designers to often prefer history based modeling. 
     Kripac&#39;s patent application US2007/0291028 “fast interactive object manipulation” describes a method for real time update of a history based solid. Given the solid primitive to be modified, the algorithm computes a reduced history tree. This reduced history tree is balanced in such a way that the modified primitive is involved in the very last of the last but one operation and is combined to one or two constant solids. The reduced history tree is obtained through algebraic manipulations of the initial history tree. The B-rep representation of the constant solids is computed from scratch. Then, the (hopefully) real time update can start upon user defined changes of the solid primitive. Only interactive manipulation is addressed by this technology, nothing is said about how the modified solid is actually computed for repository purpose. Kripac&#39;s algorithm is not compatible with intermediate results saving as described earlier because the history tree is rebalanced for each modification. Beyond the computer time required for algebraic manipulations, the geometrical and topological complexity of the constant solids involved in the reduced history tree is comparable to the complexity of the whole solid. Given that the constant solids are computed from scratch, the consequence is that the reduced history tree step is almost as costly as computing the whole solid from scratch. As a consequence, before the real time capability is available, the designer must wait during a time period that is generally too long. Furthermore, there exists a failure risk because algebraic manipulations may duplicate primitives in the reduced history tree, which causes tangent or locally identical surfaces situations. It is well known that these situations are handled with enormous difficulty by geometrical modelers. Furthermore, the integrity of the data model is not guaranteed because the computation performed by the system to provide the modified solid is totally different from the computation performed to create the solid from the modified primitives through the initial history. As previously mentioned, only interactive manipulation is addressed by this technology. How the final solid is computed before repository saving may need further computation. Drawbacks are thus a costly preprocessing and a potential geometrical fragility. As a consequence, the update is slow. 
     Solidworks&#39; patent application WO2008/127254 describes a method for “locally updating a three dimensional model”. Given a solid defined by a feature list and the corresponding B-rep and given a modified feature, the method determines a subset of features that possibly affect the shape of the solid. These features are related to the modified feature through three kinds of relationships: parent/child relationship, topological adjacency and spatial intersection. Then, topological faces of these features that appear on the solid are removed and/or replaced by faces of modified features. This method is directed to the general case including Boolean (union, subtraction, intersection) and non Boolean operations (round, fillet, draft, thickness, shell etc.). The resulting solid is the same as the solid obtained by regenerating all features from scratch. The first drawback is that in some cases, features are recomputed despite they do not change the resulting solid. The second drawback is that the computing path followed by the system to update the solid is totally different from the computing path to generate the modified solid from scratch. The update performs new computations to get the modified solid, other computations than those performed through a traditional update. For instance, according to page 12, line 11 of WO2008/127254 and referring again to  FIGS. 1-3 : a “spatial intersection relationship” is identified between the modified feature Y and Z with causes the +Z operation to be replayed, although unnecessary. As a consequence, the update speed can still be increased. 
     Besides, it has to be noted that graph theory has been discussed in the context of model modification. 
     The article entitled “On the use of graph transformation for model refactoring” by T. Mens, of the University of Mons-Hainaut, in Belgium, relates to model refactoring, and shows how graph transformation can provide formal support for this activity. 
     The article entitled “Scenario integration via higher-order graphs”, in Technical report No. 2006-517, by Z. Diskin, J. Dingel, H. Liang, from Queen&#39;s University, in Kingston, Ontario, Canada, 2006, also presents the use of graph theory for the management of scenarios involving models. 
     On graph theory specifically, the thesis entitled “A relation-algebraic approach to graph structure transformation”, by W. Kahl, from McMaster University in Ontario, Canada (most of the work completed at the Institute for Software Technology of Universität der Bundeswehr München in Germany), 2002, includes a statement about “the categoric approach to graph transformation”. It explains basic categorical push-out and pull-back operations as well as the “double push-out” graph rewriting. 
     However, there still exists a need for improving the update of a modeled object. 
     SUMMARY OF THE INVENTION 
     According to one aspect, the invention therefore provides a method for updating a modeled object, the method comprising:
         providing an operation,   providing:
           an old input graph of the operation,   an old output graph corresponding to an application of the operation to the old input graph,   a new input graph of the operation,   
           computing a rewriting rule that specifies: (i) a part of the old input graph to be replaced, (ii) a part of the new input graph to replace said part of the old input graph, and (iii) an interface which is a part common to said part of the old input graph, said part of the new input graph, and the old output graph,       

     applying the rewriting rule to the old output graph. 
     In embodiments, the method may comprise one or more of the following features:
         method further comprises (a) computing another rewriting rule that specifies: (i) a second part of the old input graph to be replaced, (ii) a part of the old output graph to replace the other replaced second part of the old input graph, and (iii) another interface which is a part common to the second part of the old input graph and said part of the old output graph, and (b) testing that the rewriting rule and the other rewriting rule are commutative before applying the rewriting rule to the old output graph;   the testing is performed by comparing an intersection between the replaced and the other replaced to an intersection between the interface and the other interface, the rewriting rule and the other rewriting rule being commutative when the two intersections are equal;   nodes of the old input graph, of the new input graph, and of the old output graph point to geometric data;   the old input graph, the new input graph, and the old output graph are at least sub-graphs of boundary-representation graphs;   the old input graph, the new input graph, and the old output graph are face-edge graphs or edge-vertex sub-graphs of boundary-representation graphs;   the old input graph, the new input graph, and the old output graph are edge-vertex sub-graphs of boundary-representation graphs, and the method further comprises, prior to the providing of the old input graph, the new input graph, and the old output graph: providing an old face-edge input graph of the operation, the old face-edge input graph being a sub-graph of the boundary-representation graph of which the old input graph is a sub-graph, an old face-edge output graph corresponding to an application of the operation to the old face-edge input graph, the old face-edge output graph being a sub-graph of the boundary-representation graph of which the old output graph is a sub-graph, a new face-edge input graph of the operation, the new face-edge input graph being a sub-graph of the boundary-representation graph of which the new input graph is a sub-graph, computing a face-edge rewriting rule that specifies a face-edge replaced which is a part of the old face-edge input graph to be replaced, a face-edge replacement which is a part of the new face-edge input graph to replace the face-edge replaced, a face-edge interface which is a part common to the face-edge replaced, the second face-edge replacement and the old face-edge output graph, computing another face-edge rewriting rule that specifies another face-edge replaced which is a part of the old face-edge input graph to be replaced, another face-edge replacement which is a part of the old face-edge output graph to replace the other face-edge replaced, another face-edge interface which is a part common to the other face-edge replaced and the other face-edge replacement, and testing that the face-edge rewriting rule and the other face-edge rewriting rule are not commutative;   the method further comprises testing for 3D compatibility between a volume corresponding to the replacement and a volume corresponding to the other replacement;   the operation is a filleting or a rounding operation; and/or   the providing an operation, providing the old input graph, the old output graph and the new input graph, and computing the rewriting rule are iterated over historical operations of the modeled object, the operation of each iteration being a respective historical operation.       

     According to another aspect, the invention further proposes a history-based computer-aided design system comprising:
         a) a database storing a 3D modeled object defined by:
           a history,   graphs linked to different points of the history,   
           b) a graphical user interface suitable for performing the above method.       

     According to another aspect, the invention further proposes a computer program comprising instructions for execution by a computer, the instructions comprising means for performing the above method with a graphical user interface of a computer-aided design system, wherein the system further comprises a database storing a 3D modeled object defined by a history and graphs linked to different points of the history. 
     According to another aspect, the invention further proposes computer readable storage medium having recorded thereon the above computer program. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Embodiments of the invention will now be described, by way of non-limiting example, and in reference to the accompanying drawings, where: 
         FIGS. 1-3  show an example of the prior art, 
         FIG. 4  shows the flowchart of the method of the present invention, 
         FIGS. 5-12  shows an example of the step of computing the rewriting rule, 
         FIGS. 13-14  show an example illustrating the principle of the invention method, 
         FIGS. 15-21  show examples of the graphs, 
         FIGS. 22-24  illustrate the rewriting rules corresponding to the example of  FIGS. 13-14 , 
         FIGS. 25-27  illustrate the commutativity test, 
         FIGS. 28-73  show examples of performing the invention method, 
         FIG. 73  shows a flowchart of an example of the method, 
         FIG. 74  shows an exemplified graphical user interface, and 
         FIG. 75  shows an example of a client computer system. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     With reference to the flowchart of  FIG. 4 , it is proposed a method for updating a modeled object. The method comprises providing (S 1 ) an operation. The method also comprises providing (S 2 ) an old input graph of the operation, an old output graph corresponding to an application of the operation to the old input graph, a new input graph of the operation. The method further comprises computing (S 3 ) a rewriting rule that specifies a “replaced”. The “replaced” is a part of the old input graph to be replaced. The rewriting rule also specifies a “replacement”. The “replacement” is a part of the new input graph to replace the part of the old input graph. The rewriting rule further specifies an “interface”. The interface is a part common to the “replaced”, the “replacement” and the old output graph. The method then comprises applying (S 4 ) the rewriting rule to the old output graph. Such a method improves the update of a modeled object. 
     A modeled object is an object modeled by data allowing a computer manipulation of the object. By extension, it designates the data itself. In its broadest lines, the method is intended for updating any type of modeled object, as long as the modeled object is defined by a graph. Thus, in the method, all modeled objects are defined by a respective graph. 
     The data modeling the modeled object may thus include data representing the graphs. Alternatively, the data modeling the modeled object may include data allowing the retrieval of the graphs. A graph is a structure comprising nodes and arcs, and a relationship wherein each arc is in relation with two nodes. In the context of a computer-implemented method, all these elements (nodes and arcs) may be referenced and pointers may lead to them. 
     The object may for example be a book. In such a case, the graphs defining the object may be trees wherein nodes represent chapters, parts, paragraphs, sentences, words and the arcs represent the “comprise/comprised by” relationship. In such a case, the method can be used for updating a book which is modified by a writer. The object may also be a 2D drawing, a mathematical formula, an audio file, a video clip. 
     In the context of applying the method in CAD, the object may typically be a 3D modeled object, e.g. representing a product such as a part or an assembly of parts. By “3D modeled object”, it is meant any object which is modeled by data allowing its 3D representation. A 3D representation allows the viewing of the part from all angles. For example, a 3D modeled object, when 3D represented, may be handled and turned around any of its axes, or around any axis in the screen on which the representation is displayed. This notably excludes 2D icons, which are not 3D modeled. The display of a 3D representation facilitates design (i.e. increases the speed at which designers statistically accomplish their task). This speeds up the manufacturing process in the industry, as the design of the products is part of the manufacturing process. The following examples concern a modeled object which is a 3D modeled object defined in a CAD system. However, the following applies to other types of objects as well. 
     The method is intended for updating a modeled object which has undergone at least one operation. The operation may be any type of operation, as long as it acts on the graph defining the modeled object. As a consequence, the operation has an “input” graph, i.e. the graph defining the object before undergoing the operation, and an “output” graph, i.e. the graph defining the object after undergoing the operation. Notably, the operation may any solid Boolean operation, but also solid non-Boolean operations such as filleting or a rounding operation. The method may indeed also present its advantages in the non Boolean case. 
     The input graph is at some point modified. Thus, it is referred to “old” input and output graph, i.e. the input and output graphs before modification, and to “new” input and output graphs, i.e. the input and output graphs after modification. 
     The method comprises providing (S 1 ) the operation. The operation may for example be retrieved or deduced from data modeling the object. This is typically the case of history based systems which keep track of all operations under which an object has gone. In this case, the modification of the modeled object is rendered easier to the designer. Alternatively, the operation may be entered by a user. In this case, memory space is saved. 
     Similarly, the method also comprises providing (S 2 ) the old input and output graphs of the operation, which may be retrieved, deduced or entered, as for the operation, and the new input graph of the operation, as a result of a modification of the modeled object. 
     The method further comprises computing (S 3 ) a rewriting rule that specifies a “replaced”. The “replaced” is a part of the old input graph to be replaced. The rewriting rule also specifies a “replacement”. The “replacement” is a part of the new input graph to replace the part of the old input graph. Basically, the “replaced” and the “replacement” are graphs. The rewriting rule further specifies an “interface”. The interface is a part common to the “replaced,” the “replacement” and the old output graph. 
     A rewriting rule is data coding a modification of a graph. The expression “rewriting rule” may correspond here to a “double push-out” (DPO) as defined in the thesis of W. Kahl entitled “A relation-algebraic approach to graph structure transformation”, which is based on the theory of categories, and may be designated as such in the following. Basically, a rewriting rule specifies a part of a graph which is to be replaced and its replacement, as well as data allowing the replacing. The method in this example is based on language theory of graph rewriting, which is itself based on the mathematical category theory. The double push-out graph rewriting rule is preferred here as opposed to single push-out or partial morphism. A DPO rule clearly identifies the interface (also called “gluing condition” hereafter) of the rewriting rule, which in turn clearly identifies the invariant portion of the modified graph. 
     The rewriting rule may also specify morphisms from the first interface to the first replaced and to the first replacement respectively. This is useful in case the interface has different identifiers from the part common to the replaced and the replacement to which it corresponds. Indeed, the modification may change all identifiers, even for nodes and arcs of the graph which are kept. “Morphisms”, which are known from the theory of categories, are, in the context of a computer-implemented method, pointers which link the elements of the interface to elements of the replaced and the replacement. Unless otherwise mentioned, all graph morphisms of the method are injections. 
     In the context of a computer-implemented method, rewriting rules are thus basically a set of instructions for performing logical operations on graphs. Therefore, applying a rewriting rule is done fast. 
     The method then comprises applying (S 4 ) the rewriting rule to the old output graph. In other words, the old output graph is modified such that the replacement takes the place of the replaced, as instructed by the rewriting rule. 
     The method allows for computing the new output graph of the operation. Because the method directly acts on the old output graph, i.e. by applying the rewriting rule on the old output graph, it is already a gain in speed. Furthermore, as the method applies a graph rewriting rule and thus performs logical operations, the method is all the faster. Thus, the method allows a fast computation of the new output graph. 
     Typically, as the one skilled in the art will appreciate, the method is performed through user-interaction with a GUI coupled with a memory which stores the different objects and a processor which performs the computations/determinations/applications of the method, possibly through user command. Such hardware will be detailed later. 
     An example of the step of computing the rewriting rule is now detailed with reference to  FIGS. 5-12 . All other rewriting rule computations of the method, if any, may be performed similarly. 
     In the example, the general process followed for computing a DPO rewriting rule is that the computing (S 3 ) of the rewriting rule specifying a transformation of a first graph e.g. old input graph A into a second graph e.g. new input graph A′ comprises determining a common part H between A and A′. The computing also comprises determining a first subtraction A′−H between A′ and the common part H, and a second subtraction A−H between A and the common part H. The computing further comprises determining first end nodes Adh(A′−H)∩H which are nodes of the common part H missing from arcs of the first subtraction A′−H, and second end nodes Adh(A−H)∩H which are nodes of the common part H missing from arcs of the second subtraction A−H. The computing further comprises computing an interface L as a union between the first end nodes Adh(A′−H)∩H and the second end nodes Adh(A−H)∩H, a replaced K as a union between the interface L, the second subtraction A−H, and the second end nodes Adh(A−H)∩H, and a replacement M as a union between the interface L, the first subtraction A′−H, and the first end nodes Adh(A′−H)∩H. This allows an efficient and simple retrieval of the rewriting rule in all cases, as only logical operations are involved. 
     As previously mentioned, the context of the method is defined by the old input graph A and the new input graph A′. A′ may be a modified version of A, which may mean that some elements (arcs and/or nodes) of A may be deleted in A′ and that some new elements (arcs and/or nodes) may be created in A′. In other words, there may exist a portion of A inside A′. Formally, this is captured by graph H and two morphisms toward A and A′ respectively. It is to be however noted that in practice, specific coding for the morphisms may be avoided in the case the elements of A (or A′) to be linked to elements of H hold the same identifiers. This set of three graphs and two morphisms is called a “span” (known from the theory of categories) and is noted: A←H→A′ (the letters designating the categories and the arrows designating the morphisms). Thus, whenever a “category” is mentioned in the following, it refers to graphs. 
     The first step in the example of  FIGS. 5-12  is to retrieve the DPO rule defined by the span A←H→A′. The DPO rule is the smallest span K←L→M where the gluing condition L (the interface) is a discrete graph and such that A′ is written from A through the DPO rule K←L→M. Traditionally, this is summarized by the following diagram, which represents the rewriting rule. 
     
       
         
         
             
             
         
       
     
     A is the push-out of K and H along L and A′ the push-out of M and H along L, which, according to category theory, is noted A=K   L H and A′=M   L H. According to the theory of categories, a push-out of two categories along another category is the reunion of the two categories after they are placed in the context of the other category thanks to morphisms from the other category to the two categories. The inverse operation (i.e. finding the other category from the two categories and their reunion) is called the “pull-back”. 
     The principle of the example is to keep only relevant sub-graphs of A, H and A′ by removing invariant data. This may be performed through the following steps. Let A−H be the set of arcs and nodes of graph A that are not in graph H. This does not define a new graph since some arcs may have no nodes to connect. In order to define a proper graph, let Adh(A−H) be the set of arcs and nodes A−H enriched with missing end nodes (taken from graph H). Clearly, this defines a graph subtraction. Notation Adh(·) is chosen by topological analogy with points and lines used to draw graphs on a sheet of paper. Then, let us define the intersection Adh(A−H) H, which is a discrete graph (vertices but no arcs) since there is no H arc in Adh(A−H). Symmetrically, let us define Adh(A′−H) H. The gluing condition L of the rewriting rule is then defined by L=(H Adh(A−H)) (H Adh(A′−H)) or, equivalently,
 
 L=H   ( Adh ( A−H )   Adh ( A′−H )).
 
     The left side K of the rewriting rule is then defined by K=Adh(A−H) L or, equivalently,
 
 K=Adh ( A−H ) ( H     Adh ( A′−H )).
 
     Finally, the right side M of the rewriting rule is M=Adh(A′−H) L or, equivalently,
 
 M=Adh ( A′−H ) ( H     Adh ( A−H )).
 
     So far, the given modified graph A′ (new input graph) is obtained from initial graph A (old input graph) through a DPO rule (the rewriting rule), as illustrated below. 
     
       
         
         
             
             
         
       
     
     It can be proven that A=K   L H and A′=M   L H. 
     In  FIGS. 5-12  now, nodes are named by lower case letters in boxes, and arcs are named by numbers in boxes.  FIG. 5  shows an example of a starting span A←H→A′ for the new input graph A′. Intermediate results for left side and gluing condition are provided in  FIGS. 6-8 . Notice that A−H is not a graph. Intermediate results for right side and gluing condition are provided in  FIGS. 9-11 . Notice that A′−H is not a graph. Synthesis of span K←L→M is provided in  FIG. 12 . This is the DPO rule that changes A into A′ (i.e. the rewriting rule for the example of  FIG. 5 ). 
     The principle of the method is now illustrated through an example with reference to  FIGS. 13-14 . 
     In this example, the old input graph may be a graph corresponding to large bloc A. In the example, the operation consists in merging A with small bloc B, as shown on  FIG. 13 . As a result, the old output graph is the one corresponding to solid C=A+B. 
     Then, solid A is changed into solid A′ by adding a small pocket  140  on its top face. The new input graph is thus a graph corresponding to A′. This modification may be performed by a user who wants to reuse solid C but not exactly as such. The expected resulting solid is C′=A′+B, as illustrated on  FIG. 14 . The method proposes to compute the rewriting rule that specifies how A is modified into A′, and to apply this rewriting rule directly on C. In fact, computing solid C′ from solids A′ and B would be for the system to perform exactly the same computations as those to get C=A+B because differences between the new input A′ and the old input A are “far” from the interaction with B. These computations would thus be performed twice. Thus, the method allows time saving compared to rerunning the operation on A′. Indeed, running the operation implies geometrical computations such as surface and volume intersections, whereas applying the rewriting rule consists in performing logical operations only. 
     The following now provides examples of the graphs with reference to  FIGS. 15-21 . The graphs may be any graph modeling the modeled object as known from prior art. In particular, nodes of the old input graph, of the new input graph, and of the old output graph may point to geometric data. This geometric data may for example comprise data on surfaces and points. This geometric data allows the representation of the modeled object. 
     Notably, the old input graph, the new input graph, and the old output graph may be at least sub-graphs of boundary-representation graphs in case of a 3D modeled object (i.e. “cell graphs”). They may for example be the whole boundary-representation graphs. First of all, solids are handled as cell graphs. A cell graph is a classical data structure to capture B-rep. The nodes of a cell graph are cells. “Cell” is a generic word for volume, face, edge and vertex. The arcs of the cell graph capture the “ . . . is bounded by . . . ” relationship: the volume is bounded by faces, the face is bounded by edges and the edge is bounded by vertices. Drawing convention is a top down orientation of cell graph arcs. For example, the full cell graph (i.e. the boundary-representation graph, i.e. the cell graph comprising all cells) that captures the topology of solid A shown on  FIG. 15  is illustrated on  FIG. 16 . Only visible cells are labeled. (The term “label” refers to the numbers in small boxes, possibly as nodes of the cell graphs, on the figures.) Volume  162  labeled “ 100 ” is bounded by faces  164  labeled “ 21 ”, “ 22 ”, “ 23 ”, “ 24 ”, “ 25 ”, “ 26 ”. Face labelled “ 22 ” bounds volume labeled “ 100 ” and is bounded by edges  166  labeled “ 10 ”, “ 18 ”, “ 14 ” and “ 19 ”. Edge labeled “ 10 ” bounds faces labeled “ 22 ” and “ 26 ” and is bounded by vertices  168  labeled “ 2 ” and “ 3 ”. Vertex labeled “ 2 ” bounds edges labeled “ 9 ”, “ 10 ” and “ 18 ”. 
     In such a case, the method is particularly fast if it is run on a system where intermediate boundary-representation graphs are stored. This is notably the case of many history based CAD systems. Indeed, those systems store the whole history of a 3D modeled object as a tree, wherein the leaf nodes are solids, the other nodes are operations, and for each node the corresponding boundary-representation is stored. 
     However, the old input graph, the new input graph, and the old output graph may alternatively be face-edge graphs or edge-vertex sub-graphs of the boundary-representation graphs. The face-edge sub-graph of a boundary representation graph is the sub-graph limited to the nodes representing faces and edges and to the arcs linking these nodes. The edge-vertex sub-graph of a boundary representation graph is the sub-graph limited to the nodes representing edges and vertices and to the arcs linking these nodes. Using such sub-graphs allows for a fast update. Because the graphs used are smaller, the computation of the rewriting rule and its applications is easier in terms of CPU. 
     In fact, the invention does not need to deal with all cell types of a cell graph. Firstly, the volume cell always changes because its faces change, so there is no reason to keep track of the volume cell in this sense. Then, dealing with the face-edge-vertex cell graph is not even necessary for the following reasons. If the face level is relevant, then the vertex level is not necessary because vertices always follow faces reorganization, so there is no reason to keep track of the vertex cells in this sense. If the face level is not relevant, then the edge-vertex cell graph is used. Consequently, depending on the problem complexity, either the face-edge cell graph or the edge-vertex cell graph is useful. An example will be solved later with the face-edge cell graph, illustrated on  FIG. 18  for solid A shown again on  FIG. 17 , on which only visible faces  164  and edges  166  are labeled. Illustrated on  FIG. 20 , the edge-vertex cell graph of solid A shown again on  FIG. 19 , on which only edges  166  and vertices  168  are labeled. 
     It should however be noticed that the method is not restricted to solid modeling. It applies as well to wire frame and surface operations and/or non manifold topologies. These applications may require the full cell graph. 
     As discussed earlier, unchanged cells may be “shared”. This means, in the example, that cells of solid A that are not changed by operation C=A+B are labeled with the same number in A and C cell graphs (n.b. in the following, the solids and the cell graphs are confounded for convenience). In the context of a computer-implemented method, this means that these objects have a same identifier or point to each other. If it is not the case, then morphisms may be added to the rewriting rule as discussed earlier. Cell sharing is a standard capability of state of the art commercial geometric modeling systems. In  FIG. 21 , solid C presented earlier in  FIG. 13  and its (face-edge) cell graph  210  are shown. Clearly, faces  164  labeled “ 21 ”, “ 23 ”, “ 24 ”, “ 25 ”, “ 26 ” are shared by cell graph A and cell graph C. Cell face labelled “ 422 ” is a new cell in cell graph C. It is bounded by eight edges  166 . All edges  166  of cell graph A are shared with cell graph C. 
     This cell sharing allows a possible first step toward DPO rewriting rule, which is to find the intersection of cell graphs A and C. Then, e.g. graph computation detailed earlier yields the DPO rewriting rule that changes cell graph A into cell graph C and vice versa. 
     The method may further comprise computing a second rewriting rule that specifies “another replaced” which is a part of the old input graph to be replaced, “another replacement” which is a part of the old output graph to replace the part of the old input graph, another interface which is a part common to the “other replaced” and the “other replacement.” In other words, a second rewriting rule, following the same format as the rewriting rule and specifying the transformation of the old input graph into the old output graph is computed. This second rewriting rule may be computed as the former one, e.g. as a DPO. 
     In this example, there are thus two rewriting rules: the rewriting rule and the “other” rewriting rule. For convenience, the rewriting rule will be referred to as the “Old-input-to-new-input DPO rewriting rule”. The other rewriting rule will be referred to as the “Old-input-to-old-output DPO rewriting rule”. The DPO computation of the “Old-input-to-new-input DPO rewriting rule” yields the DPO rewriting rule that changes cell graph A into cell graph A′ and vice versa. “Old-input-to-old-output DPO rewriting rule” yields the DPO rewriting rule that changes cell graph A into cell graph C and vice versa. 
       FIGS. 22-23  respectively illustrate the “Old-input-to-new-input DPO rewriting rule” and the “Old-input-to-old-output DPO rewriting rule” corresponding to the example of  FIGS. 13-14  through a geometrical representation of face-edge cell graphs. 
     Span A←D→C means that cell graph D is the intersection of cell graphs A and C, which is captured through injective graph morphisms represented by arrows ← and →. Span E←F→G is the rewriting rule including E as the sub cell graph to be replaced, F as the interface and G as the replacement sub graph. It is computed from span A←D→C e.g. according to the algorithm described earlier. The “Old-input-to-old-output DPO rewriting rule” is more completely illustrated on  FIG. 24 , which represents a graph representation of the face-edge cell graphs as well. 
     The method may further comprise testing that the rewriting rule and the other rewriting rule are commutative before applying the rewriting rule to the old output graph. In other words, before applying the rewriting rule, there is a test of commutativity. In an example, the result of the test is positive. The idea is to avoid applying the “old-input-to-new-input” rewriting rule when there is high chance that the modification leading to the new input graph is in conflict with the operation. This saves time because in such a case, the operation may need to be rerun on the new input graph anyway. For example, if the operation and the modification act on the input graph topologically at the same spot, there may be a conflict which is avoided by the commutativity test. 
     The testing may be performed by comparing an intersection between the replaced and the other replaced to an intersection between the interface and the other interface. The rewriting rule and the other rewriting rule are then commutative (i.e. the test is positive) when the two intersections are equal. 
     Old input A is concurrently written into old output C and into new input A′, as illustrated by the DPO rewriting rules diagram below. 
     
       
         
         
             
             
         
       
     
     The idea is to check whether DPO rewriting rules K←L→M and E←F→G are independent. This is performed by comparing the intersection of left sides K and E to the intersection of interfaces L and F. If these intersections coincide, then the DPO rewriting rules can be applied sequentially in any order and yield the same result. Cell graphs K and E shown at  252  on  FIG. 25  are respectively the top face and front face of solid A (faces labeled respectively “ 26 ” and “ 22 ” on  FIG. 15 ) and their cell graph intersection results in cell labeled “ 10 ”. 
     Cell graphs L and F shown on  FIG. 26  are respectively boundary edges of faces labeled “ 26 ” and “ 22 ”. Their cell graph intersection results in cell  10  as well, which makes the DPO rewriting rule independent in this example. 
     Indeed, in an example, the evaluation of commutativity may comprise comparing a part intersection (L∩L′) between the first part (L) and the second part (L′) to an interface intersection (G∩G′) between the first interface (G) and the second interface (G′). The evaluation is then negative when the part intersection (L∩L′) is not equal to the interface intersection (G∩G′). 
     The problem of commutativity may be to answer the following questions. Can the two DPO rules K←L→M and E←F→G be applied sequentially? If yes, does the result depend on the sequence order? If no, why cannot they be applied sequentially? The commutativity criterion provides all the answers. 
     The structure of a DPO rule is now shortly explained again. Left side K or E is the pattern identified in the initial graph. Right side M or G is the new material that replaces left side pattern. This substitution is carefully controlled by the gluing condition (the interface) L or F. The role of this interface is to guarantee that replacing K by E or M by G preserves the graph structure. All arcs and nodes of K excluding those of L are replaced by arcs and nodes of M. Consequently, the DPO rules are commutative if they do not share any overwritten elements, in other words if the patterns intersection is included in the interfaces intersection, i.e. formally: K E⊂L F. Since the reverse inclusion K E⊃L F is always true, it is equivalent to formulate the commutativity criterion as K E=L F. Of course, in practice, only K E⊂L F needs to be evaluated for faster evaluation. 
     Now the answers to the above questions: if the DPO rules K←L→M and E←F→G are commutative, that is if K E=L , then they can be applied sequentially in any order and the result does not depend on the sequence order. If the DPO rules are not commutative, that is K E≠L , they cannot be applied sequentially. At least one element of one left side is missing after the first rule is applied. The intersection K E provides elements (arcs and nodes) that are written differently by the DPO rules. These are referred to as “conflict” elements. Notice that if K E≠L then K E is not empty, otherwise L F would be empty as well since K E⊃L and there would be a contradiction. 
     The commutativity test may also be useful in the following situation. 
     In an example, the old input graph, the new input graph, and the old output graph are edge-vertex cell graphs. The method further comprises, prior to the providing (S 2 ) of the old input graph, the new input graph, and the old output graph, providing an old face-edge input graph of the operation, an old face-edge output graph, a new face-edge input graph of the operation. The method also comprises computing a face-edge rewriting rule that specifies a face-edge replaced which is a part of the old face-edge input graph to be replaced, a face-edge replacement which is a part of the new face-edge input graph to replace the face-edge replaced, a face-edge interface which is a part common to the face-edge replaced, the second face-edge replacement and the old face-edge output graph. The method also comprise computing another face-edge rewriting rule that specifies another face-edge replaced which is a part of the old face-edge input graph to be replaced, another face-edge replacement which is a part of the old face-edge output graph to replace the other face-edge replaced, another face-edge interface which is a part common to the other face-edge replaced and the other face-edge replacement. The method then comprises testing that the face-edge rewriting rule and the other face-edge rewriting rule are not commutative (the test is performed and the result may be negative). 
     The principle of this example is the following. The idea is to compute the rewriting rule that changes the old input into the new input and to apply this rewriting rule to the old output if the rewriting rule is commutative with the other rewriting rule which changes the old input into the old output. The graph foreseen at first is the face-edge graph. If the two rewriting rules are not commutative, it means that the modification and the operation act at the same topological localization on the face-edge level. At this point, it is preferable not to apply the rewriting rule on the old output because there is no guarantee that there is no conflict. However, it is possible at this point to rerun the process but at the edge-vertex level. Indeed, the modification and the operation may be not commutative at the face-edge level, but commutative at the edge-vertex level. In such a case, it is judicious to consider applying the rewriting rule computed with the edge-vertex graph on the old output graph instead of rerunning the operation systematically. In other words, the edge-vertex graphs allow a refined evaluation of the commutativity. The edge-vertex graphs are heavier than the face-edge graphs. Thus, working on the face-edge graphs at first and switching to the more refined edge-vertex level when necessary allows speeding up the method e.g. in case many operations are contemplated. 
     In the case the modeled object is a 3D modeled object and nodes of the old input graph, of the new input graph, and of the old output graph point to geometric data, the method may further comprise testing for 3D compatibility between a volume corresponding to the replacement and a volume corresponding to the other replacement. In other words, before applying the rewriting rule, there is a test of 3D compatiblity, and the result of the test is positive. The idea is still to avoid applying the “old-input-to-new-input” rewriting rule when there is high chance that the modification leading to the new input graph is in conflict with the operation. This saves time because in such a case, the operation may need to be rerun on the new input graph anyway. For example, if the operation and the modification act on the input graph geometrically at the same spot, there may be a conflict which is avoided by the 3D compatibility test. Of course, this compatibility test may be applied or not in combination with the commutativity test(s), for an even more secure application of the rewriting rule should it be the case. 
     Referring back to the example of  FIGS. 13-14 , the goal is to switch the DPO rewriting rules by applying K←L→M on cell graph C, which should yield the cell graph C′ without any geometrical and topological computation. The very last step before doing this is to check that there is no spatial interaction between the B-rep of M and the unchanged input B. This check insures that independency suggested by DPO rewriting rules analysis is actually true in 3D space. 
     The 3D compatibility test may be performed according to any classical process known per se. For example, the 3D compatibility test may involve computing surrounding boxes which grossly surround the modification performed e.g. by the user and the modification involved by the operation. Then, intersection of these surrounding boxes may be tested, the result being negative (i.e. incompatibility) when the boxes intersect. The following does not provide more details as the techniques for testing 3D compatibility are well known in the field of CAD. 
     The commutativity test is a logical operation as opposed to the additional 3D compatibility checking, which is a geometrical test. In the general context of 3D modeling, it is a good practice to run logical and fast testing prior to geometrical and more expensive testing. Furthermore, in the context of the method, performing rewriting rule testing allows a fast switch from the Face-Edge cell graph analysis to the Edge-Vertex cell graph analysis as illustrated on  FIG. 27 , which presents a flowchart of an example of the method with a combination of the different. 
     If, in addition, the rewriting rule testing performed on the Edge-Vertex cell graph yields a negative answer, the decision path toward the standard operation is run without any geometrical testing, as illustrated on  FIG. 27 . This way, less computer time is spent during the analysis for fast update when the method cannot be used. One more advantage of rewriting rules independency testing is that the intersection of interfaces provides a valuable hint for 3D checking. In other words, and from the implementation point of view, the rewriting rules independency testing should be understood as the initial step of 3D checking 
     So far, the method takes into account one previous result together with one modified operand (i.e. input graph). However, the method is easily generalized to the case of two modified operands. Referring again to the example of  FIGS. 13-14 , let A, B be the previous solid operands and C the previous solid result, C=A−B for example. Let A′, B′ be the new solid operands. The point is to consider the couple of solids (A, B) as a single operand and the couple of solids (A′, B′) as the new operand. From the cell graph point of view, considering a couple (A, B) is to consider a cell graph made of two separated cell graphs, the cell graph of solid A and the cell graph of solid B. Then, the question is to find the old-input-to-old-output DPO rewriting rule that changes cell graph (A, B) into cell graph C, possibly to find the old-input-to-new-input DPO rewriting rule changing cell graph (A, B) into cell graph (A′, B′) and possibly to check if they are independent or not. These may be performed exactly the same way as for one input graph. 
     So far, the method has been described with one operation. However, the providing (S 1 ) an operation, providing (S 2 ) the old input graph, the old output graph and the new input graph, and computing (S 3 ) the rewriting rule may be iterated over historical operations of the modeled object, the operation of each iteration being a respective historical operation. Indeed, in a history based CAD system, a 3D modeled object is generally modeled by historical operations arranged in a history. In such a case, the method may be iterated over the history. For each iteration, the new input is the new output of the preceding iteration, if this new output is a modification of the old output of the preceding operation of course. Such a method allows a fast update of a 3D modeled object defined in a history based CAD system, since some of the historical operations are not rerun. 
     Different examples of performing the method are now discussed with reference to  FIGS. 28-72 . 
     First of all, the example of  FIGS. 13-14  is discussed once more with reference to  FIG. 28 . 
     The spatial check (i.e. the 3D comptability test) is positive. Therefore, the method comprises applying DPO rewriting rule K←L→M (the old-input-to-new-input change) on cell graph C (the old output) to yield the cell graph C′ (the new output) as illustrated on  FIG. 28 . Once more, notice that only logical tests and simple 3D spatial tests are performed to get the diagnosis, and that applying the DPO rewriting rule is a matter of routing pointer in a logical structure. Consequently, the computing time is expected to be very small compared to the full geometrical and topological operation. 
     The example of  FIGS. 29-32  is to illustrate a negative independency (i.e. commutativity) test. 
     Now, the small bloc B not only trims the front face but also trims the top face of solid A, as illustrated on  FIG. 29 . The new input solid is the same as the previous example: solid A′ is solid A featuring a small pocket on its top face. Then, the old-input-to-old-output DPO rewriting rule E′←F′→M′ is as represented on  FIG. 30 . The old-input-to-new-input DPO rewriting rule K←L→M is the same as in the previous example. Brought together in the same drawing, it is clear that these two DPO rewriting rules are not independent (i.e. commutative). Their left sides intersection E′ K is the top face cell of cell graph A while the intersection of their interfaces F′ L includes three edge cells, as illustrated on  FIG. 31 . In other words, the commutativity test says that the top face cell of solid A is overwritten differently by the two DPO rewriting rules, which results in a conflict. Consequently, the DPO rewriting rules, as performed on face-edge cell graphs, do not switch. This suggests that the full operation must be replayed to provide the new result from new inputs. 
     Nevertheless, the same process can be applied to the edge-vertex cell graph instead of the face-edge cell graph, as explained with reference to  FIGS. 33-35 . 
     From the geometrical point of view, the edge-vertex graph only captures the wireframe topology of solids. The old-input-to-old-output DPO rewriting rule is illustrated on  FIG. 33 . Notice that the rewriting rule is represented through a wireframe geometrical representation of the solids to represent the fact that the rewriting rule applies on an edge-vertex graph. Similarly, the old-input-to-new-input DPO rewriting rule is illustrated on  FIG. 34 . It is very simple because it is the addition of two disjoint graphs. Consequently, left side and interface are empty graphs  340 . 
     These two DPO rewriting rules are independent because the intersection of their left sides is equal to the intersection of their interfaces, which are both the empty graph. Consequently, the old-input-to-new-input DPO rewriting rule is applied to the old output  350 , as illustrated on  FIG. 35 . 
     The additional 3D checking is to compare faces of the small pocket to faces of the old output solid. This results in additional edges  352  on the top face of the old output solid. 
       FIGS. 36-37  exemplify the case when the rewriting rules are independent while additional 3D spatial test concludes that there is no 3D independency. 
     Here, solid A′ features a pocket  360  that is deep enough to run into solid B, as illustrated on  FIG. 36 . Clearly, additional geometrical and topological operations are needed to compute the interaction between solids A′ and B to get the small portion of solid B remaining inside the pocket. In other words, in order to obtain the new output C′ shown on  FIG. 37 , the operation needs to be run again because the 3D compatibility test is negative. However, using the edge-vertex cell graph instead of the face-edge cell graph saves intersection curves between solids A and B which were already computed. 
     With reference to  FIGS. 38-41 , the case when the DPO rewriting rules are independent while the additional check says that it cannot be directly applied is exemplified. 
     Even though there is no direct application of the rewriting rule to the old output, the old output is still reused to compute the new output, which saves computation. The old input is a cylinder  380  that is added to a rectangular bloc  382 , yielding the old output  384 . The new input  386  is the same cylinder  380  together with a sphere  388 . The sphere does not intersect the cylinder, which defines a solid including two lumps. The old-input-to-old-output DPO rewriting rule is illustrated on  FIG. 38 . The interface is the top circle of the cylinder, the invariant is the top face of the cylinder. Now, the old-input-to-new-input DPO rewriting rule, shown on  FIG. 39 , is very simple since left part and interface are empty graphs. This is because nothing in the initial object is replaced in the final object, the sphere is simply added beside the cylinder. 
     According to the commutativity test, these DPO rewriting rules are independent because the intersection of their left part and the intersection of their interfaces are equal. Actually, they are both equal to the empty graph. Additional 3D check shows interference  400  between the new portion of the new input (the sphere) and the old input (the rectangular bloc). Consequently, the object resulting from applying the old-input-to-new-input DPO rewriting rule to the old output is not a valid solid, as illustrated on  FIG. 40 . 
     Nevertheless, in this case, this object is a valuable starting point to compute the genuine new output by saving geometrical computation. Indeed, the intersection between the cylinder and the bloc are reused from the old output, the only and unavoidable geometrical computation is the intersection  410  of the old output with the sphere, as illustrated on  FIG. 41 . The full operation would recompute both the bloc/cylinder intersection and the bloc/sphere intersection. 
     Thus, in this example, after the negative compatibility test, geometrical computations are performed according to the compatibility test (here, the intersection  410  is computed) on the old output which is thus slightly modified, and then only the method applies the rewriting rule to the old output. Because geometrical computations according to the compatibility test are performed, the method still saves time as compared to rerunning the operation on the new input. 
     A first example of the method with rounding or filleting operations is discussed with reference to  FIGS. 42-53 . 
     The filleting example is to illustrate the capability of the invention to deal with non Boolean operations. The old input  420  is the L-shape solid illustrated on  FIG. 42 . The old output  422  is the filleted L-shape solid illustrated on  FIG. 42  as well. The new input  424  is the L-shape solid featuring a hole on its top face illustrated on  FIG. 43 . A traditional update would rerun the filleting operation on the new input  424  solid to provide the new output solid  426  illustrated on  FIG. 44 . The point here is to avoid the filleting replay during the update. 
     The old-input-to-old-output DPO rewriting rule is illustrated on  FIG. 45 . The old-input-to-new-input DPO rewriting rule is illustrated on  FIG. 46 . These two DPO rewriting rules are commutative. Indeed, on one hand, the intersection of the left side  470  of the old-input-to-new-input DPO rewriting rule and the left side  480  of the old-input-to-old-output DPO illustrated on  FIGS. 47-48  is the U-shape wire  490  illustrated on  FIG. 49 . On the other hand, the intersection of the interface  500  of the old-input-to-new-input DPO rewriting rule and the interface  510  of the old-input-to-old-output DPO illustrated on  FIGS. 50-51  is the same U-shape wire  490  illustrated on  FIG. 52 . 
     Additional 3D checking validates that the graph rewriting operation provides the correct result. Applying the old-input-to-new-input DPO rewriting rule to the old output provides the expected result, without recomputing the filleting operation, as illustrated on  FIG. 53 . 
     A second example of the method with rounding or filleting operations is discussed with reference to  FIGS. 54-72 . 
     In this second example, the old input change is a bit different. The hole trims the front (drafted) face  582  of the L-solid  560 . This leads to non independent DPO rewriting rules; however the edge-vertex graph allows some rewriting work. Illustrated on  FIGS. 54-57 , the new position of the hole added on the L-solid and its consequences. Notice that old input  420  and old output  422  solids are the same as before. 
     The old-input-to-old-output DPO rewriting rule is the same as before. The old-input-to-new-input DPO rewriting rule is illustrated on  FIG. 58 . Notice that not only the top face is changed, but also the drafted face  582 . Now the independency criterion is investigated. The intersection of the left sides  480 ,  590  is illustrated on  FIGS. 59-61 . Then, the intersection of the interfaces  510 ,  620  is shown on  FIGS. 62-64 . The results of these intersections (on  FIG. 61  and  FIG. 64 ) are not equal, so, according to the “graph merger” invention, the DPO rewriting rules are not independent. In fact, the investigation states that the drafted face of the old input solid is written differently by the two DPO rewriting rules. 
       FIGS. 65-72  show how to deal with rounding and filleting example 2 through edge-vertex cell graphs. 
     Dealing with edge-vertex graphs leads to a more favorable conclusion: DPO rewriting rules are independent when considered at edge-vertex topological level. Following the usual process, illustrated on  FIG. 65  is the old-input-to-old-output DPO rewriting rule. Now, the old-input-to-new-input DPO rewriting rule is illustrated on  FIG. 66 . Its interface  660  includes four isolated vertices. 
     The intersection of the left sides is equal to the intersection of the interfaces. They are both equal to a couple  700  of vertices located on the top face of the L-solid, as illustrated in  FIGS. 67-72 . Consequently, the DPO rewriting rules are independent, and the old-input-to-new-input DPO rewriting rule can be applied to the wireframe topology of the old output, yielding the wireframe topology of the new output. Additional 3D checking (mainly testing that non adjacent faces are separated) allow to compute the new output solid without rerunning the filleting operation, which was the goal. 
     The following summarizes different features and advantages of non-limiting examples of the method. 
     As has been discussed, in examples, the method deals with creating, editing, modifying and updating the shape of a virtual part using a computer aided geometric design system (CAD system in the following). The resulting shape of the solid part is saved as well through a topological and geometrical boundary representation (B-rep in the following). Modifying a part is for the designer to change a parameter in the history of features and for the system to update the B-rep of the part by replaying the appropriate subset of features captured in the history. 
     The method may speed up each operation stored in the history during the history replay. This is achieved by using the knowledge of old input(s), old output and new input(s). The process may be to consider the old input as an initial model that is concurrently modified to yield, on one hand, the old output, and, on the other hand, the new input. Then, old-input-to-new-input and old-input-to-old-output changes may be interpreted as rewriting rules on graphs. Mainly, an independency criterion may be used to check if the two changes can switch. If so, the old-input-to-new-input change is applied to the old output, which yields the new output. Of course, this process is expected to be much faster than computing the new output from new input(s) by running the full operation because it runs light graph manipulations instead of complex numerical, geometrical and topological computations. 
     The invention may take place during the history replay, so it is compatible with all history based CAD systems, thus saving the design intent. The performance drawback is eliminated by replacing, each time it is possible, a full geometrical and topological operation by a light graph re-writing operation, thus accelerating the update. This overcomes drawbacks of prior art where the price to pay for saving the design intent is a longer update time. It should be mentioned that advanced declarative systems suggested in patent EP1501026 entitled “CAD system using a context free grammar” are based on a predefined history, together with commutative properties that make the system declarative. Despite the history is hidden to the designer, the update process is exactly the same as traditional history based systems, and then can take advantage of the method. 
     No operation is incompatible with the method for the following reason. An operation that cannot take benefit of the method will be replayed through the traditional process: new output created from scratch with new inputs. From the implementation point of view, the method may be understood as a way to overload an existing program. The method&#39;s implementation does not require any change in existing software architecture. 
     As can be understood from the above explanations, referring back to  FIGS. 1-3 , the method does not re-compute operation +Z. Conversely, the invention is able to reconnect the right-hand side faces of previous solid S to the modified portion of the new operand resulting from X+Y′, thus avoiding +Z operation. The method is thus fast indeed. Furthermore, the method saves design intent through the history. The method is designed to have a light preprocessing and does not change the computations because it reuses previous results. 
     Finally, it must be mentioned that the method saves integrity. Previous results may be extensively reused, thus computing only new results. Consequently, the resulting solid is exactly the same as the solid obtained by classical history replay. 
     The method speeds up each operation stored in the history during the update process. This is achieved in an example by exploiting the following data: old input(s) of the operation, old output of the operation and new input(s) of the operation. A new input being a modified version of an old input. Let us focus on one modified input. The process is to consider the old input as an initial model that is concurrently modified to yield, on one hand, the old output, and, on the other hand, the new input. Then, considering B-rep of solids as cell graphs and using graph grammars and double push out rewriting rules (DPO rewriting rules in the following), old-input-to-new-input and old-input-to-old-output changes are interpreted as DPO rewriting rules performed on cell graphs. The independency criteria (commutativity test) is used to check if the two DPO rewriting rules can switch. If they can switch, from the cell graph point of view, then some complementary checks are performed, depending on the nature of the operation. Typically, a Boolean operation requires some spatial checking. If this additional checking is successful, then the old-input-to-new-input DPO rewriting rule is applied to the old output, which yields the new output. If the additional checking is not successful, a partial operation is performed. If the DPO rewriting rules do not switch because they are not independent then the full operation is performed, as it would be without the method. This is summarized in the flowchart of  FIG. 73 . 
     The above method is computer-implemented, which means that the steps of the method are executed by a computer. However, the triggering of at least some of the steps of the method may be performed through user-computer interaction. The level of user-computer interaction required may depend on the level of automatism foreseen and put in balance with the need to implement the user&#39;s desideratum. In embodiments, this level may be user-defined and/or pre-defined. 
     Thus, the invention is also directed to a CAD system suitable for performing the method. In practice, a user is provided with a graphical user interface (or GUI) such as the one of CATIA, the GUI being in relation with a means, e.g. a database, for storing data necessary to the execution of the method. Such a program and system allow for a fast update of any operation when the input have been modified and thus are an enhancement to collaborative design/reuse design/ulterior modifications design. 
     In reference to  FIG. 74 , the exemplified graphical user interface (or GUI)  2100  may be a typical CAD-like interface, having standard menu bars  2110 ,  2120 , as well as bottom and side toolbars  2140 ,  2150 . Such menu- and toolbars contain a set of user-selectable icons, each icon being associated with one or more operations or functions, as known in the art. 
     Some of these icons are associated with software tools, adapted for editing and/or working on the 3D object which is a modeled product  2000  or parts of product  2000  such as that displayed in the GUI  2100 . In the following description, “product”, “part”, “assembly” and the like may be referred to as “part” for the sake of simplicity. Note that the concept The concept of “part” can in fact be generalized to that of “object”, wherein an object can be only a “physical” part of the designed product or, more generally, any software tool participating in the design process (but not necessarily “in” the final product). 
     The software tools may be grouped into workbenches. Each workbench comprises a subset of software tools. In particular, one of the workbenches is an edition workbench, suitable for editing geometrical features of the modeled product  2000 . In operation, a designer may for example pre-select a part of the object  2000  and then initiate an operation (e.g. change the dimension, color, etc.) or edit geometrical constraints by selecting an appropriate icon. For example, typical CAD operations are the modeling of the punching or the folding of a 3D modeled object displayed on the screen. 
     The GUI may for example display data  2500  related to the displayed product  2000 . In the example of  FIG. 74 , the data  2500 , displayed as a “feature tree”, and their 3D representation  2000  pertain to a brake assembly including brake caliper and disc  2010 . The GUI may further show various types of graphic tools  2130 ,  2070 ,  2080 ,  2400  for example for facilitating 3D orientation of the object, for triggering a simulation of an operation of an edited product or render various attributes of the displayed product  2000 . A cursor  2060  may be controlled by a haptic device to allow the user to interact with the graphic tools. 
     It is to be understood that the part  2000  can be any object in any configuration capable of being defined by a CAD/CAM/CAE system, or any system used to display views of an object from varying viewpoints. The invention may thus be implemented on a computer program comprising instructions by a computer, the instructions comprising means for causing the above system to perform the above method. The invention may for example be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention may be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. 
     The invention may advantageously be implemented in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. The application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language. 
       FIG. 75  shows a client computer system, e.g. a workstation of a user. 
     The client computer comprises a central processing unit (CPU)  1010  connected to an internal communication BUS  1000 , a random access memory (RAM)  1070  also connected to the BUS. The client computer is further provided with a graphical processing unit (GPU)  1110  which is associated with a video random access memory  1100  connected to the BUS. Video RAM  1100  is also known in the art as frame buffer. A mass storage device controller  1020  manages accesses to a mass memory device, such as hard drive  1030 . Mass memory devices suitable for tangibly embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks  1040 . Any of the foregoing may be supplemented by, or incorporated in, specially designed ASICs (application-specific integrated circuits). A network adapter  1050  manages accesses to a network  1060 . The client computer may also include a haptic device  1090  such as cursor control device, a keyboard or the like. A cursor control device is used in the client computer to permit the user to selectively position a cursor at any desired location on display  1080 , as mentioned with reference to  FIG. 74 . In addition, the cursor control device allows the user to select various commands, and input control signals. The cursor control device includes a number of signal generation devices for input control signals to system. Typically, a cursor control device may be a mouse, the button of the mouse being used to generate the signals.