System and method for detecting excessive component movement in computer-aided design assemblies
The method and system in CAD and CAE systems use a bounding box to detect and correct excessive component movements, addressing navigation issues in complex assemblies by notifying users and allowing undo options.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- DASSAULT SYSTEMES SOLIDWORKS CORP
- Filing Date
- 2026-01-16
- Publication Date
- 2026-07-29
AI Technical Summary
Existing CAD and CAE systems fail to notify users when large, unintended shifts in component positions occur, making it difficult to navigate complex assemblies due to disproportionate movements between two-dimensional and three-dimensional spaces.
A method and system that utilize a bounding box to evaluate component movements within a CAD assembly, comparing the distance traveled against thresholds to detect excessive shifts and notify users, offering an option to undo such movements.
Enhances user experience by preventing ergonomic strain and improving navigation in complex assemblies by alerting users to and allowing correction of unintended large component movements.
Smart Images

Figure 2026122935000001_ABST
Abstract
Description
Background Art
[0001] For the design and simulation of objects (such as components, parts, assemblies of components or parts, etc.) within a modeling space (e.g., a three-dimensional (3D) modeling space), many existing products and simulation systems are provided in the market. Such systems typically employ computer-aided design (CAD) programs and computer-aided engineering (CAE) programs. These systems enable a user to construct, manipulate, and simulate complex 3D models of objects or assemblies of objects such as real-world objects. Thus, CAD and CAE systems represent modeled objects using edges, lines, surfaces, polygons, or closed volumes. Lines, edges, surfaces, polygons, and closed volumes can be represented in various manners, for example, as non-uniform rational B-splines (NURBS).
[0002] CAD systems manage parts or assemblies of modeled objects, which are mainly geometric specifications. In particular, CAD files contain specifications for which geometry is generated. From the geometry, a representation is generated. The specifications, geometry, and representation can be stored in a single CAD file or multiple CAD files. CAD systems include graphic tools for designers to represent modeled objects, and these tools are dedicated to the display of complex objects. For example, an assembly may be configured to include thousands of parts, i.e., components. A CAD system can be used to manage models of objects stored in electronic files.
[0003] CAD and CAE systems represent objects using computer-based models. The computer-based models may be programmed such that the model has the properties (e.g., physical, material, or other physics-based) of the real-world object that the model represents. Further, a simulation of the real-world object / environment represented by the model may be performed using the computer-based model. [Prior art documents] [Non-patent literature]
[0004] [Non-Patent Document 1] Wikipedia contributors, “Transformation matrix”, [online], WIKIPEDIA, Internet<URL:https: / / en.wikipedia.org / wiki / Transformation_matrix> [Overview of the project] [Problems that the invention aims to solve]
[0005] CAD and CAE programs visually present / display assemblies of components, such as real-world objects, to the user in a modeling space. In these modeling spaces, the user designs and modifies objects, e.g., representations of real-world objects (e.g., computer-based models, CAD assemblies, etc.). As part of this process, the user often moves components, either directly by dragging or indirectly by creating / modifying constraints. Depending on the orientation of the assembly and the user's viewpoint, in practice, for example, due to modeling constraints, it may appear to the user that an object is moving only slightly while a component moves a large distance, possibly outside the range rendered at the model's scale. In other words, a small movement in two-dimensional space (e.g., the user's viewpoint when dragging a component) can result in a large movement in the modeling space (e.g., the assembly's three-dimensional space / coordinate system).
[0006] Such large shifts can obscure components from the user's view, making it difficult for the user to continue the design process. Therefore, a function is needed to notify the user when there is a large, unintended shift in a component. This embodiment provides such functionality. [Means for solving the problem]
[0007] One embodiment of this method relates to a computer implementation for detecting excessive component movement within a CAD assembly. The method includes a processor that displays a CAD assembly containing multiple components within a computer interface and determines a bounding box encompassing the displayed CAD assembly. The method then receives a display of the movement of one of the multiple components from a starting position to a final position. Based on the bounding box and the received display of movement, the movement is evaluated against at least one threshold, and in response to the evaluation and determination that the movement exceeds at least one threshold, a notification is presented to the user within the computer interface.
[0008] According to one embodiment, the display of a received movement indicates a drag operation on a component within a computer interface. In an exemplary embodiment, evaluating a movement against at least one threshold includes (i) calculating a first ratio between the length between the start position and the end position and (ii) the geometric properties of the bounding box, and (i) calculating a second ratio between the length between the start position and the end position and (ii) the length of the drag operation. According to one embodiment, the geometric properties of the bounding box may be the diagonal size of the bounding box. In another embodiment, at least one threshold includes a first threshold and a second threshold. According to one such embodiment, evaluating a movement against at least one threshold includes comparing the first ratio to the first threshold and comparing the second ratio to the second threshold. Furthermore, such embodiments determine that the movement exceeds at least one threshold in response to a comparison of the first ratio to the first threshold which determines that the movement exceeds the first threshold, and in response to a comparison of the second ratio to the second threshold which determines that the movement exceeds the second threshold.
[0009] In yet another embodiment, the indication of movement received indicates at least one of applying or modifying constraints on a component. According to such embodiments, applying or modifying constraints causes the component to move from a starting position to a final position. In one embodiment, evaluating movement against at least one threshold includes calculating a ratio between (i) the length between the starting position and the final position and (ii) the geometric properties of the bounding box. According to one such embodiment, evaluating movement against at least one threshold includes (i) comparing the ratio to at least one threshold, and (ii) determining, in response to comparing the ratio to at least one threshold, that the movement has exceeded at least one threshold.
[0010] In one embodiment, the presented notice includes an indication that a component has traveled an excessive distance.
[0011] In another embodiment, the presented notification includes an option to undo the movement. One such embodiment further includes receiving an indication to undo the movement in response to the presented notification, and returning the component to its starting position in response to receiving the indication to undo the movement.
[0012] Another embodiment for detecting excessive component movement within a CAD assembly includes displaying a CAD assembly containing multiple components in a computer interface and receiving an indication that a movement has begun. In response to receiving an indication that a movement has begun, such an embodiment continues by determining a bounding box encompassing the displayed CAD assembly and tracking the movement of each moving component of the multiple components. In response to receiving an indication that a movement has stopped, the embodiment continues by determining, based on the tracking, the maximum movement among the movements of each moving component of the multiple components. Based on the bounding box, the embodiment evaluates the maximum movement against at least one threshold and, in response to evaluating and determining that the maximum movement exceeds at least one threshold, continues by presenting a notification to the user in the computer interface.
[0013] In a further embodiment, tracking the movement of each moving component of a plurality of components includes storing the starting position and corresponding ending position of each moving component in a data structure.
[0014] In another embodiment, determining the maximum movement includes using a data structure, calculating the length of the movement as the distance between each starting position and the corresponding ending position, and determining the maximum movement as the movement with the longest movement length.
[0015] Another embodiment relates to a computer implementation system for detecting the movement of excess components within a CAD assembly. The system includes a processor and memory storing computer code instructions. In such an embodiment, the processor and memory are configured to use computer code instructions to cause the system to implement any embodiment or combination of embodiments described herein.
[0016] Another exemplary embodiment relates to a computer program product for detecting the movement of excess components within a CAD assembly. The computer program product includes a non-temporary computer-readable medium on which computer code instructions are stored. When executed by a processor, the computer code instructions are configured to cause equipment associated with the processor to implement any embodiment, or combination of embodiments, described herein.
[0017] It should be noted that embodiments of the Method, System, and Computer Program Product may be configured to implement any embodiment or combination of embodiments described herein. [Brief explanation of the drawing]
[0018] The foregoing will become clear from the following more specific description of the exemplary embodiments, as similar reference letters throughout the different figures are illustrated in the accompanying drawings to refer to the same parts. The drawings are not necessarily to exact scale and are intended to emphasize that they illustrate embodiments.
[0019] [Figure 1A] The following exemplifies a technical problem solved by the embodiment. [Figure 1B] The following exemplifies a technical problem solved by the embodiment. [Figure 1C] The following exemplifies a technical problem solved by the embodiment. [Figure 1D] The following exemplifies a technical problem solved by the embodiment. [Figure 1E] The following exemplifies a technical problem solved by the embodiment. [Figure 2] This flowchart illustrates a computer implementation method for detecting excessive movement of components within a CAD assembly, according to one embodiment. [Figure 3A] An example of a bounding box that may be used by the embodiment to detect excessive component movement is shown. [Figure 3B]An example of a bounding box that can be utilized by an embodiment to detect excessive movement of components is shown. [Figure 4] FIG. 4 is a flowchart showing a method for detecting excessive movement of components according to another embodiment. [Figure 5] FIG. 5 shows a computer network or similar digital processing environment in which an embodiment can be implemented. [Figure 6] FIG. 6 is a schematic block diagram showing an example of the internal structure of a computer in the environment of FIG. 5. DETAILED DESCRIPTION OF THE INVENTION
[0020] The description of exemplary embodiments will be set forth below.
[0021] Embodiments provide functionality for detecting excessive movement of components within a computer-based model assembly, e.g., for detecting unwanted excessive movement of parts that make up a displayed CAD assembly.
[0022] FIGS. 1A - 1E show exemplary technical problems of unwanted excessive movement of components in a 3D modeling space solved by the embodiments disclosed herein across views 100a - 100e.
[0023] FIG. 1A is a view 100a of a graphical user interface of a CAD assembly 106 including a plate 101 (having round holes 103 and horizontal slots 104) and a bolt 102. View 100a is an example of a 3D modeling space of a CAD software application where a user can design real-world objects such as an automobile.
[0024] View 100b in Figure 1B illustrates the application of a concentricity constraint to bolt 102, where bolt 102 is constrained to hole 103, i.e., bolt 102 and hole 103 must be concentric. In view 100b, bolt 102 is not fully defined, i.e., it moves freely along the concentric axis 105 of the round hole 103.
[0025] To continue with this exemplary embodiment, the user rotates view 100b in Figure 1B to an orientation that is normal (or nearly normal) to axis 105. View 100c in Figure 1C shows this rotated view of assembly 106. To continue (as shown in view 100d in Figure 1D), the user attempts to move bolt 102 to the left out of round hole 103 (indicated by arrow 111) and position bolt 102 on horizontal slot 104. The user may not realize that bolt 102 was previously constrained by hole 103. As shown in view 100d, from the user's viewpoint, the move appears successful, and bolt 102 appears to have moved only a small distance, for example, the length of arrow 111.
[0026] However, view 100e in Figure 1E shows that bolt 102 has moved unintentionally by a considerable distance (indicated by arrow 121). After moving bolt 102, the user can rotate the view direction, as shown in Figure 1D, and discover that bolt 102 has moved an unexpectedly long distance away from plate 101. In view 100e, arrow 111 indicates the on-screen movement of the bolt (to the left from the round hole 103 to the horizontal slot 104 in Figure 1D), and arrow 121 represents the unintentional approximate movement of bolt 102 in 3D space (i.e., the coordinate system of the CAD assembly). This movement 121 in 3D space is caused by the concentricity constraint of bolt 102 along axis 105. In particular, to satisfy the concentricity constraint, the bolt must move a distance 121 in 3D space of assembly 106.
[0027] In the embodiments shown in Figures 1A-1E, the view direction, which involves large unintended movements, is far enough from the normal to axis 105 to make this problem manageable for the user. The user can see the entire assembly (even in view 100e) and pull the bolt 102 back to the desired position. However, if the angle between the view direction and axis 105 were sharper, the distance moved by the bolt 102 in 3D space of assembly 106 (arrow 121) would be very large compared to the movement on screen (arrow 111). In these extreme cases, the user may encounter several problems.
[0028] One of these problems arises when the user selects to rotate the assembly's view center. When this rotation is selected, the assembly is positioned at the center of the bounding box for the entire assembly. This bounding box encompasses all components, and therefore the center of the bounding box is shifted approximately midway between components that have moved at extreme distances. This makes navigating the rotational behavior of the model diagram unexpected and difficult, as small view rotations are amplified by the distal rotation center. Furthermore, when zooming outward to include the entire assembly on the screen (e.g., zoom and fit), the zoom level may become too far away, causing components to become smaller than a single pixel on the computer screen, making the assembly appear empty. Embodiments can solve these problems and notify the user of large movements and excessive movements. This has a significant ergonomic impact by greatly improving the user experience and eliminating the need for excessive user interaction to correct the view.
[0029] Figure 2 is a flowchart showing a computer implementation method 200 for detecting excessive component movement in a CAD assembly according to one embodiment. Method 200 is performed by a computer, and therefore, its functionality and effective operation, such as steps 201-205, can be performed automatically by one or more digital processors. Furthermore, Method 200 can be performed using any computer device or combination of computing devices known in the art. Among other embodiments, Method 200 can be performed in particular using the computer system environment described below in connection with Figure 5 and the computer system described below in connection with Figure 6.
[0030] Method 200 begins in step 201 by displaying a CAD assembly containing multiple components in a computer interface. Next, in step 202, a bounding box encompassing the displayed CAD assembly is determined. Then, in step 203, a display of the movement of one of the multiple components (e.g., bolt 102) from its starting position to its ending position is received. In step 204, based on the bounding box and the received display of movement, the movement is evaluated with respect to at least one threshold. In response to evaluation 204, where it is determined that the movement exceeds at least one threshold, Method 200 presents a notification 205 to the user in the computer interface.
[0031] The CAD assembly displayed in step 201 may be any computer-based model known to those skilled in the art. Furthermore, the CAD assembly may be configured to be displayed in response to user interaction. Moreover, the CAD assembly may be displayed within the interface of an existing CAD / computer-based design application, and this existing application may be modified to implement method 200.
[0032] In step 202, the bounding box may be determined using methodologies known to those skilled in the art. Furthermore, the bounding box determined in step 202 may be the smallest bounding box that encompasses all of the components of the shown assembly, e.g., the elements. An exemplary bounding box 303 that may be determined in step 202 will be described with reference to Figure 3A.
[0033] The movement indication received in step 203 may represent any form known to those skilled in the art. For example, the movement indication may be the position of a component stored in the data structure received in step 203, e.g., a change in 3D space. Furthermore, in one embodiment, the movement indication may be the output from a constraint solver. Furthermore, the movement indication may indicate that a component was moved directly, i.e., moved by a direct user action, e.g., a drag action. In contrast, the received movement indication 203 may indicate that a component was moved indirectly, i.e., by a user action where the action was not a movement-specific action, e.g., caused by the user modifying or creating constraints and implementing constraints. According to one embodiment, the movement indication received in step 203 indicates a drag action on a component in a computer interface (e.g., using a computer cursor, e.g., click, drag, and release). In another embodiment, the indication of movement received in step 203 may indicate at least one of applying or modifying constraints on a component, wherein applying or modifying constraints moves the component from a starting position to a final position.
[0034] In an embodiment in which the movement indication received in step 203 indicates a drag operation, evaluating the movement against at least one threshold in step 204 may be configured to include calculating a first ratio and a second ratio. In one embodiment, the first ratio is the ratio between (i) the length between the start and end positions of the component and (ii) the geometric characteristics of the bounding box determined in step 202 (e.g., the diagonal size of the bounding box). Furthermore, in such an embodiment, the second ratio is the ratio between (i) the length between the start and end positions of the component and (ii) the length of the drag operation. To continue, in such an embodiment, at least one threshold may be configured to include a first threshold and a second threshold, and evaluating the movement against at least one threshold may be configured to include (i) comparing the first ratio to the first threshold, (ii) comparing the second ratio to the second threshold, and (iii) determining that the movement exceeds the second threshold in response to comparing the first ratio to the first threshold, and determining that the movement exceeds at least one threshold in response to comparing the second ratio to the second threshold. Importantly, these embodiments identify unintentionally large component movements. Specifically, the “first ratio” ((i) the ratio between the length between the component’s start and end positions and (ii) the geometric properties of the bounding box) may identify larger movements, but the configuration may flag intentional large movements if only the “first ratio” is considered. These embodiments avoid notifying the user of intentional large movements by determining and evaluating a “second ratio” ((i) the ratio between the length between the component’s start and end positions and (ii) the length of the drag operation). This second ratio allows these embodiments to identify movements that are likely to be unintentionally large by considering the ratio between the distance of movement on the screen from the user’s viewpoint (drag length) and the distance of movement of the component itself in three-dimensional space (length between the start and end positions).
[0035] Furthermore, instead of using the length between the start and end positions, these embodiments may instead consider a second bounding box that encloses the CAD assembly when the component is at the end position, for example, a bounding box 311 as described in this disclosure with reference to Figure 3B. In such exemplary embodiments, the first threshold may be determined to be exceeded if the size of the bounding box after the component has reached its end position is five times larger than the size of the bounding box while the component is at the start position. Furthermore, in exemplary embodiments, the second threshold may be determined to be exceeded if the length of movement in 3D space (i.e., the length between the start and end positions) is ten times larger than the length of the drag operation.
[0036] According to another embodiment, the indication of movement received in step 203 indicates at least one of applying or modifying constraints. In such embodiments, evaluating movement against at least one threshold may include calculating a ratio between (i) the length between the start and end positions of the component and (ii) the geometric properties of the bounding box. Furthermore, evaluating movement against at least one threshold in step 204 may include comparing the ratio (of the length between the start and end positions of the component and the geometric properties of the bounding box) to at least one threshold, determining that the ratio exceeds at least one threshold, and determining that the movement exceeds at least one threshold.
[0037] According to one embodiment, the notification presented in step 205 may include an indication that the component has moved an excessive distance. Furthermore, according to one embodiment, the presented notification may include an option to undo the movement. Furthermore, such embodiments may include receiving an indication to undo the movement (e.g., from the user) in response to the presented notification, and returning the component to its starting position in response to receiving the indication to undo the movement.
[0038] Figure 3A shows an interface 300 that illustrates an exemplary bounding box 303, which may be determined and utilized by the embodiment. For example, the bounding box may be determined in step 202 and utilized in step 204 of method 200. Interface 300 includes a CAD model assembly 307, which includes a bolt 301 constrained along an axis 305 and a plate 302 containing a circular hole 304 and a horizontal slot 306. In this example, the bounding box 303 is a minimum cube that encompasses the assembly 307, i.e., fits both the plate 202 and the bolt 201, as first shown in interface 300.
[0039] Figure 3B illustrates an interface 310 that displays the assembly 307 after the user has moved the bolt 301 so that it is above the horizontal slot 306 (similar to the examples described above in this specification with reference to Figures 1A-1E). Furthermore, the interface 310 depicts a bounding box 311 that may be determined and utilized by the embodiment, for example in step 204 of Method 200. In the interface 301, which is unknown to the user, the bolt 301 is constrained to the axis 305 so that the bolt 301 is concentric with the hole 304. Thus, when the bolt 301 moves above the slot 306, the bolt 301 has moved an unexpectedly long distance away from the plate 302. When the bolt is in its final position (which is the result of the movement), the embodiment may be configured to calculate the bounding box 311. The resulting bounding box 311 is a minimum cube that encompasses the assembly 307, i.e., fits both the plate 302 and the bolt 301 after the movement. You can see that the bounding box 311 is considerably larger than the bounding box 303 to include the modified assembly 307 shown in Figure 3B. The bounding boxes 303 and 311 can be used to determine that the movement of the bolt 301 from the starting position shown in Figure 3A to the final position shown in Figure 3B exceeds at least one threshold.
[0040] CAD systems often use constraint systems (e.g., MATE in SOLIDWORKS®) to control the relative positions of assembly components. Constraints may be managed, for example, by a constraint solver. A constraint solver may be a "black box" solver in that the CAD system inputs constraints and associated geometry from the assembly, as well as any positional changes, and the solver returns a transformation that instructs the CAD system where to move the components within the assembly's coordinate system so that the constraints are satisfied. Dragging a component may consist of a loop in which user input is fed into the solver, which calculates the updated positions of the affected components within the assembly. The CAD system applies these positions, which is then repeated until the user stops dragging. Embodiments may detect when the movement of a component caused by one or more constraints and / or dragging actions is excessive. Such embodiments may be configured to receive data on the movement from a constraint solver or dragging solver and use this data to determine whether the movement is excessive.
[0041] To detect when an unusually large output movement occurs, one embodiment considers at least two measurements. In such embodiments, the first measurement considered may be the maximum distance moved by any component at the end of the drag, relative to the bounding box of the assembly at the start of the drag. In one embodiment, the bounding box may be oriented on regular X, Y, and Z axes, even if a smaller bounding box with alternative orientations is possible. Furthermore, the second measurement may be the ratio of the maximum distance moved by any component to the length of cursor movement on the screen.
[0042] To calculate these measurements, during the drag, one embodiment maintains a list of moving components, as well as their starting and current positions. When the drag is complete, such embodiments examine the list to determine which component has the greatest movement and calculate the length of that movement.
[0043] An exemplary embodiment first displays a CAD assembly comprising multiple parts in a computer interface and receives an indication that a movement has begun. In response to receiving the indication of a movement, such an embodiment determines a bounding box encompassing the displayed CAD assembly and tracks the movement of each moving component of the multiple components. Next, an indication that a movement has stopped is received. In response to receiving the indication that a movement has stopped, such an embodiment: (1) determines the maximum movement among the movements of each moving component of the multiple components based on the tracking; (2) evaluates the maximum movement against at least one threshold based on the bounding box; and (3) presents a notification to the user in the computer interface in response to evaluating and determining that the maximum movement exceeds at least one threshold.
[0044] According to one embodiment, tracking the movement of each moving component of a plurality of components may involve storing the starting position and corresponding ending position of each moving component in a data structure. According to one embodiment, determining the maximum movement may involve using the data structure to calculate the length of the movement as the distance between each starting position and the corresponding ending position. Such embodiments determine the maximum movement as the movement with the longest movement length.
[0045] Figure 4 is a flowchart illustrating a method 400 for detecting excessive component movement according to one embodiment. Method 400 tracks moving components by maintaining a list of moving components in a CAD assembly, as well as the starting and current positions of the components. Once the dragging is complete, the embodiment of Method 400 inspects the list to determine which components have the greatest movement and calculates the size of the movement.
[0046] Method 400 begins in step 401 by receiving an indication that a drag operation is to begin. In step 401, the drag solver may be initialized. Next, in step 402, the bounding box of the assembly is determined and stored in memory. Next, in step 403, the drag input is updated as the drag operation is performed (by capturing drag input from the user provided via input such as a computer mouse, keyboard, or touchscreen input). Method 400 can return from step 409 to step 403 and continue updating the drag input as needed. From step 403, Method 400 sends the drag input to the solver in step 404, and the solver determines a transformation matrix to determine the movement of the components in 3D space. For example, in one embodiment, the transformation matrix determined in step 404 is a 3x3 matrix A. When matrix A is applied to a ternary vector x representing the position of a point in coordinate space, the resulting x', defined as x'=Ax, is the new position of x that is both transformed and rotated when applied to higher-dimensional geometry (e.g., a line from point x1 to point x2). In step 405, the position of the component is updated in the assembly using the transformation determined by the solver in step 404. Next, in step 406, method 400 checks whether the new component has moved. If the new component has not moved in step 406, i.e., in response to "no", method 400 moves to step 408. If the new component has moved in step 406, i.e., in response to "yes", method 400 moves to step 407 and adds the new component and its initial position to the list of moved components. This list of moved components may be a data structure stored in memory.
[0047] To continue, after step 407 and / or step 406, method 400 moves to step 408, where the position of the component (e.g., X, Y, Z coordinates) is updated in the list of components to be moved. From step 408, method 400 moves to step 409, which checks whether a drag operation is still being performed. In one embodiment, a single drag operation may be a series of mouse movements performed while a computer mouse button is clicked down while dragging a component. The drag is considered complete when the computer mouse button is released. Thus, in one embodiment, step 409 checks whether the mouse button has been released. In another embodiment, the configuration may use the computer keyboard to perform the drag operation. In such embodiments, the drag operation may be a series of movements performed while holding down a keyboard key, and the drag operation is considered complete when the keyboard key is released. Thus, in such embodiments, step 409 checks whether the keyboard key has been released. If the component is still being dragged, i.e., if the answer in step 409 is "yes", then method 400 returns to step 403 and continues from step 403. If the component is no longer being dragged, i.e., if the answer in step 409 is "no" (i.e., the component has stopped moving), then method 400 proceeds to step 410, where the bounding box and drag ratio are calculated. According to one embodiment, the bounding box ratio determined in step 410 is defined as the ratio between the maximum component movement length from each of the moving components and the diagonal size of the bounding box determined and stored in step 402. Furthermore, it should be noted that the bounding box ratio may also be the ratio between the diagonal of the bounding box after the drag is complete, for example, between bounding box 311 and the initial bounding box. The second ratio determined in step 410 is the drag ratio, defined as the ratio between the maximum component movement length and the length of the drag input. To continue, method 400 evaluates whether the ratio calculated in step 410 exceeds a threshold.In an exemplary embodiment, a movement is considered large if the bounding box ratio is greater than 5 and the drag ratio is greater than 10. If both ratios exceed the threshold, i.e., if the answer is "yes" in step 412, method 400 proceeds to step 413, where both an excessive warning and a prompt to undo the movement are displayed to the user. From step 413, method 400 proceeds to step 414, where method 400 ends. If the threshold is not exceeded, i.e., if the answer is "no" in step 412, method 400 ends in step 414.
[0048] According to an embodiment of Method 400, a ratio (one of the bounding box ratio and the drag ratio) exceeding a threshold is not considered a large movement. This allows the user to drag components far outside the original bounding box if the large movement is apparent to the user. Such movements are reflected by lower drag ratios.
[0049] In one embodiment, when an assembly is displayed, a bounding box enclosing the assembly is determined. Then, a movement display is received. In embodiments where the movement display is a direct movement, e.g., a click, drag, and release action, the bounding box ratio and drag ratio are used to determine whether the movement is excessive. In another embodiment where the movement display is an indirect movement, e.g., a movement resulting from the application or modification of a constraint, the movement is considered excessive if the length of the movement of the component relative to the original bounding box (or the bounding box when the component is in its final position) exceeds a threshold.
[0050] The embodiment may be configured to identify excessive component movement in the modeling space, e.g., three-dimensional (3D) modeling space, caused by assembly constraints during component manipulation. The embodiment provides detection and arbitrary correction of excessive component movement caused by effective assembly constraint solutions that are imperceptible to the user while moving or constraining components. For example, a user of 3D modeling software may intend to move a particular component in a model / assembly, but due to modeling constraints, for example, the particular component may be unintentionally repositioned to a point in the assembly that is relatively far from part of the assembly. This result is likely unintended by the user and can pose problems when navigating the model. For example, returning a component to a desired position may require significant ergonomic strain and the movement of multiple users, e.g., via a pointing device. The embodiment prevents this ergonomic strain.
[0051] The embodiments may detect scenarios where component movement is excessive. In this context, excessive may mean that the movement of a component in the 3D modeling space is disproportionately large compared to the movement of the component on screen, for example, the distance the component is dragged from the perspective of the user performing the on-screen movement. In these embodiments, the system may be configured to receive an on-screen warning if an internally set threshold is exceeded. The warning may be configured to alert the user that the component has moved an extreme distance. This may be beneficial because the user may not realize that excessive movement has occurred until they rotate the view direction. The presented notification may be configured to present the user with a clickable option to undo the movement of the component that triggered the warning. According to one embodiment, the warning may be passive to the user, i.e., configured to be ignored.
[0052] The embodiments may be configurations implemented in existing software and CAD and computer-aided engineering (CAE) platforms. For example, several embodiments can be implemented, among other examples, using the configurations and functions of the SolidWorks® software of Dassault Systemes SolidWorks Corporation, the applicant and assignee.
[0053] Figure 5 is a schematic diagram of a computer network in which an embodiment may be implemented. The client computer / device 50 and server computer 60 provide processing, storage, and input / output (I / O) devices for running application programs and the like. The client computer / device 50 can also link to other computing devices, including other client devices / processors 50 and server computers 60, via a communication network 70. The communication network 70 can be part of a remote access network, a global network (e.g., the Internet), a collection of computers worldwide, a local area or wide area network, and a gateway that communicates with each other using its respective protocol (e.g., TCP / IP, Bluetooth®, etc.). Other electronic device / computer network architectures are also suitable.
[0054] Figure 6 is a block diagram illustrating an exemplary embodiment of a computer node (e.g., a client processor / device 50 or a server computer 60) within the computer network 70 of Figure 5. Each computer node 50, 60 contains a system bus 79, which is a set of hardware lines used for data transfer between components of a computer or processing system. The system bus 79 is essentially a shared conduit that connects various different elements of a computer system (e.g., processors, disk storage, memory, I / O ports, network ports, etc.) and enables information transfer between these elements. An I / O device interface 82 is connected to the system bus 79 for connecting various input / output devices (e.g., keyboards, mice, displays, printers, speakers, etc.) to the computer nodes 50, 60. A network interface 86 allows the computer nodes to connect to various other devices connected to the network (e.g., network 70 in Figure 5). The memory 90 is provided with volatile storage for computer software instructions 92a and data 94a used to implement embodiments of the present disclosure. The disk storage 95 provides non-volatile storage for computer software instructions 92b and data 94b used to implement embodiments of the present disclosure. A central processing unit 84 is also connected to the system bus 79 and provided for executing computer instructions.
[0055] In one embodiment, the processor routines 92a-92b and data 94a-94b are a computer program product (generally referred to as 92) comprising a computer-readable medium (e.g., a removable storage medium such as a DVD-ROM, CD-ROM, diskette, or tape) that provides at least a portion of the software instructions for the disclosed system. The computer program product 92 can be installed by any preferred software installation procedure, as is well known in the art. In another embodiment, at least a portion of the software instructions may also be downloaded via cable, communications, and / or wireless connections. In yet another embodiment, the program of the Disclosure is a computer program propagated signal product embodied in a propagated signal on a propagated medium (e.g., radio waves, infrared waves, laser waves, sound waves, or electrical waves propagated over a global network such as the Internet or other networks). Such carrier medium or signal provides at least a portion of the software instructions for the routines / programs 92 of the Disclosure.
[0056] In alternative embodiments, the propagated signal is an analog carrier wave or a digital signal carried on a propagation medium. For example, the propagated signal may be a digital signal propagated over a global network (e.g., the Internet), a communication network, or another network (such as network 70 in Figure 5). In one embodiment, the propagated signal is a signal transmitted over a period of time via the propagation medium, such as instructions for a software application transmitted in packets over a network over a period of milliseconds, seconds, minutes, or more. In another embodiment, the computer-readable medium of the computer program product 92 is a propagation medium that the computer system 50 can receive and read, for example, by receiving the propagation medium and identifying the propagated signal embodied within the propagation medium, as described above for the computer program propagated signal product.
[0057] Generally, the terms "carrier medium" or "transient carrier" encompass the aforementioned transient signals, propagated signals, propagation mediums, storage mediums, and so on.
[0058] In other embodiments, the program product 92 may be implemented as so-called Software as a Service (SaaS), or as other installations or communications supporting the end user.
[0059] Embodiments or aspects thereof may be implemented in the form of hardware, including but not limited to hardware circuits, firmware, or software. When implemented in software, the software may be stored on any non-temporary computer-readable medium configured to allow a processor to read the software or a subset of its instructions. The processor is then configured to execute instructions and operate a device or to cause a device to operate in the manner described herein.
[0060] Furthermore, hardware, firmware, software, routines, or instructions may be described herein as performing specific operations and / or functions of a data processor. However, naturally, such descriptions included herein are merely for convenience, and such operations are actually the responsibility of the computing device, processor, controller, or other device that performs the firmware, software, routines, instructions, etc.
[0061] Naturally, flowcharts, block diagrams, and network diagrams may contain more or fewer elements, be arranged differently, or be represented differently. However, even more naturally, a particular implementation may carry out in a particular way the number of block diagrams and network diagrams, as well as the number of block diagrams and network diagrams illustrating the execution of the embodiment, are determined.
[0062] Therefore, other embodiments may also be implemented in various computer architectures, physical computers, virtual computers, cloud computers, and / or some combination thereof, and thus the data processors described herein are for illustrative purposes only and not to limit the embodiments.
[0063] While exemplary embodiments have been specifically shown and described, those skilled in the art will understand that various modifications of form and detail can be made therein without departing from the scope of embodiments included in the appended claims.
[0064] For example, the foregoing description and details of the embodiments refer to, but are not limited to, the tools and platforms of the applicant and assignee (Dassault Systemes Americas Corporation) and Dassault Systemes for illustrative purposes. Other similar tools and platforms are also suitable.
[0065] All patents, published applications, and references cited herein are incorporated in their entirety by reference.
Claims
1. A computer implementation method for detecting excessive component movement in a computer-aided design (CAD) assembly, wherein the method is performed by a processor, In a computer interface, displaying a CAD assembly comprising multiple components, Determining the bounding box that encloses the displayed CAD assembly, Receiving an indication of the movement of one of the multiple components from the starting position to the final position, Evaluating the movement against at least one threshold based on the bounding box and the display of the received movement, In response to the evaluation and determination that the movement exceeds the at least one threshold, a notification is presented to the user in the computer interface. A method that includes [a certain feature].
2. The method according to claim 1, wherein the received movement indication indicates a drag operation on the component in the computer interface.
3. Evaluating the movement with respect to at least one threshold means (i) Calculate a first ratio between the length between the starting position and the ending position and (ii) the geometric characteristics of the bounding box, (i) Calculate a second ratio between the length between the starting position and the final position and (ii) the length of the drag operation, The method according to claim 2, comprising:
4. The at least one threshold comprises a first threshold and a second threshold, and the movement relative to the at least one threshold is evaluated as follows: Comparing the first ratio with the first threshold, Comparing the aforementioned second ratio with the aforementioned second threshold, In response to comparing the first ratio to the first threshold which is determined to exceed the first threshold, and in response to comparing the second ratio to the second threshold which is determined to exceed the second threshold, it is determined that the movement exceeds the at least one threshold. The method according to claim 3, comprising:
5. The method according to claim 3, wherein the geometric characteristics of the bounding box are the diagonal size of the bounding box.
6. The method according to claim 1, wherein the received indication of movement indicates at least one of applying or modifying a constraint to the component, and applying or modifying the constraint moves the component from the starting position to the final position.
7. Evaluating the movement with respect to at least one threshold means (i) Calculate the ratio between the length between the starting position and the ending position and (ii) the geometric characteristics of the bounding box, The method according to claim 6, comprising:
8. Evaluating the movement with respect to at least one threshold means The ratio is compared with the at least one threshold, The ratio is compared with the at least one threshold, and in response to determining that it exceeds the at least one threshold, the movement is determined to exceed the at least one threshold. The method according to claim 7, comprising:
9. The method according to claim 1, wherein the notification provided includes an indication that the component has traveled an excessive distance.
10. The aforementioned notification includes an option to reverse the movement, and the method is In response to the aforementioned notification, an indication is received to reverse the movement, In response to receiving the indication that the aforementioned movement should be reversed, the component is returned to the starting position, The method according to claim 1, further comprising:
11. A computer implementation method for detecting excessive component movement in a computer-aided design (CAD) assembly, wherein the method is performed by a processor, The computer interface displays a CAD assembly consisting of multiple components, Receiving an indication that a movement has started, In response to receiving the indication that the movement has started, Determining the bounding box that encloses the displayed CAD assembly, Tracking the movement of each movable component of the aforementioned plurality of components, Receiving an indication that the aforementioned movement has stopped, In response to receiving the indication that the aforementioned movement has stopped, Based on the tracking, the maximum movement of each moving component of the plurality of components is determined. Based on the bounding box, evaluate the maximum movement relative to at least one threshold, In response to the evaluation and determination that the maximum movement exceeds at least one threshold, a notification is presented to the user in the computer interface. A method that includes [a certain feature].
12. Tracking the movement of each of the aforementioned multiple components is: The method according to claim 11, further comprising storing the starting position and corresponding final position of each movable component in a data structure.
13. Determining the maximum movement mentioned above is, Using the aforementioned data structure, the length of the movement is calculated as the distance between each starting position and the corresponding final position, The maximum movement is determined as the movement with the longest length, The method according to claim 12, comprising:
14. A computer-aided design (CAD) assembly computer implementation system for detecting excessive component movement, wherein the system: Processor and A processor and a memory storing computer code instructions are provided, and the processor and the memory, by the computer code instructions, Displaying a CAD assembly containing multiple components within a computer interface, Determining the bounding box that encloses the displayed CAD assembly, Receiving an indication of the movement of one of the multiple components from the starting position to the final position, Evaluating the movement against at least one threshold based on the bounding box and the display of the received movement, In response to the evaluation and determination that the movement exceeds the at least one threshold, a notification is presented to the user in the computer interface. A system configured to perform a certain action.
15. The system according to claim 14, wherein the received movement indication indicates a drag operation on the component in the computer interface.
16. In evaluating the movement with respect to at least one threshold, the processor and the memory, by computer code instructions, (i) Calculate a first ratio between the length between the starting position and the ending position and (ii) the geometric characteristics of the bounding box, (i) Calculate a second ratio between the length between the starting position and the final position and (ii) the length of the drag operation, The system according to claim 15, configured to perform the following.
17. The at least one threshold comprises a first threshold and a second threshold, and when evaluating the movement relative to the at least one threshold, the processor and the memory, by computer code instructions, Comparing the first ratio with the first threshold, Comparing the aforementioned second ratio with the aforementioned second threshold, In response to comparing the first ratio to the first threshold which is determined to exceed the first threshold, and in response to comparing the second ratio to the second threshold which is determined to exceed the second threshold, it is determined that the movement exceeds the at least one threshold. The system according to claim 16, configured to perform the following:
18. The system according to claim 14, wherein the received indication of movement indicates at least one of applying or modifying constraints to the component, and applying or modifying constraints moves the component from the starting position to the final position.
19. In evaluating the movement with respect to at least one threshold, the processor and the memory, by computer code instructions, (i) Calculate the ratio between the length between the starting position and the ending position and (ii) the geometric characteristics of the bounding box. The system according to claim 18, configured to perform the following.
20. In evaluating the movement with respect to at least one threshold, the processor and the memory, by computer code instructions, The ratio is compared with the at least one threshold, The ratio is compared with the at least one threshold, and in response to determining that it exceeds the at least one threshold, the movement is determined to exceed the at least one threshold. The system according to claim 19, configured to perform the following: