Abstract:
Embodiments of the invention relate to merging and splitting intersecting geometry-only solids and surfaces in an intuitive manner. One embodiment is a method of merging and cutting geometry-only format CAD objects without related history information, using a single geometry modification tool and interface. In response to receiving a group selection from the user, of a plurality of CAD objects, the method infers a merge operation and automatically merges the plurality of CAD objects into a single merged CAD object. In response to receiving an individual selection from the user of a CAD object, the geometry modification tool enters a merged state when the subsequent second selection from the user is selected in a manner indicating a merger operation, or alternatively, enters a cut state when the subsequent second selection from the user is selected in a manner indicating a cut operation.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This application is a continuation of application Ser. No. 11/969,509, filed on Jan. 4, 2008, entitled “SYSTEMS AND METHODS FOR MERGING AND SPLITTING INTERSECTING SOLIDS AND SURFACES,” which is incorporated herein by reference. This invention relates to merging and splitting intersecting geometry-only solids and surfaces in an intuitive manner. 
     2. Prior Art 
     Objects in a CAD system can be represented in a parameter-based way or in a geometry-based way. In a parameter-based representation, the object is modeled as an object along with a set of features and history that define the object. In a geometry-based representation, the object is simply represented as a set of geometric data. 
     In modern CAD systems, geometry can be created in three basic ways: from manipulation of 2D sections, creation of edge features by modifications to the sharp boundaries between faces (e.g., a fillet), and combining and manipulating solid primitives using a set of Boolean operations. Over time, every major CAD tool has organized these combinatorial Booleans according to their inputs and desired output. This organization has resulted in many separate workflows located within separate features and tools to perform these functions. Moreover, since these CAD tools essentially force the user to make up a recipe of desired functions, and only then ask for the calculation to occur, the user never knows the result until the operation has concluded. Changes to a model that are made after a completed operation involve rolling the history of the model backwards and redefining the Boolean operation with different selections and/or options. This is a frustrating and time-consuming endeavor. 
     When editing a previously combined or split solid or surface in a parametric system, the process requires step-by-step re-creation of the original solids and/or surfaces. To modify the combined or split objects, changes must be rolled back, and the new change must be made before a user can return to the current step. This is a consequence of parametric systems having added many history features on top of the actual geometry modeling functionality. These systems have interwoven these features into the software so that making changes requires a lot of effort and additional steps to maintain the information in the step-by-step history. Specifically, they require editing the particular historical step that parameterized the object instead of changing the object itself. This method allows a user to modify a feature of an object only when the object is in the same state that it was in when the feature was created. 
     Other systems provide the combine and split actions using many different tools, as shown in the representative workflow of some example cases in  FIG. 16 . Occasional pre-selection is offered, and little logic is performed by the system to determine the user&#39;s intention. To select the correct tool, the user must know in advance which objects they want to merge and which tool is appropriate for those objects. In addition, the user must switch between tools when performing the same action (such as a merging) when the target and cutter objects are different types. The entire action must be completed to see the expected result; there is no preview of the appearance of the final object before regions are deleted. 
     SUMMARY OF THE INVENTION 
     Embodiments of the invention relate to merging and splitting intersecting geometry-only solids and surfaces in an intuitive manner. A first embodiment comprises a method of merging and cutting geometry-only format CAD objects stored within a computer aided design modeling system and without related history information, using a single geometry modification tool and interface. The method includes displaying a plurality of CAD objects and a plurality of geometry modification tools, including the single geometry modification tool, within a graphical user interface of the computer aided design modeling system. This method also includes receiving an activation, from a user of the computer aided design modeling system, of the single geometry modification tool, and in response to receiving a group selection, from the user, of a plurality of CAD objects while the single geometry modification tool is active, inferring a merge operation in response to the group selection from the user, and automatically merging the plurality of CAD objects into a single merged CAD object. In response to receiving an individual selection from the user of a first selected single CAD object, and while the single geometry modification tool is active, the method includes receiving a subsequent second selected single CAD object from the user, and further; entering a merged state when the subsequent second selection from the user is selected in a manner indicating a merger operation, and automatically merging the first selected single CAD object and the second selected single CAD object into a single merged CAD object; and entering a cut state when the subsequent second selection from the user is selected in a manner indicating a cut operation, and automatically cutting the first selected single CAD object with the second selected single CAD object, wherein the first selected single CAD object is cut into at least two distinct CAD objects. The merged or cut CAD objects are then displayed within the graphical user interface of the computer aided design modeling system. 
     In some embodiments of the invention, an automatically generated merged CAD object is generated with the attributes of the first selected single CAD object. In other embodiments of the invention, at least one of the at least two distinct CAD objects is deleted in response to a further received selection from the user. In yet other embodiments of the invention, upon receiving a selection of a third single CAD object from the user, the at least two distinct CAD objects are cut by the selected third single CAD object. 
     Another embodiment of the invention is a method of cutting geometry-only format CAD objects stored within a computer aided design modeling system and without related history information, using a single geometry modification tool and interface. The method includes displaying a plurality of CAD objects and a plurality of geometry modification tools, including the single geometry modification tool, within a graphical user interface of the computer aided design modeling system. The method also includes receiving an activation through a graphical user interface, from a user of the computer aided design modeling system, of the single splitting too. Once activated, the tool receives a selection, from the user, of a face of a solid CAD object, while the splitting tool is active, and automatically merges, the at least one face of a solid object, into a cutting object, based on the received selection from the user. The method also includes extending the edges of the cutting object to create a cutting plane, inferring the solid CAD object based on the received selection of the face of the solid CAD object, and automatically cutting the solid CAD object into at least two distinct CAD objects using the extended cutting plane. The cut CAD object is then displayed within the graphical user interface for the user. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows a computer system on which the combine tools in accordance with embodiments of the invention can be implemented. 
         FIG. 2  shows the overall architecture of the modeling system and combine tools. 
         FIG. 3  shows the detailed architecture of the components that contain the combine tools. 
         FIG. 4  shows a three-dimensional modeling software application containing the combine tool and displaying two solids that can be merged by the tool. 
         FIG. 5  shows a merged solid created by merging the solids in  FIG. 4  using the combine tool. 
         FIG. 6  shows a solid that can be split by an intersecting surface using the combine tool. 
         FIG. 7  shows the state of the interface as the user selects the Cutter surface from  FIG. 6  using the Select Cutter sub-tool. 
         FIG. 8  shows the two solids created by splitting the solid in  FIG. 6  using the tool. 
         FIG. 9  shows a single solid object that can be split by its faces using the Split Body combine tool. 
         FIG. 10  shows the two solids created by splitting the solid in  FIG. 9  using the Split Body combine tool. 
         FIG. 11  describes an overview of the back-end logic for implementation of the combine tool. 
         FIG. 12  describes detailed back-end logic for implementation of the merge function of the combine tool. 
         FIG. 13  describes detailed back-end logic for implementation of the split function of the combine tool when used on a solid target. 
         FIG. 14  describes detailed back-end logic for implementation of the split function of the combine tool when used on a surface target. 
         FIG. 15  describes detailed back-end logic for implementation of the Split Body combine tool. 
         FIG. 16  describes the logic used by other systems to implement the combine functions. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the invention allow any solid object or surface to be combined or split by another solid or surface in a simple and intuitive manner. Solids and surfaces can be modified regardless if they were originally created in the embodiment&#39;s CAD system or if they were imported from another CAD system. 
     In one embodiment, the invention is a set of two tools within a three-dimensional modeling system, namely a Combine tool and a Split Body tool. The Combine tool can be used to combine or split solids or surfaces by any other solids and surfaces. The Split Body tool can be used to split a solid by one of its own faces. These modifications can be made without the need to completely rebuild the object or deal with various constraints of the modeled object. The term “objects” refers to any geometric solid or surface represented within the CAD system. Solid objects can be composed of a set of faces that enclose a volume. 
     When combining objects within the CAD system, the Combine tool takes user-selected solids or surfaces as inputs and delivers a single, combined solid or surface as an output. When splitting objects, the Combine tool takes a first user-selected object as the “target” object and cuts it with a second user-selected object as the “cutter” object. The combine tool delivers multiple objects as outputs. The combine tool also lets a user easily merge objects by inferring a merge operation if the user selected multiple objects, either by selecting a group of objects all at once, or by selecting a first object and then additional objects individually. 
     When splitting a solid with one of its own faces, the Split Body tool takes a first user-selected face as an input, infers the target solid from the selected face, and cuts the target solid with a cutting surface based on the selected face. The Split Body tool delivers multiple objects as outputs. When splitting a face by another face, the Split Face tool takes a user-selected target face and cutter face and delivers multiple faces as an output. The objects output by all these tools can be edited like any other solid or surface geometry. 
     The simple and intuitive method of combining and splitting objects is possible because the modeling system used with the combine tools does not maintain a level of history information on top of the geometry information and can therefore show geometry changes immediately. The moment a user selects the objects to be combined or split, the program regenerates the object. The simplicity of this method is shown by  FIG. 4 , which shows a first and second solid object that can be merged together, or where the first solid object can be cut by the second. The user can use the combine tool  412 , along with the select target sub tool  415  to merge the objects, or alternatively, the select cutter subtool  416  to cut the first object. These processes are all done using the single combine tool, along with the proper selections of objects using the sub-tools, or an alternative method (e.g., keyboard combined with mouse clicks). 
       FIG. 1  shows a computer system capable of implementing embodiments of the invention. Further details of the overall system are given in related application entitled “Method for Modifying Any Modeled Surface As A Lofted Surface,” filed Nov. 9, 2007, and with Ser. No. 11/937,926, which is herein incorporated by reference in its entirety. 
     The system includes a computer  181  containing memory and a processor running a standard operating system  182 . Running within the operating system  182  with a graphical user interface, is a user-level application  183 , such as a modeling system that includes combine tools in accordance with embodiments of the invention. The operating system and the modeling system are displayed on the monitor  180 . 
     Computer  181  can also have a network interface card and be connected to other computers, servers, and/or storage service. To interface with modeling system  183  a mouse and keyboard (not shown) or other input device can be used. In detail, one example of a computer system capable of running the combine tools is a computer system running Microsoft Windows XP with Service Pack 2 or Windows Vista operating systems. The computer system has a video card, such as those provided by Radeon, NVIDIA, or AMD, with Full DirectX 9c hardware support and 64 MB or more of graphics memory, Pixel shader 2.0 hardware support, 32 bits/pixel, and 1024×768 minimum resolution. The computer system can have a Pentium 4 2.0 GHz or Athlon 2000+ or faster processor, a 32-bit (x86) or 64-bit (x64) processor. The computer system can have between 512 MB and 4 GB of RAM. The system can also have 2 GB of available disk space, a CD/DVD drive, Microsoft Internet Explorer 5.5 or higher, and a 2 button+wheel mouse. 
       FIG. 2  is an overall architecture diagram of the structure of the combine tools within the modeling system in accordance with embodiments of the invention. 
     The modeling system  183  is made up of a user interface layer  202 , a modeling layer  204 , and a foundation layer  206 . The user interface layer interacts with the user, the modeling layer embodies logic associated with the combine tools and other tools of the modeling system, and the foundation layer provides geometry modeling and other file services. 
     The user interface layer  202  is made of an application window  208 , which contains the combine tool widgets, and other interface components common to modeling tools that allow a user to interact with the modeling system. It also contains the standard window manipulation features. 
     User interaction component  210  includes the combine tool widgets, and other standard tools for selecting objects, viewing objects in different ways, or obtaining information about objects. Essentially, the user interface layer provides a way for the user to work with the geometry model and the geometry engine, the output of which is displayed on the monitor  180  using a 3D graphics engine  212 . 3D graphics engine  212  renders geometry models to the application window  208  for interaction and manipulation by the user. This functionality can be provided by DirectX. 
     The modeling layer  204  provides the logic and algorithms that underlie the commands and tools in the user interface. It communicates with the geometry engine  220  based on user actions to display the geometry created by the user actions. The geometry engine is a known component capable of performing calculations on objects. One geometry engine compatible with embodiments of the invention is the ACIS geometry engine from Spatial Corporation, although other geometry engines with similar capabilities may also be used. Further details of the ACIS geometry engine are provided in Corney, J and Lim, T, 3D Modeling with ACIS, Stirling, UK, which is hereby incorporated by reference in its entirety. 
     The modeling layer is made up of part modeling component  214 , assembly modeling component  216 , and drawing modeling component  218 . The part modeling component  214  manages CAD objects and houses creation and manipulation algorithms in the area of 3D solids and 2D sections and sketches. 
     The assembly modeling component  216  manages CAD objects and algorithms for assembly component instantiation and placement, mating conditions, and the ability to do part modeling in the context of an assembly. Assemblies are user-created collections of parts. The assembly modeling component is responsible for combining and splitting objects in accordance with the operation of the combine tools. These objects may be contained within a single part, but may also be contained within or across assemblies. 
     The drawing modeling component  218  manages CAD objects and algorithms for creating multi-sheet drawings, drawing views, and drawing annotations. Drawings are 2D representations of 3D objects meant to be printed on paper in standard engineering sizes and formats. 
     The foundation layer  206  provides a software platform used to support higher-level layers of the application. The geometry engine  220  supports the creation and modification of geometry and topology, and provides algorithms for solid modeling and geometric solving. The object database component  222  manages the temporary, in-memory representation of CAD objects, providing a unified framework for inter-object references, undo actions, and associative updates. The file storage component  224  provides persistent storage of CAD objects within document files  226 , along with inter-document relationships, such as assembly-component relationships or drawing-format relationships. 
       FIG. 3  shows the hierarchy of object modeling components in accordance with the design of the combine tools. 
     In the CAD program, multiple solids and surfaces are modeled in the assembly modeling component  216  which has the necessary algorithms for management and manipulation of multiple, intersecting objects. 
     Within the assembly modeling component is the solid and surface modeling component  304  which is responsible for the management and manipulation of multiple solid objects and surfaces. Unlike parametric, feature-based CAD systems, which make up the majority of the current systems, embodiments of the invention works directly in real time on the solid and surface geometry, as opposed to forcing the user to set up each individual object in a particular feature and then requiring a calculation at the end of the operation. Finally, the combine component  306  is a subset of the solid and surface modeling component and contains the algorithms, including embodiments of the invention, for combining and splitting multiple solids and surfaces. 
     Operation of the combine tools by a user will now be described with respect to  FIGS. 4-11 .  FIGS. 4 and 5  show two solids being merged,  FIGS. 6-8  show a solid being split by a surface, and  FIGS. 9-11  show a solid being split by one of its own faces. 
       FIG. 4  shows two solids  410  and  411  that can be merged by the combine tools in accordance with embodiments of the invention. 
     The combine tools can be accessed through many methods, including the use of toolbar buttons  412  and  413  within the application window  414  of the overall CAD system. The combine sub-tools  415 - 417  are also shown. The Select Target sub-tool  415  is used to select the object(s) to be merged or the target object to be split. The Select Cutter sub-tool  416  is used to select the object that will cut the target object. The Select Regions sub-tool  417  is used to select any regions that result from a split for optional deletion. Alternatively, keyboard combinations with the mouse or the keyboard alone could be used instead of sub-tools  415 - 417 . 
       FIG. 5  shows the single solid  510  created when the two solids  410  and  411  are selected, then merged using the combine tool  412 . 
       FIG. 6  shows a solid  610  that can be split by the intersecting surface  611 . In  FIG. 6 , the user is selecting the solid target using the combine tool&#39;s Select Target sub-tool  415 . 
       FIG. 7  shows the user selecting the surface  611  to be used as the cutter for the target solid  610 . In  FIG. 7 , the user is selecting the cutter surface using the combine tool&#39;s Select Cutter sub-tool  416 . 
       FIG. 8  shows the two solids  810  and  811  that result from splitting the target solid with the cutter surface using the combine tool  412 . Solid  810  is highlighted in red by the combine tool&#39;s Select Regions sub-tool  417  for optional deletion. 
       FIG. 9  shows a single solid  910  that can be split by its faces using the Split Body combine tool  413 . 
     Combine tool  413 , called the Split Body tool, provides a shorter user interaction than combine tool  412 . It eliminates the selection of the target solid by inferring the target solid by the face selected as the cutter. In  FIG. 9 , the user is selecting a face  911  to split with using the combine tool&#39;s Select Cutter sub-tool  416 . 
       FIG. 10  shows the two solids  1010  and  1011  that result from splitting the target solid with the cutter face using the combine tool  413 . 
     Solid  1011  is highlighted in red by the combine tool&#39;s Select Regions sub-tool  417  for optional deletion. 
     Regardless of whether the combine tool is being used to merge or split solids and surfaces with a newly created object, an existing object, or an object from another CAD system; the modeling system uses the foundation layer&#39;s geometry engine  220  to convert the imported data from the originating application into a geometry-only format. 
     This comprises stripping all history and feature data, so that the source of the geometry data has no influence. The geometry engine also performs all conversion, checking, and geometry calculation functions. On import, the CAD system retrieves only the final definition of the geometry, and places it into the object database  222 . The CAD system creates a new, persistent file with the file storage component  224 . If the geometry was imported from another system, the history and parameters used to create the final geometry in that software are ignored. 
     Importing and translation of outside geometry can be performed by the geometry engine through its built in translators. After importing outside geometry, the geometry-only data is provided to higher-level layers of the system. Although history information and other data from parametric systems has been removed, the geometry still retains information about primitives and relations between objects in the imported geometry. 
     The logic of the combine tools will now be described with respect to  FIGS. 11-15 .  FIG. 11  shows an overview of the logic that implements the merging and splitting of intersecting solids and surfaces.  FIGS. 12-14  show the detailed logic that implements the merging and splitting of intersecting solids and surfaces.  FIG. 15  shows the logic for splitting a solid by its own faces. 
       FIG. 11  shows how a user can merge or split objects using only a few mouse clicks and the single Combine tool. If multiple objects are selected, the system can infer that a merge operation is to be performed. Otherwise a user can still perform a merge by using the select target tool and selecting an additional object. When cutting an object, a user selects a first solid or surface, then selects a second solid or surface to cut it with. Both these operations can be done with the same tool, instead of having multiple tools and multiple workflows. Further, no history information is maintained about the change, and a merged object can be easily and immediately be merged with other objects, or split in various ways. 
     At step  1110 , the users may have selected an object or objects that they want to be the target of a split or merge operation. At step  1111 , the user activates the combine tool, and the tool activates the Select Target sub-tool. 
     At step  1112 , the combine tool checks to see if any objects are selected. If objects are selected, then the minimum set of requirements for the first sub-tool is met, and the tool checks that they are valid objects for a merge or split operation. If there are no objects selected or if the selected objects are not valid, the tool waits for the user to click another object, as shown in step  1113 . 
     At step  1114 , the combine tool checks to see if multiple valid objects are selected. If they are, since the tool cannot differentiate between the user intention on multiple selection (that is, which object is intended to cut which other object), it assumes that the user wants to merge, and the tool sets the selected objects as the Target set (step  1116 ) and merges them at steps  1115  and  1117 . The logic comprising step  1117  is further detailed in  FIG. 12 . 
     If, at step  1114 , the combine tool determined that there is only one valid object, then it sets that object as the Target, highlights the target, activates the Select Cutter sub-tool, and waits for the next user action. If the user Ctrl+clicks another object (step  1119 ), the tool adds that object to the Target set and merges the set in steps  1120  and  1117 . If the user clicks another object (step  1118 ), the tool sets the clicked object to be the Cutter at step  1121 . 
     At step  1123 , the tool checks to see if the user activated the Imprint edges only option. If this option is selected, the tool imprints the edges of the Cutter onto the Target (step  1122 ), but does not split the Target. If this option is not selected, the tool determines whether the Target is a surface or solid at step  1124 . If the Target is a surface, the tool splits the Target surface with the Cutter at step  1125 . If the Target is a solid, the tool splits the Target solid with the Cutter at step  1126 . The logic comprising steps  1125  and  1126  is further detailed in  FIGS. 13 and 14 . 
       FIG. 12  shows the detailed logic that merges intersecting solids and surfaces. At step  1210 , the combine tool checks that the Target set matches one of the cases shown in steps  1212 - 1218 . If the Target set does not match one of those cases, the set is discarded (step  1211 ) and the tool returns to step  1112 , shown in  FIG. 11 . 
     At steps  1212 - 1218 , the combine tool determines which case the Target set represents. At step  1212 , the combine tool determines if the target set is a set of surfaces enclosing a volume. At step  1213 , the combine tool determines if the target set is two surfaces that share an edge. At step  1214 , the combine tool determines if the target set is two overlapping surfaces. At step  1215 , the combine tool determines if the target set is two solids. At step  1216 , the combine tool determines if the target set is more than two solids. At step  1217 , the combine tool determines if the target set is a solid object capped by a plane. At step  1218 , the combine tool determines if the target set if a solid with a surface protrusion. 
     If the target set is determined to meet one of the cases in steps  1213 - 1216 , then at step  1219 , the Target set is analyzed to determine the order in which the objects were selected. If the order is known (that is, if the user clicked and Ctrl+clicked to form the Target set), then the attributes of the first object are saved to apply to the merged object (step  1220 ). If the order is unknown (that is, if the user box-selected to create the Target set), then at step  1221  the attributes (name, color, layer membership) of the object with the most faces is used. These attributes are used to create the merged object as described below with respect to steps  1222 - 1228 . At the end of the merge, the merged object is highlighted, and the combine tool returns to step  1116 , as shown in  FIG. 11 . 
     At step  1222 , a set of surfaces that completely encloses a void is merged to form a solid defined by the enclosing surfaces. To do this, the tool calls the geometry engine&#39;s ( 220 ) split function, passing it all the surfaces in the set without checking the validity of the resultant body. The split function splits all the surfaces in the set by each other and returns a temporarily invalid body. Next, the tool asks the geometry engine to find all manifold (i.e., closed) pieces, or those that have a defined inside and outside. Next, the tools asks the geometry engine to find and remove all laminar (i.e., open) pieces. Next, the tool asks the geometry engine to find and remove all faces common to closed bodies, which returns one closed body with extra edges. Finally, the tool calls the geometry engine&#39;s merge function, checking the validity of the resultant body to remove redundant edges. The geometry engine returns one closed solid body. The original surfaces are then deleted unless the Keep Cutter option is selected. 
     At step  1223 , two surfaces that share edges are merged into a single surface defined by the outer edges of both surfaces. To do this, the tool calls the geometry engine&#39;s stitch function along common edges to make one valid surface. 
     At step  1224 , two overlapping planar surfaces are merged into a single surface defined by the outer edges of both surfaces. To do this, the tool calls the geometry engine&#39;s union function to discard inner edges and merge the outside edges into one loop. 
     At step  1225 , two intersecting solids are merged into a single solid. To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter. Then it asks the geometry engine to find and remove all faces common to closed bodies. The geometry engine returns one closed body with extra edges. Next the tool calls the geometry engine&#39;s merge function with the body checking parameter to remove edges. The geometry engine returns one closed solid body. 
     At step  1226 , three or more solids are merged into a single solid. To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter. Then it asks the geometry engine to find and remove all faces common to closed bodies. The geometry engine returns one closed body with extra edges. Next the tool calls the geometry engine&#39;s merge function with the body checking parameter to remove edges. The geometry engine returns one closed solid body. 
     At step  1227 , a surface capped by a plane is merged into a single surface that includes the surface defined by the intersection of the plane and the edges of the surface. To do this, the tool asks the geometry engine to substitute a very large planar surface for the plane object. Then it asks it to find the partial intersection (the edge of the surface in the plane makes planar curves) and find the open curves. Next, the tool asks the geometry engine to connect the ends of the open curves with lines in the plane and create edges with the lines. Next, the tool asks the geometry engine to make faces out of the closed result of the curves and the lines in the plane. Next, the tool asks the geometry engine to remove the rest of the large surface. Finally, the tool calls the geometry engine&#39;s merge function. 
     At step  1228 , a solid with an enclosed surface is merged into a single solid. To do this, the tool calls the geometry engine&#39;s ( 220 ) split function, passing it all the surfaces in the set without checking the validity of the resultant body. The split function splits all the surfaces in the set by each other and returns a temporarily invalid body. Next, the tool asks the geometry engine to find all manifold (i.e., closed) pieces, or those that have a defined inside and outside. Next, the tools asks the geometry engine to find and remove all laminar (i.e., open) pieces. Next, the tool asks the geometry engine to find and remove all faces common to closed bodies, which returns one closed body with extra edges. Finally, the tool calls the geometry engine&#39;s merge function, checking the validity of the resultant body to remove redundant edges The geometry engine returns one closed solid body. The original surfaces are then deleted unless the Keep Cutter option is selected. 
       FIG. 13  shows the detailed logic for splitting a solid Target with an intersecting Cutter. 
     At step  1310 , the combine tool checks that the Cutter matches one of the cases shown in steps  1312 - 1315 . Step  1312  is the case of a plane that intersects the solid. Step  1313  is the case of a cutter that is a solid. Step  1314  is the case of a cutter that is a surface that encloses a volume of the target solid. Step  1315  is the case of a cutter that is an intersecting surface. If the Target set does not match one of those cases, the set is discarded (step  1311 ) and the tool returns to step  1116 , shown in  FIG. 11 . 
     Once the Target is split in steps  1316 - 1319 , and the Cutter is deleted or kept in steps  1320 - 1321 , then the Select Regions sub-tool is activated, and the user can optionally delete Target regions in steps  1323  and  1327 . 
     At step  1316 , a Target solid is split by a plane Cutter. To do this, the tool asks the geometry engine to substitute a very large planar surface for the plane object. Then it calls the geometry&#39;s engines split function without the body checking parameter. 
     At step  1317 , a Target solid is split by a solid Cutter. To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter. Then it asks the geometry engine to find all manifold (i.e., closed) pieces in the Target. Finally, the tool asks the geometry engine to delete the Cutter. 
     At step  1318 , material is removed from a Target solid by a Cutter which is a surface that encloses a volume of the Target solid. To do this, the tool calls the geometry engine&#39;s ( 220 ) split function, passing it all the surfaces in the set without the body checking parameter. The split function splits all the surfaces in the set by each other and returns a temporary, invalid body. Next, the tool asks the geometry engine to find all manifold (i.e., closed) pieces, or those that have a defined inside and outside. Next, the tools asks the geometry engine to find and remove all laminar (i.e., open) pieces. Next, the tool asks the geometry engine to find all sequentially neighboring faces of the cutter surface and mark only those as common for removal. This step is crucial, as it ensures that the result of the operation has enough faces to be a closed, solid body at the end. Next, the tool asks the geometry engine to find and remove all faces common to closed bodies and return one closed body with extra edges. Finally, the tool calls the geometry engine&#39;s merge function with the body checking parameter to remove edges. The geometry engine returns one closed solid body. 
     At step  1319 , a Target solid is split by an intersecting surface Cutter. To do this, the tool calls the geometry engine&#39;s ( 220 ) split function, this time making sure that the resultant bodies are valid. 
     At step  1320 , the combine tool checks to see if the user selected the Keep Cutter option. If this option is selected, then on completion of the tool, the Cutter is not deleted. If this option is not selected, the tool deletes the Cutter object (step  1321 ), then waits for a user action. 
     If the user Ctrl+clicks another object (step  1324 ), the tool returns to step  1310 . This workflow allows the user to quickly split the same Target solid with multiple Cutters. If the user clicks a region of the Target created by the split (step  1323 ), that region is deleted. The user can delete multiple Target regions. If they delete all the regions, the tool jumps to step  1112 , shown in  FIG. 11 . On completion of the operation (step  1322 ), the tool checks to see if the user selected the Merge When Done option (step  1325 ). 
     At step  1325 , if the user selected the Merge When Done option, then for each component, the tool merges all the Target regions that touch each other. If the user did not select the option, then the tool removes the region highlighting at  1326  and returns to step  1112 , shown in  FIG. 11 . 
       FIG. 14  shows the detailed logic for splitting a surface Target with an intersecting Cutter. 
     At step  1410 , the combine tool checks that the Cutter matches one of the cases shown in steps  1412 - 1415 . If the Target set does not match one of those cases, the set is discarded (step  1411 ) and the tool returns to step  1116 , shown in  FIG. 11 . At steps  1412 - 1415 , the combine tool determines which case the Cutter represents. Once the Target is split in steps  1416 - 1421 , and the Cutter is deleted or kept in steps  1422 - 1423 , then the Select Regions sub-tool is activated, and the user can optionally delete Target regions in steps  1425  and  1429 . 
     At step  1416 , two surface Cutters that partially intersect the Target surface are merged to form one surface Cutter that fully intersects the Target surface. This is not known to exist in any other CAD tools, since the tools are fundamentally limited to cases of well-defined intersections. At step  1417 , the Target surface is split by the merged Cutter surface and the Cutter is deleted (step  1422 ). To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter, passing it all the surfaces. Then the tool asks the geometry engine to find all the manifold groups, mark those that came from the target and those that came from the cutters. Then the tool asks the geometry engine to remove all the groups that came from cutters, leaving just the pieces that came from the target. The operation is made possible by the interim result being allowed to be invalid until a full intersection (from multiple contributors) with the target is well-defined. 
     At step  1418 , a Target surface is split by a planar Cutter. To do this, the tool asks the geometry engine to substitute a very large planar surface for the plane object. Then it calls the geometry engine&#39;s split function. 
     At step  1419 , a Target surface is split by a solid Cutter. To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter and prompts the user for a region for deletion. Finally, the tool asks the geometry engine to delete the Cutter. 
     At step  1420 , a Target surface is split by an intersecting surface Cutter. At step  1421 , the surface Cutter is split by the Target surface. To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter and passes it both surfaces. 
     At step  1423 , the combine tool checks to see if the user activated the Keep cutter option. If this option is selected, the tool waits for a user action. If this option is not selected, the tool deletes the Cutter object (step  1422 ), then waits for a user action. 
     If the user Ctrl+clicks another object at this point (step  1426 ), the tool returns to step  1410 . This workflow allows the user to quickly split the same Target surface with multiple Cutters. If the user clicks a region of the Target created by the split (step  1425 ), that region is deleted. The user can delete multiple Target regions. If they delete all the regions, the tool jumps to step  1112 , shown in  FIG. 11 . If the user clicks outside a Target region (step  1424 ), the tool checks to see if the user activated the Merge when done option (step  1427 ). 
     At step  1427 , if the user selected the Merge when done option, then for each component, the tool merges all the Target regions with shared edges. If the user did not select the option, then the tool removes the region highlighting and returns to step  1112 , shown in  FIG. 11 . 
       FIG. 15  shows the detailed logic for splitting a solid Target with its own face(s). 
     At steps  1510  and  1511 , the user may have selected either a set of faces or an edge loop. (An edge loop is a set of edges that completely encompasses a set of solid faces that define a region.) At step  1512 , the user activates the Split Body combine tool. 
     At step  1513 , the tool checks to see if the selection set is valid. Valid sets are one or more faces, or an edge loop. If there are no objects selected or if the selected objects are not valid, the tool waits for the user to click an object, as shown in step  1514 . If the selection set is valid, the tool sets the body that owns the selected face(s) or edge loop as the Target (step  1516 ), and sets the selected face(s) or the face that owns the edge loop as the Cutter (step  1517 ). For each face, it is known which body is the parent, as a property of the face. A query to the geometry engine can return the parent body of a face. Multiple faces are merged along their common edges to form a single cutter in step  1518 . 
     At step  1519 , the tool checks to see if the user activated the Extend faces option. If this option is not selected, the tool fills any internal edge loops that define faces within the selected faces (step  1520 ), and then splits the body by extending all the faces contained within the Cutter (step  1524 ). To do this, the tool calls the geometry engine&#39;s split function without the body checking parameter. 
     If the Extend faces option is selected, then at step  1521 , the tool checks to see if the faces are touching using the geometry engine. If they do not touch, then the tool splits the body by extending all the faces contained within the Cutter (step  1524 ). If they do touch, then the tool merges the touching faces into the Cutter (step  1522 ) and splits the body by extending only the outside edges of the Cutter (step  1523 ). Once the body is split in step  1523  or  1524 , the tool returns to step  1425 , shown in  FIG. 14 . 
     Embodiments of the invention can also be applied to various other types of objects within the CAD system, including split curves. Further, the methods can be applied to patterns of objects, where changes to a single object can be applied to a group of objects in a similar manner. This can be done by repetitively applying the changes to one object in a translated manner to other objects within the pattern group. 
     According to one embodiment of the invention, we have provided a tool within a three-dimensional modeling software application that, given any intersecting surfaces or solids (or a single solid that can be split by its faces) can merge or split those solids and surfaces. 
     While the above description contains many specificities, these should not be construed as limitations on the scope of any embodiment, but as exemplifications of the presently preferred embodiments thereof. Many other ramifications and variations are possible within the teachings of the various embodiments.