How to propose matches for user-selected modeling components
The method automates the identification of potential mates in CAD assemblies by analyzing component geometry, reducing manual effort and improving assembly efficiency through smart mate solver suggestions.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- DASSAULT SYSTEMES SOLIDWORKS CORP
- Filing Date
- 2022-02-02
- Publication Date
- 2026-05-29
AI Technical Summary
The process of manually matching components in computer-aided design (CAD) assemblies is cumbersome and time-consuming, especially for larger assemblies with numerous mates, requiring manual selection and alignment of geometric surfaces, which can be error-prone and inefficient.
A method that automatically identifies potential mates by analyzing the geometry of a dragged component and its surroundings, proposing matching solutions through a smart mate solver, allowing users to accept or reject these suggestions with a one-shot mating process.
Reduces the manual effort required to specify mates, enhancing efficiency and speed by automating the identification and alignment of components, thus simplifying the assembly process.
Smart Images

Figure 0007867343000006 
Figure 0007867343000007 
Figure 0007867343000008
Abstract
Description
Technical Field
[0001] Cross - reference to Related Applications This application claims the benefit of priority to Indian Patent Application Publication No. 202111005037, titled "Method for Suggesting a Pairing for a User Selected Modeled Component", filed on February 5, 2021. The disclosure of this prior application is hereby incorporated by reference in its entirety.
[0002] Field of the Invention The present invention relates to the modeling of physical systems, and more particularly to the simplification of iterative processes in a modeling system.
Background Art
[0003] Background of the Invention In computer - aided design (CAD) applications, components are joined to form an assembly using mates or constraints. Even a small assembly can have dozens of components and more than that number of mates. Assembling all the components in one assembly is a cumbersome task even for a small assembly and becomes even more cumbersome in the case of larger assemblies with hundreds of possible mates.
[0004] To create a mate between two specific components of an assembly, the user manipulates the two components to visually align the corresponding geometric surfaces selected by the user for the mate. When a component is selected, for example, from a list of components, the user selects the appropriate type of mate, which may involve reversing the orientation or alignment sense of one or both components. Then the user has to repeat this process for other desired mates. For example, if the user makes a mistake by selecting an incorrect geometric surface or an inaccurate alignment, the user may have to discard the attempted mate and do it again.
[0005] Currently, manually matching components involves a time-consuming process of specifying relationships between geometric entities and eliminating degrees of freedom based on geometry and relationships within the context of a 3D assembly. Experienced CAD users cite manual matching as a laborious task.
[0006] For example, when creating a mating manually, there are typically fixed components in the assembly that cannot be moved. In some implementations, a first component inserted into the assembly is shown as fixed. A second component inserted into the model has no constraints and can be freely moved and rotated within the assembly. Mating the first and second components involves manually removing existing degrees of freedom (DOF) from the second component, with the user manually rotating and translating the second component relative to the first component. This may also involve rotating the view of the entire assembly to facilitate the identification of matable surfaces. The user then continues to remove further DOF to identify the mating. This can be a lengthy process because the user moves and rotates components and updates the view of the assembly to determine whether a mating is feasible.
[0007] Previous attempts to address this problem have involved methods that generate local coordinate systems based on entity selection. In this case, the user can select two geometric entities and then select a mate type to apply between the selected entities. The local coordinate system is then aligned accordingly, thereby eliminating the necessary degrees of freedom. While this facilitates the process of creating relationships between components, it still requires the user to manually select geometry and then manually set the mate type to achieve the intended result. Therefore, the industry needs to address one or more of the aforementioned shortcomings. [Overview of the project]
[0008] Summary of the Invention Embodiments of the present invention provide a method for proposing pairings of user-selected modeling components. Briefly, the present invention relates to a method for matching a user-selected first component of a computer-aided drafting application assembly with a second component. A user drag of the first component is detected. A user pause of the drag over a predetermined period of time is detected at the pause location. Multiple first component surfaces and multiple second component surfaces are identified. The first component surfaces are compared with the second component surfaces, and a match between the first and second component surfaces is proposed.
[0009] Other systems, methods, and features of the present invention will be apparent or will become apparent to those skilled in the art by considering the following drawings and detailed description. All such further systems, methods, and features are incorporated herein, within the scope of the present invention, and are intended to be protected by the appended claims.
[0010] Brief explanation of the drawing The accompanying drawings are included to provide a further understanding of the present invention, are incorporated herein, and constitute part of this specification. The components of the drawings are not necessarily to a fixed scale, but rather are focused on clearly illustrating the principles of the present invention. The drawings illustrate embodiments of the present invention and are useful in illustrating the principles of the present invention together with the description herein. [Brief explanation of the drawing]
[0011] [Figure 1] This is a flowchart of a first exemplary embodiment of a method for automatically identifying mates between two components in a modeled assembly from a user's perspective. [Figure 2]This is a flowchart of a first exemplary embodiment of the method shown in Figure 1 for automatically identifying mates in a modeled assembly using a CAD system. [Figure 3] This figure shows an exemplary example of a user-selected component model that matches the assembly model under the first embodiment. [Figure 4] Figure 3 shows the identified faces in the diagram. [Figure 5] This figure shows the selected component dragged onto the assembly model in Figure 3. [Figure 6] This is a schematic diagram showing an example of a system for performing the functionality of the present invention. [Figure 7A] This shows an example of the first step in the flowchart in Figure 1 from a user's perspective, using the graphical interface of a CAD system. [Figure 7B] The flowchart in Figure 1 shows the subsequent steps following Figure 7A. [Figure 7C] The flowchart in Figure 1 shows the subsequent steps to Figure 7B. [Figure 7D] The flowchart in Figure 1 shows the subsequent steps to Figure 7C. [Figure 7E] The flowchart in Figure 1 shows the subsequent steps to Figure 7D. [Figure 7F] The flowchart in Figure 1 shows the subsequent steps to Figure 7E. [Figure 7G] The flowchart in Figure 1 shows the subsequent steps to Figure 7F. [Modes for carrying out the invention]
[0012] Detailed explanation The following definitions are intended to help interpret the terms that apply to the features of the embodiments disclosed herein and are intended solely to define the elements within this disclosure.
[0013] In the present disclosure, a "component list" refers to a listing of the individual parts of a two-dimensional (2D) or three-dimensional (3D) modeled assembly. In a CAD environment, the component list can be visually presented as a sidebar of a graphic window that presents a 2D or 3D rendering of the modeled assembly. The component list and the graphic window can be interactive. For example, by selecting a component in the component list, the corresponding component in the graphic window can be highlighted, and similarly, by selecting a component in the graphic window (e.g., by a mouse click), the corresponding component in the component list can be highlighted.
[0014] In the present disclosure, a "face" refers to the surface of a part of a 2D or 3D modeled assembly.
[0015] In the present disclosure, a "geometric entity" refers to a face, edge, vertex, plane, or axis of a component of a modeled assembly, such as a three-dimensional (3D) model.
[0016] In the present disclosure, a "matching pair" (of geometric entities) refers to any two geometric entities that can be operably matched to create a constraint between the two geometric entities. Thus, each matching pair is associated with the type of constraint created between them. If multiple types of constraints can be created between two components, each different type of constraint is considered to be associated with a separate matching pair.
[0017] In the present disclosure, a "constraint" refers to the restriction or removal of at least one degree of freedom of a modeled component. Generally, the mating or pairing of two components introduces at least one constraint on one or both of the mated / paired components.
[0018] In the present disclosure, a "one-shot mating" refers to a mating in which multiple constraints are introduced simultaneously.
[0019] In the present disclosure, a "solver" refers to a module configured to analyze a selected component of a modeled assembly to find a suitable match for forming a matching pair with other components of the assembly that is compatible with the selected component, based on the geometry of the other components of the assembly. The solver module may be implemented in hardware, software, or a combination of hardware and software.
[0020] In the present disclosure, "selection" of a modeled component refers to the user indicating the desired component by a user interface interaction (e.g., inter alia, a mouse / trackpad click, a touchpad tap, or a virtual touch in a virtual reality environment).
[0021] In the present disclosure, "drag" refers to a user-initiated movement of a selected modeled component of a CAD assembly. Generally, a drag results from a graphical user interface operation of the selected modeled component, where the user moves the selected modeled component, for example, by movement of a mouse / trackpad, movement of a touchpad, or a push / pull / nudge in a virtual reality (VR) environment. Generally, a drag generally occurs while the user actively interacts with an object using a user interface (e.g., by pressing a mouse / trackpad button while moving the mouse / trackpad ball). In the case of a touchpad, a drag may occur after the initial tap for selection by maintaining finger contact with the selected object. In the case of VR, a drag may occur by a pinch / grab gesture of the selected object and moving the object while it is still pinched / grabbed.
[0022] In this disclosure, “releasing” a selected or dragged component means that the user indicates the end of the dragging process by, for example, physically releasing a mouse / trackpad button, lifting a finger from a touchpad, or opening a finger after a pinch / grab gesture in VR.
[0023] In this disclosure, “pausing” a dragged component means at least a temporary pause in the movement of the dragged object, without releasing the dragged object. For example, a time interval may be defined to determine whether or not a drag pause has occurred.
[0024] In this disclosure, “presenting” a pairing means providing visual instructions for the pairing using the graphical user interface of a CAD system (for example, showing the pairing by overlaying a highlighted graphic representation of the pairing in the context of a displayed assembly).
[0025] Embodiments of the present invention will be described in detail here, with examples shown in the accompanying drawings. Wherever possible, the same reference numerals will be used in the drawings and in this specification to refer to the same or similar parts.
[0026] As described in the background technology section, mating has traditionally been formed by manually selecting geometry from a set of assembly components and manually assigning relationships (and related components) between the selected entities. In this embodiment, instead, the geometry of the dragged component is analyzed in the context of the assembly and surrounding components. Based on this analysis, the method determines possible mating solutions and proposes them to the user. The user can accept the proposed solutions, for example, by releasing the dragged component.
[0027] The embodiments described herein reduce the burden on CAD users of manually specifying mates in next-generation "smart CAD" software. Under these embodiments, when a user brings in a set of parts (components) to be assembled together, the software automatically suggests appropriate mates. This is analogous to how two magnets self-align when joined together.
[0028] Figure 1 is a flowchart of a first exemplary embodiment of method 100 for automatically identifying matches in a modeled assembly from a user's perspective. Any description or block of processes in the flowchart is understood to represent a module, segment, part of code, or step containing one or more instructions for implementing a particular logical function of the process, and it should be noted that, as will be understood by those skilled in the art, alternative implementations are within the scope of the invention, where functions may be performed in an order different from the illustrated or discussed order, including substantially simultaneous or reversed orders, depending on the functionality involved.
[0029] The first embodiment simplifies the process of matching components in a 3D assembly, where the user of the CAD system simply drags a representation of a component in the modeled assembly, and the geometry of the dragged component and the geometry around that component are analyzed to provide the user with possible matching solutions. The user drags a component in the modeled assembly, as shown by block 110. The user pauses the drag for a predetermined period, for example, about 0.5 seconds, as shown by block 120. If the solver component of the CAD system determines that there are no potential matches for the dragged component near where the drag pause occurred, the user is not presented with a smart match suggestion, as shown by block 127.
[0030] When the CAD system's solver component determines that a potential mate exists for the dragged component near the location where the drag pause occurred, the user interface may present a mate proposal for the dragged component, as shown by block 125. For example, the CAD system may provide a mate proposal as a visual representation of the dragged component mated with another component of the modeled assembly. Once a mate proposal is presented, the user may release the dragged object, as shown by block 130. When the dragged object is released, the CAD system's user interface presents a mate confirmation object, such as a dialog box, as shown by block 160, where the user can accept the mate, thereby creating a one-shot mate, as shown by block 170. If the user does not wish to accept the proposed mate, the user drags the object away from the pause location without releasing it, as shown by block 140. The CAD system's user interface then removes the mate proposal, as shown by block 150.
[0031] Using the method of this embodiment, the user does not need to manually remove degrees of freedom in order to specify the position of a component in the context of a 3D assembly, thereby providing greater efficiency and saving time.
[0032] Figures 7A–7G show examples of steps in the flowchart of Figure 1 from a user's perspective, using the graphical interface of the CAD system. As shown in Figure 7A, the CAD system displays an assembly 700 having at least one unconstrained component 710. The user clicks on the component 710 in the graphics area. As shown in Figure 7B, the user drags the unconstrained component 710 toward a destination 720 to which the component is desired to be mated. As shown in Figure 7B, the CAD system may indicate the location of the dragged component 710 using a light view, a gray view, or a transparent view, a dashed outline, or other means to indicate a temporary position.
[0033] As shown in Figure 7C, the user briefly pauses dragging component 710 (for example, hovering over the first hole 721 of the destination 720 for about 500–1200 ms, triggering the CAD system's smart mate solver to begin analyzing the dragged component 710 and the other components 720 of the assembly 700). The method used by smart mate will be described later.
[0034] The analysis performed by the smart mate solver determines the most likely location where the two components 710 and 720 will mate together. The CAD system positions the representation of component 710 in the most likely solution calculated, in this case the first hole 721, as shown in Figure 7D. The CAD system may graphically display the proposed mate, for example, using colored shading. As shown in Figures 7E-7F, assuming the snapped location is not what the user wanted, the user continues dragging towards the desired location, in this case the second hole 722. The smart mate solver determines that the second hole 722 is the proposed mate and graphically displays the proposal, for example, by "snapping" the representation of the selected component 710 to the position in the context of the proposed mate. As shown in Figure 7G, once the dragged component is in the desired location (in this case the second hole 722), the user releases the mouse to accommodate component 710 according to the proposed mate at the displayed snap location. The user may accept the proposed pairing, for example, using a confirmation user dialog box 730 displayed by the CAD system.
[0035] Figure 2 is a flowchart of a first exemplary embodiment of method 200 for automatically identifying mates in a modeled assembly by a CAD system. The CAD system detects user drags ("selected component" or "dragged component") of components in the modeled assembly, as shown by block 210.
[0036] As shown in block 220, the CAD system detects a user pause in the drag for a predetermined period, for example, about 0.5 seconds. The CAD system's solver component ("smart mate solver") searches for potential surfaces of the assembly near the current paused drag location of the dragged component to determine whether a potential mate exists for the dragged component, as shown in block 230. For example, the CAD system may identify data structures representing existing constraints on the dragged component and look for new constraints that are not yet applied to the currently dragged component.
[0037] If the CAD system's solver component determines that a potential mate exists for the dragged component near the location where the drag paused, as shown by block 240, the user interface may present a mate proposal for the dragged component, as shown by block 250. For example, the CAD system may provide the mate proposal as a visual representation of the dragged component mated with another component of the modeled assembly. Once a mate proposal is presented, the user may release the dragged object, as shown by block 260. When the dragged object is released, the CAD system's user interface presents a mate confirmation dialog, as shown by block 280, where the user can accept the proposed mate, thereby creating a one-shot mate, as shown by block 290. If the user drags the object away from the pause location, as shown by block 265, the CAD system's user interface then removes the mate proposal, as shown by block 270.
[0038] The smart mate solver analyzes a user-selected component to determine whether the selected component can be considered one part of a mateable pair. For example, as described in more detail below, the smart mate solver may analyze potential mates within a given proximity range of the selected component and calculate whether one or more surfaces of each potential mate can be feasibly mateable with the selected component.
[0039] Even if the constraints imposed by pairing are mathematically feasible, the solver may consider a potential pair unmatchable under certain circumstances. For example, if a potential pair could result in any part of the 3D model of one of its parts colliding with and entering the material of the other, the smart mate solver may determine that the potential pair is unmatchable. Similarly, the smart mate solver may determine that a potential pair is unmatchable if the introduction of a constraint results in excessive rotation in the 3D model. For example, a threshold angle of 30 degrees may be pre-selected or user-specified. Such a threshold angle can reduce the number of possible constraints, which can help the smart mate solver complete the mate calculation faster. In addition, the user may be concerned with having such a threshold so that when a person attempts to mate two real-world (physical) objects, they first orient them correctly. Furthermore, the user may not expect the smart mate solver to introduce a constraint that rotates a plug by 90 degrees.
[0040] In some embodiments, a smart mate solver may create a limited set of constraint types from a predetermined (or user-specified) set of common constraint types. While several types of constraints are supported by modern CAD software, only a subset are commonly used. For example, many CAD users may use coincident, concentric, and tangent constraints more commonly than other types. Embodiments using rarely used constraints may be unfamiliar to the user.
[0041] A smart mate solver may consider two mateable pairs to be compatible if the constraints for both mates can be applied simultaneously without contradiction. As mentioned above, before considering two pairs compatible, the solver may check for the detection of excessive rotation and collision. Each pair may pass the rotation or collision test individually, but when combined, they may fail one of the tests if, for example, the constraint between the first pair and the second pair allows the mate of the first pair and the second pair, but does not allow the mate of the first pair and the second pair simultaneously. In Figure 4, pin P1 can be paired with hole H1, and pin P2 can be paired with hole H4, but the spacing constraint between pins P1 and P2 of plug component model 310 prevents these two pairs from being paired simultaneously. Similarly, in the case of a group of compatible pairs, which includes an unordered set of mateable pairs where each member is compatible with all other members of the set, there may be cases where each pair is compatible with all other pairs, but the set as a whole is incompatible. It should be noted that the method used in this embodiment for determining mateability and constraint compatibility between geometric entities is well known and is provided by most modern CAD software.
[0042] Figure 3 shows an exemplary example of a user-selected plug component model 310 that the smart mating solver attempts to mate with the fixed assembly socket component model 330 under the first embodiment.
[0043] The smart mate solver examines the compatibility between mateable surfaces of plug component model 310 and fixed assembly socket component model 330. In this example, only two of the most commonly used constraints, coincident and concentric constraints, are allowed. As shown in Figure 4, there are several faces in the two components 310 and 330, but for brevity, we will discuss only a limited number of faces from each model, namely faces P1, P2, F1, F2 from plug component model 310 and faces F0, H1, H2, H3, H4 from socket component model 330. Here, cylindrical face P1 is mateable with any of hole faces H1, H2, H3, and H4 because a concentric constraint can be defined between them. Similarly, P2 is mateable with any of holes H1, H2, H3, and H4. P1 is not mateable with P2. P1 and P2 cannot be concentric because they belong to the same rigid model. H1 cannot mate with any of H2, H3, and H4. Since H1, H2, H3, and H4 each belong to the same rigid model, they cannot be concentric. P1 and F0 cannot mate because P1 is a cylindrical face and F0 is a planar face, making it impossible to create a coincidence or concentric constraint between P1 and F0. F0 can mate with either F1 or F2, and therefore can mate with either F1 or F2.
[0044] The smart mate solver also checks for compatibility between mateable pairs. Here, pair (P1, H3) is a mateable pair, and pair (P2, H4) is a mateable pair, but these two pairs are incompatible because the distance between holes H3 and H4 is greater than the distance between pins P1 and P2, making it impossible for both constraints to exist simultaneously. In contrast, pair (P1, H1) is a mateable pair, and pair (P2, H2) is a mateable pair, and these two pairs are compatible because it is possible for both constraints to exist simultaneously. The distance between holes H1 and H2 is the same as the distance between pins P1 and P2. The three mateable pairs (F1, F0), (P1, H1), and (P2, H2) are compatible because it is possible for all three constraints to exist simultaneously. Two matchable pairs (F1, F0) and (F2, F0) are incompatible because, although they can each generate constraints separately, it is impossible for both constraints to exist simultaneously.
[0045] The smart mate solver process begins when the user drags the plug component model 310 onto the assembly socket component model 330. The smart mate solver finds all mateable pairs of geometric entities between the two models 310 and 330 and forms groups of compatible pairs. Each group is a potential mate solution that can be suggested to the user. As described in more detail below, for each group, the smart mate solver calculates the amount of rotation and translation required and sorts the groups in order based on an assessment of the likelihood that the solution is the solution the user wants.
[0046] The smart mate solver can primarily assess the likelihood of a solution based on how close it is to the current location. Alternatively, before dragging, the user can, for example, specify a subset of geometric entities that need to be matched by selection. The smart mate solver may then prioritize the solution containing the selected geometric entities over other identified solutions.
[0047] Smart mate solvers can also leverage historical / logged data. For example, if the components to be matched have been matched before and that information is accessible in a database, the smart mate solver may prioritize these geometric entities. Smart mate solvers can also incorporate a predictive neural network for matchability, as described in U.S. Patent Application Publication 2019 / 0147317A1.
[0048] As illustrated in the example in Figure 5, the user drags a 3D model of the power plug 310 onto the model of the socket 330. Returning to Figure 4, in this example, the smart mate solver analyzes faces F1, F2, P1, P2 of the power plug and faces F0, H1, H2, H3, H4 of the socket. Other faces exist on these models, but they are omitted in this example for the sake of brevity.
[0049] Table 1 shows a list of all matchable pairs considered by the smart match solver.
[0050] [Table 1]
[0051] Next, the smart mate solver checks each pair in Table 1 to determine the group of all matchable pairs shown in Table 2.
[0052] [Table 2]
[0053] Next, the smart mate solver calculates the amount of rotation and translation of the power plug 310 relative to the socket 330 from its indicated position that is required to produce pairing. The smart mate solver filters out any groups that require excessive rotation, as shown in Table 3. For example, the smart mate solver may filter out groups where the rotation exceeds a threshold angle, for example, 30 degrees. The threshold angle may be predetermined or user-specified.
[0054] [Table 3]
[0055] Next, the smart mate solver sorts the groups of mateable pairs in order from minimum translation to maximum translation, as shown in Table 4.
[0056] [Table 4]
[0057] Table 5 shows an example of pseudocode for the process performed by the smart match solver to find compatible pairs, where "Set" is an unordered set of matchable pairs. The function GetAllCompatiblePairs(G) returns the set of matchable pairs that do not exist in G but are compatible with all pairs in G. If a given set G is empty, the function returns all matchable pairs, since there are no pairs incompatible with an empty set. The main function returns a list of sets of compatible pairs.
[0058] [Table 5]
[0059] The system for performing the functionalities described in detail above may be a computer, an example of which is shown in the schematic diagram of Figure 6. System 500 comprises a processor 502, a storage device 504, a memory 506 in which software 508 defining the functionalities described above is stored, an input / output (I / O) device 510 (or peripheral device), and a local bus or a local interface 512 enabling communication within System 500. The local interface 512 may be, but is not limited to, one or more buses or other wired or wireless connections, as known in the art. The local interface 512 may have further elements to enable communication, such as controllers, buffers (caches), drivers, repeaters, and receivers (these are omitted for simplicity). Furthermore, the local interface 512 may include address, control device, and / or data connections to enable proper communication between the components described above.
[0060] The processor 502 is a hardware device for executing software stored in memory 506. The processor 502 may be any custom-made or commercially available single-core or multi-core processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the system 500, a semiconductor-based microprocessor (in the form of a microchip or chipset), a macroprocessor, or any device for executing software instructions in general.
[0061] Memory 506 may include one or a combination of volatile memory elements (e.g., random access memory (RAM such as DRAM, SRAM, SDRAM, etc.)) and non-volatile memory elements (e.g., ROM, hard drive, tape, CD-ROM, etc.). Memory 506 may also incorporate electronic, magnetic, optical, and / or other types of storage media. Note that memory 506 may have a distributed architecture in which various components are located remotely from one another but can be accessed by the processor 502.
[0062] Software 508 defines the functionality performed by the system 500 according to the present invention. Software 508 in memory 506 may include one or more separate programs, each program containing an ordered listing of executable instructions for implementing the logical functions of system 500, as described below. Memory 506 may contain an operating system (O / S) 520. The operating system essentially controls the execution of programs in system 500 and provides scheduling, input / output control, file and data management, memory management, and communication control and related services.
[0063] The I / O device 510 may include, for example, input devices such as a keyboard, mouse, scanner, and microphone (but not limited to these). Furthermore, the I / O device 510 may also include output devices such as, for example, a printer and a display (but not limited to these). Finally, the I / O device 510 may further include devices that communicate via both input and output, such as, for example, a modulator / demodulator (modem; for accessing another device, system, or network), a radio frequency (RF) or other transceiver, a telephone interface, a bridge, a router, or other device (but not limited to these).
[0064] When the system 500 is in operation, the processor 502 is configured to execute the software 508 stored in the memory 506 in order to communicate data with the memory 506 and to generally control the operation of the system 500 according to the software 508, as described above.
[0065] During the operation of the system 500's functionality, the processor 502 is configured to execute software 508 stored in memory 506 in order to communicate data with memory 506 and to generally control the operation of the system 500 according to the software 508. The operating system 520 is read by the processor 502, possibly buffered within the processor 502, and then executed.
[0066] If System 500 is implemented in software 508, it should be noted that instructions for implementing System 500 may be used by any computer-related device, system, or method, or stored in any computer-readable medium used in conjunction with any computer-related device, system, or method. Such a computer-readable medium may, in some embodiments, correspond to either or both of memory 506 or storage device 504. In relation to this specification, computer-readable medium is an electronic, magnetic, optical, or other physical device or means that can contain or store computer programs used by or in conjunction with computer-related devices, systems, or methods. Instructions for implementing the system may be used by a processor or other such instruction execution system, apparatus, or device, or embodied in any computer-readable medium used in conjunction with a processor or other such instruction execution system, apparatus, or device. Although processor 502 has been given as an example, such an instruction execution system, apparatus, or device may, in some embodiments, be any computer-based system, processor-embedded system, or other system that can fetch instructions from and execute instructions from an instruction execution system, apparatus, or device. In relation to this specification, “computer-readable medium” can be any means capable of storing, communicating, propagating or transporting a program used by a processor or other such instruction execution system, apparatus or device, or used in connection with a processor or other such instruction execution system, apparatus or device.
[0067] Such computer-readable media may, but are not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, devices, or propagation media. More specific examples of computer-readable media (a non-exclusive list) include electrical connections with one or more wires (electronic), portable computer diskettes (magnetic), random access memory (RAM) (electronic), read-only memory (ROM) (electronic), erasable programmable read-only memory (EPROM, EEPROM, or flash memory) (electronic), optical fibers (optical), and portable compact disk read-only memory (CD-ROM) (optical). Computer-readable media may be printed paper or another suitable medium on which a program is printed, for example, by optical scanning of paper or another medium, and then compiled, interpreted, or otherwise processed in an appropriate manner as needed, and then stored in computer memory.
[0068] In alternative embodiments in which System 500 is implemented in hardware, System 500 may be implemented with any or a combination thereof of the following technologies well known in the Art: one or more discrete logic circuits having logic gates for implementing logic functions in data signals, application-specific integrated circuits (ASICs) having appropriate combinational logic gates, one or more programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.
[0069] Under the embodiments described above, the automatic mating definition can automatically eliminate several degrees of freedom in a single action, without the need for the user to manually select the geometric entities that should be involved in the connection and to specify the actual connection type. These embodiments reduce manual interaction with the software, thereby accelerating the assembly process. As a result, the assembly process is more efficient and faster than conventional methods in which the user must manually specify the individual relationships between components.
[0070] It will become apparent to those skilled in the art that various modifications and alterations to the structure of the present invention can be made without departing from the scope or spirit of the present invention. In view of the foregoing, the present invention intends to encompass such modifications and alterations, provided that they fall within the scope of the following claims and their equivalents.
Claims
1. A computer-based method for matching a user-selected first component of a computer-aided drafting (CAD) application assembly with a second component, The steps include detecting a first user drag of the first component, A step of detecting a user pause of the first user drag for a predetermined period of time at a pause location, The steps include identifying a plurality of first component surfaces and a plurality of second component surfaces, A step of checking the constraint compatibility between the plurality of first component surfaces and the plurality of second component surfaces, The steps include determining the proposed match between the first component surface and the second component surface, and Includes, A computer-based method wherein the plurality of second component surfaces are located within a predetermined proximity range of the pause location.
2. The method according to claim 1, further comprising the step of presenting the proposed match to the user.
3. The method of claim 2, further comprising the step of graphically presenting the proposed mates in the context of the assembly.
4. The method according to claim 3, further comprising the step of graphically representing the proposed match with the first component paired with the second component.
5. A step of detecting the user's release of the first component, The steps include presenting a matching user interface object and The method according to claim 1, further comprising:
6. The steps include detecting a second user drag of the first component by the user, The steps of removing the graphical presentation of the proposed agreement and The method according to claim 3, further comprising:
7. The method according to claim 1, further comprising the step of restricting a degree of freedom among a plurality of degrees of freedom of the first component.
8. The method according to claim 1, wherein the predetermined period is at least 500 ms.
9. The method according to claim 1, further comprising the step of creating a first list of matchable pairs, each matchable pair comprising a surface of the first component paired with a surface of the second component.
10. The method according to claim 9, further comprising the step of determining a plurality of groupings of the matching pairs.
11. The method according to claim 10, further comprising the step of filtering the plurality of groupings in order to generate a filtered grouping list.
12. The method according to claim 11, wherein the filtering process further comprises comparing the rotations of matchable pairs of groupings among the plurality of groupings with a rotation threshold.
13. The method according to claim 11, further comprising the step of sorting the filtered grouping list in order of translation distance.