Predictive modelling

The computer-based method in CAD programs addresses the challenge of replicating geometric entities by predicting their locations and orientations for copying, thereby enhancing efficiency and productivity in design processes.

JP7667662B2Active Publication Date: 2025-04-23DASSAULT SYSTEMES SOLIDWORKS CORP
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2021015949
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-02-05
Filing Date
2021-02-03
Publication Date
2025-04-23
Estimated Expiration
2041-02-03

AI Technical Summary

Technical Problem

In computer-aided design (CAD) programs, users face the tedious and time-consuming task of replicating geometric entities in multiple regions of a design, which can lead to user error and decreased productivity.

Method used

A computer-based method that allows users to create or select geometric entities, predicts their locations and orientations for copying, and displays visual representations of these copies within the design, enabling users to efficiently replicate geometry in similar areas.

Benefits of technology

This method significantly reduces the repetitiveness of replicating geometry, captures design intent by considering both quantitative and qualitative factors, and increases user productivity by automating the process of creating multiple versions of the same geometric feature.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007667662000024
    Figure 0007667662000024
  • Figure 0007667662000025
    Figure 0007667662000025
  • Figure 0007667662000026
    Figure 0007667662000026
Patent Text Reader

Abstract

To provide predictive modeling.SOLUTION: A computer-based method includes enabling a user to create or select a geometric entity in a design in a computer-aided design program, predicting a location and orientation in the design for a copy of the geometric entity, and displaying, as a suggestion to the user, a visual representation of the copy of the geometric entity in the predicted location and orientation in the design.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 970,317, entitled PREDICTION MODELING, filed February 5, 2020. The disclosure of the prior application is incorporated herein by reference in its entirety.

[0002] FIELD OF THEINVENTION This application relates to predictive modeling, and more particularly, to predictive modeling in computer-aided design (CAD) programs. [Background technology]

[0003] background Computer-aided design (CAD) refers to the use of a computer (or workstation) to assist in the creation, modification, analysis, or optimization of a design. CAD software, such as SOLIDWORKS by Dassault Systemes (DS) and CATIA by DS, can be used to create sketches and / or representations of solid geometry that may be derived from a two-dimensional (2D) or three-dimensional (3D) sketch of the product being designed.

[0004] Sketch and solid geometry may have design requirements where the created geometry needs to be replicated in other regions of the component. These other regions often have similar surrounding geometry, but are not arranged so that creating a pattern or mirroring of the geometry will get the desired results, requiring the user to manually create similar geometry in each region. For even moderately complex models, this can be a very tedious and time-consuming task as it may require the creation of many sketches and downstream features. Several techniques exist to reduce the repetitive nature of these tasks. For example, creating a user-defined library feature consisting of many sketches and their downstream features allows for the replication of geometry in these other regions, but requires the user to create and place the library feature in each region for reuse.

[0005] Improvements in this regard are needed. Summary of the Invention [Means for solving the problem]

[0006] Summary of the Invention In one aspect, a computer-based method includes enabling a user to create or select a geometric entity in a design in a computer-aided design program, predicting a location and orientation within the design for a copy of the geometric entity, and displaying a visual representation of the copy of the geometric entity at the predicted location and orientation within the design as a suggestion to the user.

[0007] In another aspect, a computer includes a computer display, a computer processor, and a computer-based memory coupled to the computer processor. The computer-based memory stores computer readable instructions that, when executed by the computer processor, cause the computer processor to perform a process including: enabling a user to create or select a geometric entity in a design in a computer-aided design program, predicting a location and orientation within the design for a copy of the geometric entity, and displaying, on the computer display, a visual representation of the copy of the geometric entity at the predicted location and orientation within the design as a suggestion to the user.

[0008] In yet another aspect, a non-transitory computer readable medium stores instructions executable by a processor to perform the above steps.

[0009] In some implementations, one or more of the following advantages are present.

[0010] For example, the systems and techniques disclosed herein help reduce the repetitiveness of replicating geometry in other similar areas of a design. This is a common task required in any computer-based design software to achieve the design intent of a particular component. The systems and techniques disclosed herein can help make the task of replicating geometry in similar areas efficient. It also seeks to capture the design intent by considering not only quantitative factors but also qualitative factors. Thus, with these systems and techniques, users of design software can increase their efficiency and increase their productivity many times over existing solutions. These systems and techniques tend to be very easy to use and intuitive. Also, the internal selection of attributes helps capture the design intent of the user in an easy-to-use user interface. It also reduces the tedium associated with common but necessary tasks performed during the design process. In addition, repetitive tasks performed by humans can lead to mistakes. The systems and techniques disclosed herein can help reduce these types of mistakes.

[0011] Other features and advantages will be apparent from the description and drawings, and from the claims. [Brief description of the drawings]

[0012] BRIEF DESCRIPTION OF THE DRAWINGS [Figure 1] FIG. 1 is a schematic diagram of a computer configured to perform predictive modeling. [Diagram 2] 1 is a flow chart depicting a predictive modeling process. [Figure 3A] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3B] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3C]3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3D] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3E] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3F] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 3G] 3 shows a series of partial screenshots illustrating an example of predictive modeling according to the flowchart of FIG. 2. [Figure 4A] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4B] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4C] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4D] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4E] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4F] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4G] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4H] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4I] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 4J] 13 shows a series of partial screenshots illustrating another example of predictive modeling. [Figure 5A]13 shows a series of partial screenshots illustrating yet another example of predictive modeling. [Figure 5B] 13 shows a series of partial screenshots illustrating yet another example of predictive modeling. [Figure 5C] 13 shows a series of partial screenshots illustrating yet another example of predictive modeling. [Figure 5D] 13 shows a series of partial screenshots illustrating yet another example of predictive modeling. [Figure 5E] 13 shows a series of partial screenshots illustrating yet another example of predictive modeling. [Figure 6A] 1 is a flowchart illustrating an example embodiment of a computer-implemented process for calculating a forecast / proposal. [Figure 6B] 1 is a flowchart illustrating an example embodiment of a computer-implemented process for calculating a forecast / proposal. [Figure 6C] 1 is a flowchart illustrating an example embodiment of a computer-implemented process for calculating a forecast / proposal. [Figure 7] FIG. 2 is a schematic diagram of an exemplary hierarchical relationship between different topological elements in a boundary representation of a modeling object. [Figure 8] 1 is an image relating to a particular example of predictive modeling. [Figure 9] 1 is an image relating to a particular example of predictive modeling. [Figure 10] 1 is an image relating to a particular example of predictive modeling. [Figure 11] 1 is an image relating to a particular example of predictive modeling. [Figure 12] 1 is an image relating to a particular example of predictive modeling.

[0013] Like reference numbers refer to like elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0014] Detailed Description A CAD user may need to create multiple versions of the same geometric feature in a design. Sometimes, a CAD user may create an original version of a geometric feature and then desire to create other versions of the same geometric feature in different areas of the design that have the same or similar geometric characteristics as the area of ​​the original version. For example, a CAD user may create a design that includes a solid rectangular body with a hole near one corner of the solid rectangular body that extends through the body. The CAD user may then plan to add three more holes extending through the body, one at each of the remaining corners of the rectangular body (each hole is dimensionally identical to the original hole and oriented with respect to each corner in the same manner as the original hole). Without the systems and techniques disclosed herein, the CAD user may need to create and place each hole individually, which is certainly a tedious and time-consuming process and introduces the possibility of user error in the creation and / or placement of the other three holes.

[0015] In one general embodiment, the systems and techniques disclosed herein facilitate creating multiple versions of the same geometric feature (e.g., a hole) in different areas of a design that have the same or similar geometries (e.g., at multiple corners of a solid rectangular body). More specifically, in one general embodiment, when a CAD user creates (or selects) a particular geometric feature in a design (e.g., a hole in a body), the system automatically predicts where else in the design the user might want to place the same geometric feature and how the user might want to orient that geometric feature. The system presents this information to the CAD user as suggestions, and the CAD user can accept or reject some or all of the suggestions.

[0016] In one general embodiment, the prediction is made by comparing the geometric characteristics of the region in which the original geometric feature was created with the geometric characteristics of other regions of the design.

[0017] The system can present its predictions / suggestions to the user on the screen as part of the design itself (typically in a manner that visually distinguishes the proposed predictions from other geometric entities of the design). Typically, the system generates predictions such that each prediction is identical to the original user-created geometric entity apart from its location in the design, and perhaps its orientation.

[0018] Every prediction that the CAD user accepts automatically becomes a geometric feature in the design.

[0019] In one general embodiment, these systems and techniques help automate, speed up, and simplify the creation of designs, including highly complex designs, in CAD systems. Using these systems and techniques, CAD users can increase efficiency, reduce the occurrence of errors, and increase productivity many times over other systems. The systems and techniques are very easy to use. They can also help capture the design intent of the user, often with an easy-to-use user interface. The systems and techniques also reduce the tedium associated with a common task in the design process, i.e., creating multiple versions of the same geometric feature in different but similar areas of the design. Because the predictions are automatically generated to be typically dimensionally identical to the original user-created geometric entities, the systems and techniques disclosed herein can eliminate or at least reduce the possibility of user error in creating and placing multiple versions of the same geometric entities in different, geometrically similar locations throughout the design.

[0020] FIG. 1 is a schematic diagram of an example of a computer (or system) 100 that can, alone or in combination with other computers or computer components (e.g., a server, etc.), perform and / or facilitate the computer-based functionality disclosed herein.

[0021] In one general embodiment, computer 100 is configured to provide functionality associated with computer-aided design (CAD) software. More specifically, computer 100 is configured to provide functionality that allows a CAD user to quickly and easily replicate certain geometric entities in a design to different locations in the design that tend to make sense for the design. At a high level, the computer provides this functionality by predicting, for each geometric entity that the CAD user creates (or selects), whether there are other locations in the design where the user is likely to want to add a copy of this geometric entity, and how such copies may be oriented in the design. Computer 100 generally presents the predictions as a dynamic preview in the design, and provides the CAD user with various options to quickly and easily accept, modify, and / or reject any or all of the predictions made by the computer.

[0022] In one general implementation, computer 100 makes the predictions by computing (identifying) a local coordinate system and descriptors associated with all or at least some of the shared vertices in the modeling objects of the design. Computer 100 uses the descriptors to identify shared vertices that have similar surrounding characteristics, and uses the local coordinate system to place replicas (i.e., copies) of the geometric entities in intuitively meaningful locations and orientations.

[0023] In one general embodiment, the computer 100 and the computer functionality disclosed herein help users of CAD software to increase efficiency and increase productivity many-fold over existing techniques. Also, in one general embodiment, the functionality is easy to use, helps capture the user's design intent, and is available with an easy-to-use user interface. The functionality also generally reduces the tedium associated with a common but necessary task performed during the design process, such as creating multiple copies of the same (or similar) geometric features in a design.

[0024] The computer 100 has a system bus 112 (i.e., a set of hardware wiring used to transfer data between components of the computer 100). The system bus 112 is essentially a shared conduit connecting different elements of the computer (e.g., the processor 102, the storage device 104, the memory 106, the input / output ports 110, the network interface ports 103, etc.), allowing information to be transferred between the connected elements. Attached to the system bus 112 are one or more I / O ports / devices 110 including or connecting various input and / or output devices (e.g., a keyboard, a mouse, a display (touch-sensitive or otherwise), a printer, speakers, a microphone, etc.) to the computer 100. The one or more network interfaces 103 allow the computer 100 to connect to and interact with various other devices (e.g., other computers, servers, memory storage devices, etc.) coupled to the computer 100 over a network. The memory 106 is essentially a computer-readable medium that stores computer-readable instructions. The memory may include virtually any type of computer-based memory, including volatile and / or non-volatile computer memory. In one general implementation, the memory 106 stores computer software that includes computer readable instructions that, when executed by the processor 102, cause the processor 102 to perform processes explicitly disclosed herein, as well as other processes resulting from the computer 100 and supporting various other functionalities disclosed herein. In the illustrated implementation, the software includes computer-aided design (CAD) software 111 with a predictive modeling (PM) module 113 that includes instructions that enable the processor 102 and the computer 100 to perform and / or facilitate / produce various functionalities disclosed herein. The memory 106 also stores an operating system 120 that supports the various functionalities disclosed herein.The processor 102 is attached to a system bus 112 and provides computer-based processing functionality. The components of the illustrated computer 100 may be localized (e.g., in an apartment building or at a single workstation) or distributed (e.g., across multiple locations over a network).

[0025] Figure 2 is a flow chart depicting an exemplary user interaction with computer 100 of Figure 1. Figures 3A-3G are partial screenshots of a display (i.e., one of I / O devices 110 of computer 100 of Figure 1) showing various stages of a design (modeling object) being created / modified in a graphics area of ​​a CAD software program of system 100. Unless otherwise noted, the words "design" and the phrases "modeling object" are used generally interchangeably herein. Each screenshot of Figures 3A-3G corresponds to a corresponding step of the flow chart of Figure 2.

[0026] First, a few words on terminology are authorized. Boundary representation or B-Rep is used by most modern CAD programs to represent modeling objects. In this representation, a modeling object is represented by different topological elements: solids, shells, faces, shared edge chains, shared edges, edges, shared vertices, and hierarchical relationships between vertices. FIG. 7 is a schematic diagram of an exemplary hierarchical relationship between different topological elements in a boundary representation of a modeling object. In the illustrated embodiment, a solid is represented by its boundary shell, a shell is represented by a set of connected faces, a face is represented by its boundary shared edge chain, and a shared edge chain is represented by an ordered list of shared edges connected by shared vertices. A shared edge chain may be closed when used in relation to bounded geometry, i.e., it may loop back to the starting point. A shared edge chain may be open when used in relation to a sketch. A shared edge chain may belong to a face, called its parent face. A shared edge chain in a sketch may exist without a parent face. Also, according to the illustrated embodiment, a shared edge is a representation of an edge with respect to a certain shared edge chain. The orientation of a shared edge may differ from the orientation of an edge. A shared edge is bounded by two shared vertices, namely a start shared vertex and an end shared vertex. The choice of which shared vertex is considered as the start shared vertex and which is considered as the end shared vertex may be determined by which shared vertex occurs first in the ordered chain of shared edges. A shared edge always belongs to a single shared edge chain (this may be called the parent shared edge chain). According to the illustrated embodiment, an edge is represented by a curve / line where two faces meet. The number of shared edges pointing to each edge is equal to the number of shared edge chains in which the edge participates. In a sketch, an edge may have one or more shared edges. In a manifold solid, each edge has two shared edges. In a sheet model, an edge may have only one shared edge. In a non-manifold solid, an edge may have more than two shared edges.Also, according to the illustrated embodiment, a shared vertex is a representation of a vertex with respect to a particular shared edge chain. A shared vertex serves as the ending shared vertex of its previous shared edge and the starting shared vertex of its next shared edge. A shared vertex always belongs to a single shared edge chain, called its parent shared edge chain. A vertex may be represented by a point where two or more edges meet. The number of shared vertices pointing to each vertex is generally equal to the number of shared edge chains it participates in. A reference shared vertex is a shared vertex that indicates the context of the surrounding area considered to compute the prediction / suggestion.

[0027] Additional commentary regarding the above-referenced terminology and other related terminology is provided below under the section heading "Terminology and Related Concepts."

[0028] Now, with reference to the flowchart of FIG. 2, a user creates or selects (at 202) one or more geometric entities of a design.

[0029] 3A is a partial screenshot showing a base geometry 300 drawn by a CAD user in a graphics area of ​​a CAD software program. Base geometry 300 includes a hexagon 302 with a rectangular cutout 304 in the area above hexagon 302.

[0030] Figure 3B is another partial screenshot showing the hexagon 302 of Figure 3A again, except that in the screenshot of Figure 3B, the CAD user has just created a new geometric feature in the design - an ellipse 306 inside hexagon 302. The ellipse 306 is in the upper left region of hexagon 302, above rectangular cutout 304, and is oriented such that its straight parallel sides lie in a plane parallel to the top and bottom edges of hexagon 302.

[0031] Next, according to the flowchart of FIG. 2, the computer displays (at 204) a user-selectable predictive modeling (PM) button on the screen. In one typical implementation, this occurs automatically and in direct response to the CAD user creating a new geometric entity (e.g., oval 306) in the design. An example of this kind of user-selectable PM button 308 is shown to the right of the newly created geometric feature (i.e., oval 306) in the screenshot of FIG. 3B. The PM button 308 essentially serves as an indicator or reminder to the CAD user that the system can predict (and suggest to the CAD user) where else in the design the CAD user might want to add identical instances of the geometric feature just created, and how those instances might be oriented in the design.

[0032] At this point (i.e., when the system merely presents user-selectable PM button 308 on the screen as shown in FIG. 3B), computer 100 does not provide the user with any substantial information about what its predictions are. It merely indicates to the user that such predictions may be available and that the user has the option to access / view those predictions by selecting user-selectable PM button 308. Computer 100 provides substantial information about the predictions only if the user selects user-selectable PM button 308.

[0033] 2, if the user does not click (select) the PM button (at 206), computer 100 simply waits for the user to create another geometric entity in the design, at which point computer 100 presents another user-selectable PM button on-screen near the new geometric entity. However, if the user clicks (selects) PM button 308 (at 206), computer 100 calculates (at 208) predictions / suggestions and displays (at 210) those predictions / suggestions to the user on-screen.

[0034] FIG. 3C shows an example of a screenshot that computer 100 may display in response to a user selecting PM button 308. The illustrated screenshot includes a visual representation of the system's predictions / suggestions, in the graphics area of ​​the CAD program, showing how copies of geometric entities may be added, positioned, and oriented elsewhere in the modeling object, and on top of the design itself. The illustrated example includes eleven suggestions 312a-312k (all ovals), collectively referred to herein as suggestions 312. Each suggestion 312 is a version of the last geometric entity (i.e., oval 306) created by the user, and is identical in size and shape to that last geometric entity. The location of each suggestion 312 bears some similarity to the location of the last created geometric entity 306.

[0035] The suggestions 312 as shown in FIG. 3C are not yet part of the design being created. Instead, the suggestions 312 shown in FIG. 3C are simply a visual representation of the system's suggestions / predictions. In one general implementation, the suggestions 312 appear on the screen at this point in the process in a manner that makes them easily visually distinct from the most recent user-created geometric features 306, which are part of the design at this point. There are various ways in which this visual distinctiveness can be expressed. For example, in the screenshot of FIG. 3C, the most recent user-created geometric features 306 appear in a darker color than the predictions / suggestions 312. In various other implementations, the suggestions 312 may appear on the screen in a different color than the user-created geometric features 306, or the suggestions 312 may be drawn with dashed or dotted lines while the user-created geometric features 306 are drawn with solid lines (or vice versa). Some of these and / or other measures may be implemented to visually distinguish the suggestions 312 from the most recently created geometric entities 306 that served as seeds for the calculation of the prediction.

[0036] When the computer 100 computes (at 208), the computer 100 identifies one of the shared vertices in the design as the reference shared vertex. In some implementations, the computer 100 selects, by default, the shared vertex that is physically closest to the most recently created or selected geometric entity 306 as the reference shared vertex. The computer 100 then looks for other shared vertices in the design that are matches (i.e., that are in an area similar to that of the reference shared vertex). The computer 100 typically presents the prediction / suggestion 312 near the other shared vertices that the computer 100 identified as matches on the design. The system orients each prediction / suggestion with respect to its associated shared vertex in the same way that the most recently created geometric entity 306 was oriented with respect to the reference shared vertex. In some cases, the computer 100 provides a prediction / suggestion 312 near each of the shared vertices that it identified as matching the reference shared vertex.

[0037] Thus, in one general implementation, the predictions / suggestions 312 provided by the computer 100 depend, at least in part, on which shared vertices in the design the computer 100 uses to generate (calculate) the predictions / suggestions 312. Also, the predictions / suggestions 312 can of course differ if the computer uses one shared vertex versus another shared vertex as the reference shared vertex. Thus, the computer 100 generally informs the user which shared vertices in the design the computer 100 used as the reference shared vertex for a particular set of predictions / suggestions, and allows the user to specify another shared vertex for the computer 100 to use in updating / making new predictions / suggestions. There are various ways in which the computer 100 can perform this functionality. For example, in the screenshot of FIG. 3C , the reference shared vertex is identified by a sphere 314 at the intersection of the top edge of hexagon 302 and the upper left side edge of hexagon 302, which the user can drag and drop onto another shared vertex in the modeling object (which causes computer 100 to automatically update the prediction / suggestion using the new shared vertex as the reference point (i.e., the reference shared vertex)).

[0038] The screenshot of FIG. 3C also has a suggestions context menu 310 that replaces the user selectable PM button 308. The suggestions context menu 310 has four user selectable icons 316a-316d, each of which can be selected to invoke or access one or more computer functionality. Icon 316a is a drop point icon, the selection of which causes the computer to simultaneously show all valid drop points in the design. Icon 316b is a settings icon, the selection of which causes the computer 100 to present an on-screen interface with various system settings related to the suggestions functionality. Icon 316c is an accept icon, the selection of which indicates to the computer 100 that the user wishes to accept the active on-screen prediction / suggestion. Such selection causes the computer 100 to incorporate the active on-screen prediction / suggestion as a geometric entity into the design. Icon 316d is a close icon, the selection of which causes computer 100 to close the suggestion context menu 310 and remove from the design any predictions / suggestions that the user did not previously accept.

[0039] These user selectable icons 316a-316d may take on a variety of possible visual appearances: in the illustrated embodiment, a first user selectable icon 316a appears as a polygon with small circles on three of its four corners and a larger circle near the fourth corner, a second user selectable icon 316b appears as a gear, a symbol commonly recognized as being associated with computer settings, a third user selectable icon 316c appears as a check mark in front of a rectangle, and a fourth user selectable icon 316d appears as the letter x.

[0040] The screenshot of Figure 3C allows the user to review and consider the computer's predictions / suggestions 312 before accepting, rejecting, or modifying them. Referring again to the flowchart of Figure 2, if the user accepts (at 212) the predictions / suggestions provided by the computer 100, the computer 100 turns (at 214) the accepted predictions / suggestions into actual geometry (i.e., geometric entities) within the design. In that case, the accepted predictions / suggestions are no longer predictions / suggestions but become part of the design itself.

[0041] If the user does not accept (at 212) the prediction / suggestion provided by computer 100, but would like to see (at 216) other predictions / suggestions from computer 100, computer 100 allows the user to make certain changes that may prompt computer 100 to calculate and provide (at 218) a new prediction / suggestion. Once the changes are made (at 218), computer 100 calculates (at 208) a new prediction / suggestion and displays (at 210) the new prediction / suggestion to the user.

[0042] There are various ways in which the computer 100 may enable the user to prompt the computer 100 to compute and provide new predictions / suggestions. These ways include allowing the user to a) toggle on or off the “Similarity” option in the settings interface, b) toggle on or off the “Symmetry” option in the settings interface, c) toggle on or off one or more of the displayed predictions / suggestions by tapping directly on the predictions / suggestions (if a particular one of the predictions / suggestions is toggled off, the toggled off suggestion may appear desaturated), d) pick a different reference shared vertex (e.g., by dragging the sphere 314 to a different location), and / or e) toggle on or off the “propagate suggestions across components” option (turning this option on generally indicates to the computer 100 to look for similar regions not only in the current base solid, but also in all other solids that may have been opened in the current session). In various implementations, computer 100 may provide one or more other ways for a user to prompt computer 100 to calculate and provide new predictions / suggestions.

[0043] FIG. 3D is a schematic diagram showing a user dragging a sphere 314 from its original location to a new location that identifies the original reference shared vertex for the prediction / suggestion. More specifically, FIG. 3D shows the user's finger 318 touching the screen and in the process of dragging the sphere 314 from its original location on the original reference shared vertex (at the intersection of the top edge of the hexagon 302 and the upper left side edge of the hexagon 302) to a new location. In FIG. 3D, if the user drops the sphere 314 at a location (e.g., a "drop point" or "drop target") that corresponds to a different shared vertex than the original reference shared vertex, thereby designating the different shared vertex as the new reference shared vertex, the computer calculates (at 208) new predictions / suggestions and displays (at 210) these new predictions / suggestions. The new predictions / suggestions are calculated using the new reference shared vertex.

[0044] In one general implementation, once the user begins dragging the sphere 314, the system identifies on the screen all of the shared vertices in the design throughout the dragging process. This can be accomplished in a number of ways. In one implementation, this is accomplished by applying markings (e.g., black dots) on the shared vertices of the modeling objects. For example, in the implementation of FIG. 3D, the shared vertices are identified by black dots 320.

[0045] Also, in one general implementation, when the user starts dragging the sphere 314, the computer 100 identifies on the screen all specific shared vertices in the design that can be viable alternatives to the original reference shared vertex. These viable alternative shared vertices are potential drop points for the sphere 314 that the user is dragging. In some implementations, the computer considers a shared vertex as a viable alternative to the original reference shared vertex only if the shared vertex provides one or more new (different) proposals compared to the proposals provided by the original reference shared vertex. Furthermore, if the proposals provided by a set of viable shared vertices are identical (even though they may differ from the proposals provided by the original reference shared vertex), the computer may consider only one of the shared vertices from the set as viable (typically the shared vertex closest to the seed geometry).

[0046] Generally, when the dragging process is initiated, computer 100 identifies these particular feasible alternative shared vertices on the screen. There are various ways in which computer 100 may accomplish this. For example, according to the embodiment of FIG. 3D, when the dragging process is initiated, computer 100 identifies the feasible alternative shared vertices on the screen itself with markings that resemble hollow circles 312 (which may be, for example, white with a gray outline).

[0047] When the dragging process is started, computer 100 may change the appearance of the reference shared vertex. In one exemplary implementation, the reference shared vertex may be marked with a hollow circle before the dragging process is started (see FIG. 3C), but this marking may change to a dark (e.g., brown) circle after dragging is started (see FIG. 3D). The brown circle indicates that sphere 314 is being dragged and the reference shared vertex may change, but the suggestions that appear on the screen (e.g., 312a-312k in FIG. 3C) have been determined by computer 100 using the shared vertex marked with the brown circle as the reference shared vertex.

[0048] In some implementations, as the sphere 314 is being dragged, the possible shared vertex / drop point that is closest to the sphere's current location becomes darker, indicating the suggestion provided by this shared vertex. All other possible shared vertices / drop points are shown as hollow circles slightly smaller in size than the sphere 314 being dragged. When the user releases the sphere 314, it snaps to the darker drop point at the moment the sphere 314 is released. In FIG. 3D, the top left corner of the hexagon is darker because it is the closest drop point from the sphere 314 at that time. The suggestion provided by the darker shared vertex is shown. The top left corner of the cutout is a drop point, but is not the closest drop point at that time, so it is a hollow circle. In FIG. 3E, as the user drags the sphere 314 further down, the top left corner of the cutout becomes darker because it is the closest drop target from the sphere at that time. Now the suggestion provided by the new darker shared vertex is shown. The top left corner of the hexagon is no longer the nearest drop point, so it now turns into a hollow circle.

[0049] Thus, in one general implementation, as sphere 314 is being dragged, when sphere 314 enters space near (e.g., within some predetermined distance) one of the potential drop points (i.e., one of the viable alternative shared vertices), the computer may update what the user sees on the screen to indicate a new set of suggestions (e.g., see 312l-312n in FIG. 3E) based on the potential drop point being the new reference shared vertex. Computer 100 in this example may change the on-screen appearance of potential drop point 331 to indicate its new status as a potential reference shared vertex for the new suggestion. In one general implementation, computer 100 also changes the on-screen appearance of the previous reference shared vertex (in the upper left corner of the hexagon) to indicate that the previous reference shared vertex is now just another viable alternative shared vertex (and no longer serves as the reference shared vertex for the new suggestion being displayed).

[0050] An example of this is shown in FIG. 3E, which shows what the screen looks like when the user's finger 318 drags the sphere 314 near one of the new potential drop points (i.e., the drop point on the upper left side of the cutout) such that the computer responds to the location of the new sphere 314. As shown, the screenshot has been updated to change the eleven suggestions 312a-312k previously shown (in FIG. 3D) to three new suggestions 312l-312n (in FIG. 3E). These new suggestions 312l-312n would have been determined by computer 100 based on the new potential drop point (i.e., the drop point on the upper left side of the cutout) being considered as the new reference shared vertex. Additionally, as shown, the on-screen appearance of the potential drop targets has been changed (from hollow circles to dark circles) to indicate their new status as reference shared vertices for the new suggestions. Finally, the on-screen appearance of the previous reference shared vertex (at the top left side of the hexagon) has been changed (from a dark circle to a hollow circle) to indicate that the previous reference shared vertex is now just another viable alternative shared vertex (and no longer serves as the reference shared vertex for the new proposal).

[0051] When sphere 314 is moved from its position in FIG. 3E (closest to the shared vertex at the upper left side of the cutout) to a different position that is sufficiently close to one of the other feasible shared vertices, the computer updates the appearance of the design to show a new set of proposals, using the then-closest feasible shared vertex as the reference shared vertex.

[0052] In one general implementation, as shown in FIG. 3E, the potential drop points become dark (e.g., brown) and when the sphere 314 is released, the computer 100 snaps the sphere 314 to the dark drop point and a new suggestion appears on the screen until the user takes action to accept, reject, or modify the suggestion. An example of this is shown in FIG. 3F, where the illustrated design includes the original user-created geometric feature (i.e., oval 306) and three suggestions 312l-312n calculated by the computer 100 using the shared vertex on the left side of the inner edge of the cutout as the reference shared vertex. In the illustrated screenshot, the reference shared vertex (on the left side of the inner edge of the cutout) is identified as one circle and the original reference shared vertex is identified as another circle. In one general implementation, these circles may be color-coded or otherwise visually distinguishable from one another on the screen.

[0053] If at any point the user accepts the on-screen suggestions 312l-312n (e.g., by selecting the suggestion accept icon 316c in the suggestion context menu 310), the computer 100 incorporates the on-screen suggestions 312l-312n into the design. Thus, if the user selects the suggestion accept icon 316c in the suggestion context menu 310 of FIG. 3F, the computer 100 incorporates the three on-screen suggestions 312l-312n into the design. The system then presents the user with a screen as shown in FIG. 3G, including the previous suggestions 312l-312n incorporated into the design as actual geometric entities 324l-324n.

[0054] The above example shows how computer 100 may enable a user to prompt computer 100 to change its prediction / suggestion by dragging and dropping a sphere (identifying a reference shared vertex for the prediction / suggestion) from its original location to another possible alternative shared vertex. However, as noted above, in various embodiments, there are other ways in which computer 100 may enable a user to prompt computer 100 to calculate and display a different prediction / suggestion (e.g., see 218 in FIG. 2). For example, FIGS. 4A-4J include a series of screenshots from a display of computer 100 showing an exemplary workflow illustrating how predictions / suggestions can be switched off or on (e.g., by a user using a mouse to click or tap a button (e.g., a sketch helper command button)) and how a "Similarity" option in the computer's settings interface can be useful.

[0055] In FIG. 4A, a user creates a base geometry 400, which in the illustrated example is a roughly T-shaped geometry on its side.

[0056] 4B, a user creates a circle 402 in the upper left corner of base geometry 400. Computer 100 causes a context menu 404 to appear next to circle 402. Context menu 404 has a user-selectable PM button 408 therein. In some cases, computer 100 causes the context menu to appear when the user clicks on the circle.

[0057] The user selects a user-selectable PM button 408 which prompts the computer 100 to calculate predictions / suggestions using the circle as the seed geometry and display such predictions / suggestions on-screen within the design. Figure 4C shows an example of a screenshot that the computer 100 may display in response to the user selecting the user-selectable PM button 408. In the illustrated screenshot, only one such prediction / suggestion 412a is displayed. The suggestion 412a is a circle similar to the seed geometry circle 402.

[0058] The screenshot of Figure 4C also has a suggestions context menu 410 that replaces the previous context menu 404 that included a user selectable PM button 408. The suggestions context menu 410 has four user selectable icons, including a settings icon 416b, selection of which causes the computer 100 to present an on-screen interface with various system settings related to the suggestions functionality.

[0059] The screenshot of FIG. 4C identifies the reference shared vertex by a sphere 414 in the upper left corner of the design.

[0060] The user then selects the settings icon 416b, which causes the computer 100 to present settings options on the screen, again near the design. An example of these settings options is shown in the exemplary settings interface 417 shown in FIG. 4D. Also shown in FIG. 4D is a message 415 that the computer 100 presents to the user when the mouse cursor hovers over the settings icon 416b. The message 415 includes information about the available settings, and states that "settings reveal a set of factors that can be changed to improve the suggestions." Options shown in the illustrated settings menu include a "Similarity" toggle switch 419, a "Symmetry" toggle switch 421, and a "Propagate suggestions across components" on / off switch 423. In the screenshot of FIG. 4D, the "Similarity" and "Symmetry" toggle switches are in the on (or activated) position, and the "Propagate suggestions across components" switch 423 is in the off (or deactivated) position.

[0061] In FIG. 4E, the user turns off the "Similarity" option. As a result, computer 100 shows four more options as additional predictions / proposals 412b-412e. While only the original prediction / proposal 412a could meet the constraints imposed by the "Similarity" and "Symmetry" options, only the original prediction / proposal 412a and the additional predictions / proposals 412b-412e can meet the less stringent constraints imposed by only the active "Symmetry" option.

[0062] By turning on "symmetry", in effect, computer 100 looks not only for shared vertices that are similar to or identical to the reference shared vertex, but also for shared vertices that look like or are mirror images of the reference shared vertex. With respect to similarity, computer 100 generally excludes certain characteristics from the descriptor when "similarity" is turned off. By turning off "similarity", in effect, the checks on the similarity of shared vertices are less strict, and thus additional (less similar) shared vertices may also provide suggestions.

[0063] 4F, the user clicks / selects drop point icon 416a, which causes computer 100 to simultaneously show all valid drop points in the design (e.g., where sphere 414 can be moved to define a new reference shared vertex).

[0064] In Fig. 4G, the user begins dragging the sphere 414 to one of the valid drop points. As the sphere 414 is moved across the screen, the nearest drop point is shown in a darker color (e.g., brown), and suggestions resulting from the new drop point are dynamically displayed. For example, in Fig. 4G, the sphere 414 is closest to a drop point that is next to the original reference shared vertex, but different from the original reference shared vertex, so that the computer 100 shows all of the previously presented predictions / suggestions 412a-412e, as well as two new predictions / suggestions 412f and 412g.

[0065] In Figure 4H, the user drops the sphere 414 onto a new drop point (next to the original reference shared vertex in the upper left corner of the design). Predictions / suggestions 412a-g resulting from the new drop point, which serves as the new reference shared vertex, are displayed by computer 100.

[0066] In Figure 4I, the user clicks on the unwanted predictions / suggestions, specifically 412b, 412e, 412f, and 412g, which causes these predictions / suggestions 412b, 412e, 412f, and 412g to change to a desaturated appearance, while the remaining predictions / suggestions 412a, 412c, and 412d maintain their saturated appearance.

[0067] In Figure 4J, the user accepts (e.g., by clicking on the green ticked accept icon 416c) the remaining (saturated) predictions / suggestions 412a, 412c, and 412d. These predictions / suggestions 412a, 412c, and 412d are transformed into actual geometric entities in the design, and the desaturated predictions / suggestions 412b, 412e, 412f, and 412g disappear from the design and from the screen. Figure 4J thus shows the base geometry 400 with the circle 402 created by the user, and three copies of the circle 412a, 412c, and 412d on the screen.

[0068] 5A-5E include a series of screenshots of the display of computer 100 illustrating an exemplary workflow showing how the "Symmetry" option (of the settings interface) can be useful.

[0069] In FIG. 5A, a user creates a base geometry 500, which in the illustrated example is a complex shape.

[0070] 5B, a user draws a triangle 502 in the upper left corner of base geometry 500. In one typical implementation, in response to drawing triangle 502, computer 100 causes a user-selectable PM button (such as a user-selectable PM button in context menu 404) to appear next to triangle 502.

[0071] 5C shows what computer 100 presents on its screen when a user selects the user-selectable PM button and then selects the settings option on the resulting context menu. The illustrated screenshot shows base geometry 500, a most recently created triangle 502, a reference shared vertex (identified by sphere 514), a number of predictions / suggestions 512a-o (calculated by computer 100 using triangle 502 as a seed geometry), and a suggestions settings context menu 517. Suggestions settings context menu 517 shows that the "Similarity" and "Symmetry" options are on or active, but the "Propagate suggestions across components" option is off or inactive.

[0072] In Fig. 5D, the user switches off the "Symmetry" option (i.e., deactivates the option). In response, the computer 100 removes predictions / suggestions 512a, 512c, 512e, 512g, 512i, 512k, 512m, and 512o, and leaves only predictions / suggestions 512b, 512d, 512f, 512h, 512j, 512l, and 512n. This is because predictions / suggestions 512a, 512c, 512e, 512g, 512i, 512k, 512m, and 512o meet the criteria required by the computer 100 when the "Symmetry" option is on or active, but they do not meet the criteria required by the computer when only "Similarity" is on or active (and not "Symmetry").

[0073] Figure 5E shows a screenshot of what a user would see if the user selected the "Accept Suggestion" icon 516c (i.e., a checkmark) in Figure 5D. The screenshot in Figure 5E includes the base geometry 500 with the user-created triangle 502 and all of the other triangles (i.e., based on predictions / suggestions 512b, 512d, 512f, 512h, 512j, 512l, and 512n) from Figure 5D.

[0074] The above illustrates various aspects of computer functionality and capabilities in the context of a user experience. We now consider an exemplary embodiment of the process performed by computer 100 (and shown diagrammatically in FIGS. 6A-6C) for computing predictions / suggestions, which of course facilitates the above user experience. Certain terminology referred to herein will be explained later in this document. The reader is therefore advised to consider those explanations, if helpful.

[0075] The algorithm described below assumes that a user opens a new or pre-existing modeling object in a CAD system for editing. The opened modeling object may be empty, or may contain one or more three-dimensional (3D) solids, or may contain one or more two-dimensional (2D) sketches, etc., or may contain a combination of one or more 3D solids and one or more 2D sketches. It is assumed that the 2D and / or 3D geometry is represented by boundary representation (B-rep), which is how most modern CAD systems represent 2D and 3D geometry.

[0076] In the description that follows, in some embodiments, processes and functionality ascribed to computer 100 may be performed by processor 102 of computer 100, either alone or in combination with other computer components or otherwise.

[0077] According to the process illustrated in the flowchart of FIGS. 6A-6C, computer 100 calculates (at 602) the following four local coordinate systems for each shared vertex of the modeling object and stores them in memory 106: a. Local coordinate system S of the shared vertex o , b. Mirror-symmetric local coordinate system S of the shared vertex m (Not required if the "Symmetry" option is off) c. Inverted local coordinate system S of the shared vertex r , and d. Inverted mirror-symmetric local coordinate system S of the shared vertex rm (Not required if the Symmetry option is off).

[0078] Then (at 604), computer 100 calculates the following four descriptors for each shared vertex of the modeling object and stores them in memory 106: a. Local coordinate system S o The shared vertex descriptor D is represented by o , b. Mirror-symmetric local coordinate system S m The shared vertex descriptor D is represented by m (Not required if the "Symmetry" option is off) c. Inverted local coordinate system S r The shared vertex descriptor D is represented by r , and d. Inverted mirror-symmetric local coordinate system S rm The shared vertex descriptor D is represented by rm (Not required if the Symmetry option is off).

[0079] The computer 100 then (at 606) designates / considers one or more geometric entities most recently created or selected by the user as seed geometry (i.e., geometry that will be considered for replication throughout the design).

[0080] The computer 100 then finds (at 608) the shared vertex that is located spatially closest to the seed geometry. In one typical implementation, this is done by determining the shared vertex whose location is the shortest 3D distance from the seed geometry. There are well-known techniques familiar to those skilled in the art for finding the 3D distance between a location and a geometry represented in B-rep format.

[0081] The computer designates (at 610) this shared vertex (identified as the shared vertex that is spatially closest to the seed geometry) as a reference shared vertex.

[0082] The computer 100 then allows the user to designate (at 612) another shared vertex in the design as the reference shared vertex. As mentioned above, one way the computer 100 allows the user to change the designation of the reference shared vertex is by allowing the user to drag and drop an on-screen sphere from one reference shared vertex to the new reference shared vertex. If the user chooses to designate (at 614) another shared vertex as the reference shared vertex, the computer 100 recognizes (at 616) the newly designated reference shared vertex and proceeds to step 618. Otherwise, the computer 100 simply proceeds to step 618.

[0083] In step 618 of the illustrated process, computer 100 finds all shared vertices of the modeling object that match the reference shared vertex. In some embodiments, to find whether a particular shared vertex matches the reference shared vertex, computer 100 derives a descriptor D for the particular shared vertex. o However, the four descriptors of the reference shared vertex D o , D m , D r , D rm , which are considered identical for these purposes, within a given or user-definable error tolerance.

[0084] What the computer does next (see FIG. 6B) depends on how each matching shared vertex matches the reference shared vertex. For each matching shared vertex (620), a. Descriptor D of the matching shared vertices o is the descriptor of the reference shared vertex D o If (622) is the same as S of the reference shared vertex, then (at 624) computer 100 o A copy of the seed geometry represented by S is used to find the matching shared vertices. o Convert to. b. Descriptor D of the matching shared vertices o is the descriptor of the reference shared vertex D mIf (626) is the same as S of the reference shared vertex, then (at 628) computer 100 m A copy of the seed geometry represented by S is used to find the matching shared vertices. o Convert to. c. Descriptor D of the matching shared vertices o is the descriptor of the reference shared vertex D r If (630) it is the same as S of the reference shared vertex, then (at 632) computer 100 r A copy of the seed geometry represented by S is used to find the matching shared vertices. o Convert to. d. Descriptor D of the matching shared vertices o is the descriptor of the reference shared vertex D rm If it is the same as (634), then (at 636) the computer 100 calculates the local coordinate system S rm A copy of the seed geometry represented by S is used to find the matching shared vertices. o Convert to.

[0085] It should be noted that transforming any geometry from one coordinate system to another can be accomplished by standard techniques familiar to those skilled in the art (e.g., using a transformation matrix). Thus, for each matching shared vertex, computer 100 transforms a copy of the seed geometry from the local coordinate system of the reference shared vertex to the local coordinate system of each of the matching shared vertices.

[0086] Then (see FIG. 6C), the computer 100 displays (at 640) a copy of the transformed seed geometry on a computer screen as a prediction / proposal (eg, visually distinct from other parts of the design).

[0087] As described above, computer 100 then (at 642) allows the user to accept, reject, and / or modify the suggestions. If the user accepts any of the predictions / suggestions, computer 100 adds the accepted predictions / suggestions as geometric entities to the modeling object (design).

[0088] Unless otherwise noted, any terminology used in this document is to be given its ordinary meaning, although the following discussion may provide further insight into the meaning of particular terminology in various examples.

[0089] For example, the phrase modeling object may be used herein. 3D design software applications, such as CAD (Computer Aided Design) programs, are used to construct solid geometry of a product to be designed. Modeling object may generally refer to a representation of solid geometry in a CAD program. Modeling object may include zero, one, or more 3D solids, which may include zero, one, or more 2D or 3D sketches. The phrase 3D CAD feature may be used herein. Generally, a CAD user may modify a 3D modeling object by creating 3D CAD features, such as fillets, chamfers, extrusions, cuts, holes, angled drafts, and the like. The phrase sketch entity may generally refer to a two-dimensional or three-dimensional entity, such as a line, an arc, a circle, a spline curve, a construction line, and the like. A sketch may consist of one or more sketch entities drawn on a sketch plane. The phrase sketch plane normal may be used herein. In some CAD programs, the sketch plane normal is an inherent property of each sketch plane. In general, the sketch plane normal is perpendicular to the sketch plane and the point from which the sketch should (or will) be viewed.

[0090] Terminology and Related Concepts As mentioned above, boundary representations or B-Reps are used by most modern CAD programs to represent modeling objects. In this representation, a modeling object is represented by different topological elements: solids, shells, faces, shared edge chains, shared edges, edges, shared vertices, and hierarchical relationships between vertices. FIG. 7 is a schematic diagram of an exemplary hierarchical relationship between different topological elements in a boundary representation of a modeling object. In the illustrated embodiment, a solid is represented by its boundary shell, a shell is represented by a set of connected faces, a face is represented by its boundary shared edge chain, and a shared edge chain is represented by an ordered list of shared edges connected by shared vertices. A shared edge chain may be closed, i.e., loop back to the starting point, when used in the context of bounded geometry. A shared edge chain may be open, when used in the context of a sketch. A shared edge chain may belong to a face, called its parent face. A shared edge chain in a sketch may exist without a parent face. Also, according to the illustrated embodiment, a shared edge is a representation of an edge in the context of a certain shared edge chain. The orientation of a shared edge may differ from the orientation of an edge. A shared edge is bounded by two shared vertices, a start shared vertex and an end shared vertex. The choice of which shared vertex is considered as the start shared vertex and which is considered as the end shared vertex may be determined by which shared vertex occurs first in the ordered chain of shared edges. A shared edge always belongs to a single shared edge chain (this may be called the parent shared edge chain). According to the illustrated embodiment, an edge is represented by a curve / line where two faces meet. The number of shared edges pointing to each edge is equal to the number of shared edge chains in which the edge participates. In a sketch, an edge may have one or more shared edges. In a manifold solid, each edge has two shared edges. In a sheet model, an edge may have only one shared edge. In a non-manifold solid, an edge may have more than two shared edges.Also, according to the illustrated embodiment, a shared vertex is a representation of a vertex in the context of a particular shared edge chain. A shared vertex serves as the ending shared vertex of its previous shared edge and the starting shared vertex of its next shared edge. A shared vertex always belongs to a single shared edge chain, called its parent shared edge chain. A vertex may be represented by a point where two or more edges meet. The number of shared vertices pointing to each vertex is generally equal to the number of shared edge chains in which the vertex participates. A reference shared vertex is a shared vertex that indicates the context of the surrounding area considered to compute the prediction / suggestion.

[0091] Some remarks regarding the orientation of shared edge chains are worth pointing out. Regarding shared edge chains in 3D solids: Any CAD system usually follows some conventions regarding the orientation of closed shared edge chains in 3D solids. One well-known convention is to use the so-called right-hand rule, according to which if you align your thumb with the surface normal direction or the sketch surface normal direction and your index finger with the shared edge chain orientation, your middle finger should point towards the area enclosed by the closed shared edge chain. Regarding shared edge chains in sketches: Shared edge chains in sketches may not follow any orientation convention. As a result, in a sketch, two geometrically identical shared edge chains may have opposite orientations.

[0092] The start direction of a shared edge generally refers to the direction starting from the start point of the shared edge and going inward towards the edge's interior. In this document, we refer to the start direction of a shared edge as the direction starting from the end point of the shared edge and going inward towards the edge's interior. Note that this is the opposite of what is commonly considered to be the end direction of a shared edge in the literature. We choose to call it this because it makes the start and end shared edge directions independent of the orientation or shared edge chain, and makes it convenient to do calculations related to inverted and mirror-symmetric shared vertices.

[0093] In the context of faces, the face normal direction generally refers to the direction perpendicular to the face at a given point on a given face, pointing outward from the area enclosed by the shell to which the face belongs. In the context of a sketch, the face normal direction is the same as the sketch plane normal. In the context of faces, the face normal direction of a shared vertex generally refers to the face normal direction of the parent face of the shared vertex at the point of the shared vertex. In the context of a sketch, the face normal direction of a shared vertex is the same as the sketch plane normal direction.

[0094] The geometric entities can be either 2D sketch entities (such as lines, arcs, circles, spline curves, etc.) or 3D CAD features (eg, extrusions, cuts, holes).

[0095] The local coordinate system of the shared vertex (S o ) is generally The origin coincides with the position of the shared vertex, The z-axis is aligned with the surface normal direction at the shared vertex, The x-axis is aligned with the start direction of the next shared edge of the shared vertex, The y-axis is aligned with the cross product of the z- and x-directions

number

[0096] If a given shared vertex is the last shared vertex in the shared edge chain (meaning there is no next shared edge to this shared vertex), then the origin and z-axis are defined as above, but in this case: The y-axis is aligned with the end direction of the previous shared edge, The x-axis is aligned with the cross product of the y- and z-directions

number

[0097] A mirror-symmetric local coordinate system of the shared vertices (S m ) is generally The origin coincides with the position of the original shared vertex, The z-axis is aligned opposite to the surface normal at the shared vertex, The x-axis is aligned with the end direction of the shared edge before the shared vertex, The y-axis is aligned with the cross product of the z- and x-directions

number

[0098] If a given shared vertex is the first shared vertex in a shared edge chain (meaning there is no previous shared edge to this shared vertex), then the origin and z-axis are defined as above, but in this case: The y-axis is aligned opposite to the start direction of the next shared edge, The x-axis is aligned with the cross product of the y- and z-directions

number

[0099] Inverted local coordinate system of shared vertices (S r ) is generally The origin coincides with the position of the shared vertex, The z-axis is aligned with the surface normal direction at the shared vertex, The x-axis is aligned with the end direction of the shared edge before the shared vertex, The y-axis is aligned with the cross product of the z- and x-directions

number

[0100] If a given shared vertex is the first shared vertex in a shared edge chain (meaning there is no previous shared edge to this shared vertex), then the origin and z-axis are defined as above, but in this case: The y-axis is aligned opposite to the start direction of the next shared edge, The x-axis is aligned with the cross product of the y- and z-directions

number

[0101] The inverted mirror-symmetric local coordinate system of the shared vertices (S rm ) is generally The origin coincides with the position of the original shared vertex, The z-axis is aligned opposite to the surface normal at the shared vertex, The x-axis is aligned with the start direction of the next shared edge of the shared vertex, The y-axis is aligned with the cross product of the z- and x-directions

number

[0102] If a given shared vertex is the last shared vertex in the shared edge chain (meaning there is no next shared edge to this shared vertex), then the origin and z-axis are defined as above, but in this case: The y-axis is aligned opposite to the end direction of the previous shared edge, The x-axis is aligned with the cross product of the y- and z-directions

number

[0103] Note that the symbol ":=" is used to indicate assignment. For example,

number

number

number

[0104] The phrase shared vertex descriptor generally refers to an ordered array of specific numerical properties of a shared vertex and the surrounding local region around the shared vertex in the shared edge chain. All the numbers in the descriptor are represented in one of the four possible local coordinate systems S o , S m , S r , and S rm The shared vertex descriptor can consist of two parts, α and β. The descriptor can be formed by concatenating these two parts. The sequence of concatenation can depend on what kind of coordinate system the descriptor is represented in. In the coordinate system S o and S rm In the case of , the β part can be placed after the α part. m and S r In the case of, the α moiety can be placed after the β moiety.

[0105] In general, the α part of the descriptor represents properties related to the previous shared edge in the shared edge chain (i.e., the shared edge starting from the previous shared vertex in the shared edge chain and ending at this given shared vertex): iP prev (3 real numbers): local x, y, and z coordinates of the previous shared vertex (omitted if similarity option is off) ii.

number

number

number

[0106] In general, the β part of the descriptor represents properties related to the next shared edge in the shared edge chain (i.e., the shared edge starting from a given shared vertex and ending at the next shared vertex in the shared edge chain): iP next (3 real numbers): local x, y, and z coordinates of the next shared vertex (omitted if similarity option is off) ii.

number

number

number

[0107] Moreover, as another possible implementation (shown in the figures), one of the two parts is omitted from the descriptor, which makes the check for identical descriptors less strict. If the check for identical descriptors needs to be made more strict, some additional properties may be added to the descriptor, such as the local coordinates of the midpoints of the corresponding shared edges, the radius of curvature of the shared edges at the start and / or middle and / or end points of the shared edges, etc.

[0108] In general, the phrases "local x, y, and z coordinates" and "local x, y, and z components" as used herein refer to the x, y, and z values ​​that are a. Local coordinate system of shared vertices b. Mirror-symmetric local coordinate system of shared vertices c. Inverted local coordinate system of shared vertices d. Inverted mirror-symmetric local coordinate system of shared vertices This means that the shared vertices are expressed in a given coordinate system, which can be either

[0109] If the shared vertex in question is the last shared vertex in an open shared edge chain and there is no next shared edge to this shared vertex, the computer may fill in the β portion of the descriptor array with zeros so that the length of the array does not change. If the shared vertex in question is the first shared vertex in an open shared edge chain and there is no previous shared edge to this shared vertex, the computer may fill in the α portion of the descriptor array with zeros so that the length of the array does not change. In one exemplary implementation, when the "similarity" option is turned off, the computer may extract the property P from the descriptor. prev ,

number

number

number

number

[0110] Maintaining four descriptors per shared vertex allows the algorithm to be independent of orientation or shared edge chains, which also allows the algorithm to provide suggestions at shared vertices that happen to be mirror images of the seed shared vertex. Here's how it works: ·D for a given shared vertex o is the seed shared vertex D o If it matches, it means that the given shared vertex is identical to the seed shared vertex. ·D for a given shared vertex o is the seed shared vertex D m If it matches, then it means that the given shared vertex is identical to the seed shared vertex if the seed shared vertex's shared edge chain is a mirror image of its current shape. ·D for a given shared vertex o is the seed shared vertex D r If it matches, it means that the given shared vertex is the same as the seed shared vertex if the orientation of the shared edge chain is reversed. ·D for a given shared vertex o is the seed shared vertex D rm If it matches, it means that the given shared vertex is identical to the seed shared vertex if the seed shared vertex's shared edge chain is a mirror image of its current shape with the orientation reversed.

[0111] An example is now provided using diagrams showing an exemplary implementation of the algorithm described above. Consider the shared edge chain of triangles in Figure 8. The lengths of the triangle sides are 8mm, 6mm, and 10mm, as shown in the diagram. None of the diagrams are to scale.

[0112] The arrow heads drawn in the middle of the three sides indicate the counterclockwise orientation of the shared edge chain. The six unit vectors indicate the starting and ending directions of the shared edges.

[0113] Figure 9 shows five shared edge chains A, B, C, D, and E, constructed using the same measurements as the triangles shown previously. As before, the arrow heads in the middle of the edges indicate the orientation of the shared edges. Note: A and B are the same shared edge chain, A and C have the same orientation (counterclockwise) and their shapes are mirror images of each other; A and D are of opposite orientation but their shapes are identical, · A and E are of opposite orientation and their shapes are mirror images of each other.

[0114] Suppose a user draws a semicircle in shared edge chain A, as shown by the semicircle in triangle A in Figure 10. The semicircles in triangles B, C, D, and E in Figure 10 show suggestions computed by one embodiment of the algorithm. We now show how the algorithm arrives at these suggestions.

[0115] FIG. 11 shows the local coordinate system S of the shared vertices at the right angles of each of the shared edge chains A, B, C, D, and E. o Shows.

[0116] [Table 1]

[0117] These tables show the shared vertices D at right angles in each of the shared edge chains A, B, C, D, and E. o We show all the values ​​in the descriptors. It can be seen that both the α and β descriptors corresponding to the shared edge chains A and B are identical. However, all other descriptors are different from each other. Therefore, the algorithm o If only the descriptor is used, it may show the suggestion (e.g., the brown semicircle) only in shared edge chain B, but not in shared edge chains C, D, and E.

[0118] Now, with respect to the shared vertices at the right angles of A, we further define three coordinate systems Sm , S r , and S rm Consider the three descriptors D m , D r , and D rm Calculate.

[0119] [Table 2]

[0120] Here we can notice the following: ·B of D o A D o is the same as C of D o A D m is the same as D of D o A D r is the same as E of D o A D rm is equivalent to.

[0121] Three additional coordinate systems S m , S r , and S rm With the introduction of , the algorithm may now show suggestions (e.g., as brown semicircles) inside each of the shared edge chains B, C, D, and E.

[0122] Although several embodiments of the present invention have been described, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.

[0123] For example, the systems and techniques disclosed herein are primarily related to the field of product design. However, they are applicable in any software application used for 2D or 3D design (e.g., where a user may need or want to replicate geometry in all similarly shaped areas in a modeling object). This may include, for example, software products used for product design, industrial design, sketching, and drafting. Some examples of such apps are SOLIDWORKS, CATIA Part Design, DS 3DByMe, and 3D Sketch App. Such tools may be similarly useful in other software applications that allow for the creation and editing of geometric shapes, such as MS PowerPoint, Adobe Illustrator, etc.

[0124] Also, although the specification contains many specific implementation details, these are not to be considered limitations on the scope of any invention or what may be claimed, but rather as descriptions of features specific to particular embodiments of a particular invention. Certain features described herein with respect to different embodiments may also be implemented in combination in a single embodiment. Conversely, various features described with respect to a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Also, although features may be described above as functioning in a particular combination and may initially be claimed as such, one or more features of a claimed combination may, in some cases, be deleted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.

[0125] Similarly, although acts are disclosed herein as occurring in a particular order, this should not be understood as requiring such acts to be performed in the particular order or sequence shown, or that all of the shown acts be performed in order to achieve desirable results.

[0126] Various aspects of the subject matter disclosed herein can be implemented in digital electronic circuitry, or in computer-based software, firmware, or hardware, including the structures disclosed herein and / or their structural equivalents, and / or in combinations thereof. In some embodiments, the subject matter disclosed herein can be implemented in one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium for execution by or to control the operation of one or more data processing devices (e.g., processors). Alternatively or additionally, the program instructions may be encoded on a human-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to an appropriate receiving device for execution by a data processing device. The computer storage medium may be, or may be included within, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination thereof. A computer storage medium should not be considered solely as a propagating signal, although a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagating signal. A computer storage medium may be or be contained within one or more separate physical components or media, such as multiple CDs, computer disks, and / or other storage devices.

[0127] Certain operations described herein may be implemented as operations performed by a data processing apparatus (e.g., a processor) on data stored in one or more computer-readable storage devices or received from other sources. The term "processor" (or the like) encompasses any kind of apparatus, device, and machine for processing data, including, by way of example, a programmable processor, a computer, a system-on-a-chip, or multiple processors, or combinations thereof. An apparatus may include special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). In addition to hardware, an apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting a processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or one or more combinations thereof.

[0128] The phrase computer may refer to a single individual computer, or multiple individual computers, or computer components coupled together. The phrase processor or computer processor may refer to one individual processor, or two or more individual processors. In some implementations that include two or more individual processors, the multiple processors may be distributed across multiple individual devices and / or locations. The phrase memory or computer memory may refer to one individual memory device, or two or more individual memory devices. In some implementations that include two or more individual memory devices, the memory devices may be distributed across multiple individual computers or computer components and / or locations.

[0129] Other embodiments are within the scope of the claims. [Explanation of symbols]

[0130] 306 Geometric Entities 111 Computer-Aided Design Programs 312, 312a-312n, 412a-412g, 512a-512o Proposal 402, 502 Seed Geometry S o Local coordinate system of shared vertices S m Mirror-symmetric local coordinate system with shared vertices S r Inverted local coordinate system for shared vertices S rm Inverted mirror-symmetric local coordinate system with shared vertices D o Local coordinate system S o The shared vertex descriptor is expressed as D m Mirror-symmetric local coordinate system S m The shared vertex descriptor is expressed as D r Inverted local coordinate system S r The shared vertex descriptor is expressed as D rm Inverted mirror-symmetric local coordinate system S rm The shared vertex descriptor is expressed as 100 Computers 102 processors 106 Memory

Claims

1. Enabling a user to create or select geometric entities in a design in a computer aided design program; predicting a location and orientation within the design for a copy of the geometric entity; displaying a visual representation of the copy of the geometric entity at the predicted location and orientation within the design as a suggestion to the user; Including, predicting the location and orientation within the design for the copy of the geometric entity; designating the geometric entity as a seed geometry; designating a first shared vertex associated with the seed geometry as a reference shared vertex; identifying a second shared vertex in the design having a descriptor that matches a descriptor of the reference shared vertex; Transforming a copy of the seed geometry into a corresponding coordinate system of the second shared vertex; The computer-based method includes:

2. enabling the user to accept, reject or modify the proposal; in response to the user accepting the suggestion, updating the design to include the accepted suggestion within the design; The computer-based method of claim 1 further comprising:

3. Displaying the visual representation of the copy of the geometric entity at the predicted location and orientation. The computer-based method of claim 1 , further comprising displaying the copy of the seed geometry transformed into the corresponding coordinate system of the second shared vertex.

4. Predicting the location and orientation within the design for the copy of the geometric entity includes, for each shared vertex in the design: The local coordinate system S of the shared vertex o and, The mirror-symmetric local coordinate system S of the shared vertex m and, The inverted local coordinate system S of the shared vertex r and, The inverted mirror-symmetric local coordinate system S of the shared vertex rm and, The computer-based method of claim 1 , further comprising identifying:

5. Predicting the location and orientation within the design for the copy of the geometric entity includes, for each shared vertex in the design: The local coordinate system S o The shared vertex descriptor D is expressed as o and, The mirror-symmetric local coordinate system S m The shared vertex descriptor D is expressed as m and, The inverted local coordinate system S r The shared vertex descriptor D is expressed as r and, The inverted mirror-symmetric local coordinate system S rm The shared vertex descriptor D is expressed as rm and, The computer-based method of claim 4 , further comprising identifying:

6. For each shared vertex, The shared vertex descriptor D o Let D be the descriptor of the reference shared vertex. o , the descriptor D of the reference shared vertex m , the descriptor D of the reference shared vertex r , and the descriptor D of the reference shared vertex rm 6. The computer-based method of claim 5, further comprising identifying one or more matching shared vertices by comparing:

7. For each matching shared vertex, The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex o If it is the same as the reference shared vertex S o A copy of the seed geometry represented by S of the shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex m If it is the same as the reference shared vertex S m A copy of the seed geometry represented by S of the shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex r If it is the same as the reference shared vertex S r A copy of the seed geometry represented by S of the matching shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex rm If it is the same as, the local coordinate system S rm A copy of the seed geometry represented by S of the matching shared vertices is o and converting it to The computer-based method of claim 6 further comprising:

8. The computer-based method of claim 2 , further comprising allowing the user to designate another shared vertex as the reference shared vertex.

9. 9. The computer-based method of claim 8, further comprising modifying the suggestions displayed to the user in response to the user designating the other shared vertex as the reference shared vertex.

10. A computer display; A computer processor; a computer-based memory coupled to the computer processor, the computer-based memory, when executed by the computer processor, causing the computer processor to: Enabling a user to create or select geometric entities in a design in a computer aided design program; predicting a location and orientation within the design for a copy of the geometric entity; displaying on the computer display a visual representation of the copy of the geometric entity at the predicted location and orientation within the design as a suggestion to the user; a computer-based memory storing computer readable instructions for causing the Including, predicting the location and orientation within the design for the copy of the geometric entity; designating the geometric entity as a seed geometry; designating a first shared vertex associated with the seed geometry as a reference shared vertex; identifying a second shared vertex in the design having a descriptor that matches a descriptor of the reference shared vertex; Transforming a copy of the seed geometry into a corresponding coordinate system of the second shared vertex; Including, a computer.

11. The computer-based memory, when executed by the computer processor, causes the computer processor to: enabling the user to accept, reject or modify the proposal; in response to the user accepting the suggestion, updating the display to incorporate the accepted suggestion into the design; The computer of claim 10 , further comprising computer readable instructions stored thereon to cause the computer to perform the following steps:

12. Displaying the visual representation of the copy of the geometric entity at the predicted location and orientation. The computer-implemented method of claim 10 further comprising displaying the copy of the seed geometry transformed into the corresponding coordinate system of the second shared vertex.

13. Predicting the location and orientation within the design for the copy of the geometric entity includes, for each shared vertex in the design: The local coordinate system S of the shared vertex o and, The mirror-symmetric local coordinate system S of the shared vertex m and, The inverted local coordinate system S of the shared vertex r and, The inverted mirror-symmetric local coordinate system S of the shared vertex rm and, The computer-implemented method of claim 10, further comprising: identifying

14. Predicting the location and orientation within the design for the copy of the geometric entity includes, for each shared vertex in the design: The local coordinate system S o The shared vertex descriptor D is expressed as o and, The mirror-symmetric local coordinate system S m The shared vertex descriptor D is expressed as m and, The inverted local coordinate system S r The shared vertex descriptor D is expressed as r and, The inverted mirror-symmetric local coordinate system S rm The shared vertex descriptor D is expressed as rm and, The computer of claim 13 , further comprising identifying:

15. The computer-based memory, when executed by the computer processor, causes the computer processor to: For each shared vertex, a descriptor D of the shared vertex o Let D be the descriptor of the reference shared vertex. o , the descriptor D of the reference shared vertex m , the descriptor D of the reference shared vertex r , and the descriptor D of the reference shared vertex rm The computer of claim 14 , further comprising computer readable instructions stored therein that cause the computer to identify one or more matching shared vertices by comparing:

16. The computer-based memory, when executed by the computer processor, causes the computer processor to, for each matching shared vertex: The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex o If it is the same as the reference shared vertex S o A copy of the seed geometry represented by S of the shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex m If it is the same as the reference shared vertex S m A copy of the seed geometry represented by S of the shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex r If it is the same as the reference shared vertex S r A copy of the seed geometry represented by S of the matching shared vertices is o and converting it to The descriptor D of the matching shared vertices o is the descriptor D of the reference shared vertex rm If it is the same as, the local coordinate system S rm A copy of the seed geometry represented by S of the matching shared vertices is o and converting it to 20. The computer of claim 15, further comprising computer readable instructions stored thereon that cause the computer to perform the following steps:

17. The computer-based memory, when executed by the computer processor, causes the computer processor to: The computer of claim 10 , further storing computer readable instructions configured to: enable the user to designate another shared vertex as the reference shared vertex.

18. The computer-based memory, when executed by the computer processor, causes the computer processor to:

20. The computer of claim 17, further storing computer readable instructions that, in response to the user designating the other shared vertex as the reference shared vertex, further cause the computer to modify the suggestions displayed to the user.

19. Enabling a user to create or select geometric entities in a design in a computer aided design program; predicting a location and orientation within the design for a copy of the geometric entity; displaying, on a display device, a visual representation of the copy of the geometric entity at the predicted location and orientation within the design as a proposal to the user; A non-transitory computer-readable medium storing instructions executable by a processor for performing steps including: predicting the location and orientation within the design for the copy of the geometric entity; designating the geometric entity as a seed geometry; designating a first shared vertex associated with the seed geometry as a reference shared vertex; identifying a second shared vertex in the design having a descriptor that matches a descriptor of the reference shared vertex; Transforming a copy of the seed geometry into a corresponding coordinate system of the second shared vertex; A non-transitory computer readable medium comprising:

20. The method according to claim 20, further comprising the step of calculating the descriptor, 2. The computer-based method of claim 1, wherein each descriptor corresponds to a particular one of the shared vertices and comprises an ordered array of numerical values ​​in computer memory representing, in association with that shared vertex, 1) properties associated with a previous shared edge in a shared edge chain, and 2) properties associated with a next shared edge in the shared edge chain.

21. The computer-based memory, when executed by the computer processor, causes the computer processor to: Calculating the descriptor, comprising: each descriptor corresponds to a particular one of the shared vertices and includes an ordered array of numerical values ​​in computer memory representing, in association with that shared vertex, 1) properties associated with a previous shared edge in a shared edge chain, and 2) properties associated with a next shared edge in the shared edge chain. The computer of claim 10 further storing computer readable instructions to cause the computer to:

22. The step of calculating the descriptor, comprising: each descriptor corresponds to a particular one of the shared vertices and includes an ordered array of numerical values ​​in computer memory representing, in association with that shared vertex, 1) properties associated with a previous shared edge in a shared edge chain, and 2) properties associated with a next shared edge in the shared edge chain.

20. The non-transitory computer readable medium of claim 19, further storing instructions executable by a processor for performing the steps:

Citation Information

Patent Citations

  • Circular staggered pattern of objects

    JP2014099177A

  • Groups of faces that form geometrical pattern

    JP2014130602A

  • Computer-aided modeling

    US20060004841A1

  • Inferring and maintaining symmetry relationships in a 3-d editor

    US20120078588A1

  • Multi-User Cloud Parametric Feature-Based 3D CAD System

    US20160246899A1