It is provided a computer-implemented method for simulating the machining of a workpiece with a cutting tool having a cutting part and a non-cutting part. The method comprises providing a modeled volume representing the workpiece and a trajectory of the cutting tool; determining a colliding sweep of the cutting tool, wherein the colliding sweep represents the volume swept by the non-cutting front of the cutting tool when the cutting tool follows the trajectory; testing a collision with the workpiece according to the determining step. Such a method improves the simulation of the machining of a workpiece with a cutting tool.
|
8. A computer-implemented method for simulating the machining of a workpiece on a cam system, wherein the method comprises:
by a processor and associated memory:
providing in the cam system (i) a modeled volume representing a subject workpiece, (ii) a cutting tool having a cutting part, a non-cutting part, and a protective front, and (iii) a trajectory of the cutting tool;
determining a colliding sweep of the cutting tool, wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, and the dissociating motion includes determining volume swept by the protective front when the cutting tool is moving to follow the trajectory, wherein the protective front comprises a set of points of the moving cutting tool that prevents other points of the moving cutting tool from colliding with a solid at a position on the trajectory, wherein at a given time t, the protective front protectFront(t) is a subset of Sprotect defined by: protectFront(t)={xϵSprotect;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Sprotect is a boundary of the protective front non-cutting part which is not in a boundary of the cutting part tool, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t; and
testing a collision with the subject workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision.
17. A computer program product, comprising:
a non-transitory computer readable storage medium, the computer readable storage medium having instructions configured for simulating the machining of a subject workpiece with a cutting tool having a cutting part and a non-cutting part by:
providing a modeled volume representing (i) the subject workpiece and (ii) a trajectory of the cutting tool, the cutting tool having a protective front;
determining a colliding sweep of the cutting tool, wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, and the dissociating motion includes determining volume swept by the protective front when the cutting tool is moving to follow the trajectory, wherein the protective front comprises a set of points of the moving cutting tool that prevents other points of the moving cutting tool from colliding with a solid at a position on the trajectory, wherein at a given time t, the protective front protectFront(t) is a subset of Sprotect defined by: protectFront(t)={xϵSprotect;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Sprotect is a boundary of the protective front non-cutting part which is not in a boundary of the cutting part tool, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t; and
testing a collision with the subject workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision.
1. A computer-implemented method for simulating the machining of a workpiece on a cam system, wherein the method comprises:
by a processor and associated memory:
providing in the cam system (i) a modeled volume representing a subject workpiece, (ii) a cutting tool having a cutting part and a non-cutting part, the non-cutting part having a non-cutting front, and (iii) a trajectory of the cutting tool;
determining a colliding sweep of the cutting tool, wherein the colliding sweep represents volume swept by the non-cutting front of the cutting tool when the cutting tool follows the trajectory, and wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, and the dissociating motion includes determining volume swept by the non-cutting front when the cutting tool is moving to follow the trajectory at a given time t, wherein the non-cutting front comprises a set of points with instantaneous speed vectors at the given time t that are oriented towards an exterior of the moving cutting tool, wherein at the given time t, the non-cutting front Front(t) is a subset of Souter defined by:
front(t)={xϵSouter;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Souter is a boundary of the cutting non-cutting part, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t; and
testing a collision with the subject workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision.
12. A cam system for simulating machining of a workpiece comprising:
a processor coupled with memory to simulate machining of a subject workpiece with a cutting tool having a cutting part, a non-cutting part, and a protective front, the processor configured to:
provide a modeled volume representing (i) the subject workpiece and (ii) a trajectory of the cutting tool;
determine a colliding sweep of the cutting tool, wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, and the dissociating motion includes determining volume swept by the protective front when the cutting tool is moving to follow the trajectory, wherein the protective front comprises a set of points of the moving cutting tool that prevents other points of the moving cutting tool from colliding with a solid at a position on the trajectory, wherein at a given time t, the protective front protectFront(t) is a subset of Sprotect defined by:
protectFront(t)={xϵSprotect;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Sprotect is a boundary of the protective front non-cutting part which is not in a boundary of the cutting part tool, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t; and
test a collision with the workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision; and
a graphical user interface coupled with the processor, the graphical user interface configured to request the processor to simulate machining of the subject workpiece.
7. A computer program product, comprising:
a non-transitory computer readable storage medium, the computer readable storage medium having instructions configured for simulating the machining of a subject workpiece with a cutting tool having a cutting part and a non-cutting part by:
providing a modeled volume representing (i) the subject workpiece and (ii) a trajectory of the cutting tool, the non-cutting part of the cutting tool having a non-cutting front;
determining a colliding sweep of the cutting tool, wherein the colliding sweep represents volume swept by the non-cutting front of the cutting tool when the cutting tool follows the trajectory, and wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, the dissociating motion includes determining volume swept by the non-cutting front when the cutting tool is moving to follow the trajectory at a given time t, wherein the non-cutting front comprises a set of points with instantaneous speed vectors at the given time t that are oriented towards an exterior of the moving cutting tool, wherein at the given time t, the non-cutting front Front(t) is a subset of Souter defined by:
front(t)={xϵSouter;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Souter is a boundary of the cutting non-cutting part, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t; and
testing a collision with the subject workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision.
5. A cam system for simulating machining of a workpiece comprising:
a processor coupled with memory to simulate machining of a subject workpiece with a cutting tool having a cutting part and a non-cutting part, the non-cutting part having a non-cutting front, the processor configured to:
provide a modeled volume representing (i) the subject workpiece and (ii) a trajectory of the cutting tool;
determine a colliding sweep of the cutting tool, wherein the colliding sweep represents volume swept by the non-cutting front of the cutting tool when the cutting tool follows the trajectory, and wherein determining the colliding sweep comprises dissociating motion of the cutting part and motion of the non-cutting part, the dissociating motion includes determining volume swept by the non-cutting front when the cutting tool is moving to follow the trajectory at a given time t, wherein the non-cutting front comprises a set of points with instantaneous speed vectors at the given time t that are oriented towards an exterior of the moving cutting tool, wherein at the given time t, the non-cutting front Front(t) is a subset of Souter defined by:
front(t)={xϵSouter;<Rot(t)n(x),∂/∂tTraj(t)x>≥0},
wherein Souter is a boundary of the cutting non-cutting part, <u,v> denotes a scalar product between vectors u and v, Traj(t) denotes a trajectory of the cutting tool at the given time t, and Rot(t) denotes a rotation component of the trajectory at the given time t;
test a collision with the workpiece resulting from the determined colliding sweep, the testing comprising: determining whether the colliding sweep intersects the workpiece, and if the colliding sweep is determined as intersecting the workpiece, detecting a collision; and
a graphical user interface coupled with the processor, the graphical user interface configured to request the processor to simulate machining of the subject workpiece.
2. The method of
wherein determining the colliding sweep comprises determining both volume swept by the non-cutting part and volume swept by the determined protective front.
3. The method of
determining segments of the set of segments of the respective dexel that intersect the volume swept by the determined protective front,
updating the respective dexel based on the determined segments, and
evaluating if the determined segments as updated intersect the volume swept by the non-cutting part.
4. The method of
shortening a segment of minimal order that intersects the volume swept by the determined protective front,
shortening a segment of maximal order that intersects the volume swept by the determined protective front, and
removing all segments between the segment of minimal order and the segment of maximal order.
9. The method of
10. The method of
determining segments of the set of segments of the respective dexel that intersect the volume swept by the protective front,
updating the respective dexel based on the determined segments, and
evaluating if the determined segments as updated intersect the volume swept by the non-cutting part.
11. The method of
shortening a segment of minimal order that intersects the volume swept by the protective front,
shortening a segment of maximal order that intersects the volume swept by the protective front, and
removing all segments between the segment of minimal order and the segment of maximal order.
14. The system of
15. The system of
determining segments of the set of segments of the respective dexel that intersect the volume swept by the protective front,
updating the respective dexel based on the determined segments, and
evaluating if the determined segments as updated intersect the volume swept by the non-cutting part.
16. The system of
shortening a segment of minimal order that intersects the volume swept by the protective front,
shortening a segment of maximal order that intersects the volume swept by the protective front, and removing all segments between the segment of minimal order and the segment of maximal order.
|
This cutting non-cutting volume 42 44 which is also the outer boundary of the tool 40, defined in the tool referential. For example on
For a given t ϵ [0,1], let the non-cutting front of tool 40, denoted by Front(t), be the subset of Souter defined by:
Where <u, v> denotes the scalar product between vectors u and v, and Rot(t) is the rotation component of the trajectory Traj(t). In other words, Front(t) is the set of points of Souter whose instantaneous speed vector at time t is oriented toward the exterior of moving tool 40.
For example, as illustrated on
for all t. So, at t=0, Front(t) is the vertical segment 102 illustrated on
The reverse trajectory 110 from P2 to P1 induces a different Front(t=0), as illustrated on
The method may determine (S20) the “colliding sweep” as the volume swept by Front(t):
The method checks the colliding sweep against the current workpiece, as opposed to checking the non-cutting volume sweep against the current workpiece.
Now,
In a second example, the method comprises determining a protective front of the cutting tool. The protective front of the cutting tool is, when the cutting tool follows the trajectory, at a given position of the cutting tool on the trajectory, a subset of points of the cutting tool that prevent other points of the cutting tool from colliding with a solid at such position when the cutting tool follows the trajectory (should the solid have been placed at such position before the cutting tool starts to follow the trajectory). Formal formulations of the protective front will be provided later.
Determining (S20) the colliding sweep may comprise in such a case determining the volume swept by the non-cutting part and the volume swept by the protective front. Then, the method may determine a difference between said two volumes. The testing (S30) may comprise evaluating if said volume difference intersects the modeled volume, and yield a positive result if so, or a negative result otherwise. This allows a fast and robust determining (S20).
The examples are illustrated in 2D for convenience. The real is however 3-dimensional, as discussed earlier.
An implementation of the method, in this second example as well as in the first example, may be the multi-dexel model. In other words, the workpiece may be represented by a set of dexels (thereby representing a modeled volume). In other words, the modeled volume is provided as a set of dexels in this example. Each dexel (of the set of dexels) comprises a set of at least one segment. Such segments represent the intersection between a line and the workpiece.
The use of sets of dexels to represent the workpiece allows a light representation (using little memory space). This also allows a representation of the workpiece which may be easily handled. Notably, the cutting may be performed particularly efficiently when the workpiece is represented by a set of dexels, due to the data structure of a set of dexels. Indeed, design operations may be performed with high responsiveness and high robustness. Notably, operations on a set of dexels may be performed through parallel processing, on a line-by-line basis, so as to gain in efficiency. Therefore, the processor of the system may efficiently be the GPU.
The term “dexel” is known to be a shortcut for “depth element” (just as the term “pixel” is a shortcut for “picture element”). The notion of dexel has been mentioned in a large number of research papers. In the context of the method, a dexel comprises a set of at least one segment, i.e. a pair of 3D points. In an example, the modeled volume comprises at least one dexel which comprises a set of at least two segments (e.g. the initial set of dexels and/or the new set of dexels comprise(s) at least two segments). The segments of a dexel, if several, may be ordered (in such a case the dexel is a list), or unordered. The segments of a dexel represent the intersection between a line and the workpiece. In other words, considering virtual lines intersecting with the workpiece, a dexel is the set of the segments originating from a given line and that results from the computation of the intersection.
It is important to note that the sets of dexels are provided as computer-implemented data. Thus, the definitions provided above and below regarding any representation of the modeled volume have implications from a data structure point of view. For example, a segment may be provided as a pair of 3D positions (e.g. two 3D positions linked to each other). A 3D position may itself be provided as a list of three coordinates (e.g. floating points), associated to a referential 3D frame. A dexel is a set of segments, which implies that segments are linked together in a set structure. The dexels of a set of dexels may as well be linked together. Representing the modeled volume by a set of dexels, which themselves comprise a set of at least one segment, allows a fast testing (S30), as well as fast ulterior updating of the modeled volume.
Testing (S30) the collision may comprise, for a respective dexel, determining the segments of the respective dexel that intersect the volume swept by the protective front, updating the respective dexel accordingly (i.e. in function of the determined segments, i.e. by shortening and/or discarding determined dexels), and evaluating if the segments of the respective dexel as updated intersect the volume swept by the non-cutting part. Then, the method may yield a positive result of the testing if the evaluation is positive, or a negative result if the evaluation is negative.
The method may comprise defining a protective front and a non-cutting part (e.g., as explained earlier, the protective front may be defined arbitrarily, and may divide the cutting tool into the cutting part and the non-cutting part) so that the volume swept by the protective front and the volume swept by the non cutting part are convex. The one skilled in the art will understand how to make such division, so as to obtain convex parts. In such a case, determining the segments of the respective dexel that intersect the volume swept by the protective front and evaluating if the segments of the respective dexel as updated intersect the volume swept by the non-cutting part are performed particularly fast.
Indeed, the segments of the respective dexel may typically be ordered (an actual order may exist in the data defining the dexel, or such order be retrieved as it exists naturally). The non-cutting part may sweep a convex volume, for example if the non-cutting part is convex and the elementary step is a straight translation. Additionally, the protective front may sweep a convex volume as well. For example, the cutting part may be convex as well. The trajectory may be divided into elementary steps consisting of straight translations. Updating the respective dexel may comprise shortening the segment of minimal order that intersects the volume swept by the protective front (e.g. the first segment that intersects the volume swept by the protective front when the order of the segments of the respective dexel is gone through), shortening the segment of maximal order that intersects the volume swept by the protective front (e.g. the last segment that intersects the volume swept by the protective front when the order of the segments of the respective dexel is gone through), and removing all segments between the segment of minimal order and the segment of maximal order.
This second example of the method is now discussed with reference to
In the context of using dexels, it may be more efficient, from a processing point of view, to manage a convex colliding sweep or, if not possible, a solid defined by the subtraction of two convex sets. Indeed, the intersection of a segment with a set S difference of two convex sets, S=C1−C2 can be carried on as follows.
The method may first intersect the line L supporting the segment with C1 and C2, which gives two possibly empty segments I1=L∩C1 and I2=L∩C2. It may be observed that L∩S=L∩(C1−C2)=(L∩C1)−(L∩C2)=I1−I2. Of course segments supported by the line L can be expressed as interval in the parametric expression of L. The intersection of a segment supported by L with S then boils down into the intersection of an interval with the difference of two intervals, the later being, in the worst case, the union of two intervals.
For this reason, the first example previously presented may be reformulated in order to make the method more practical, in particular in the context of a dexel model. Consider a convex non-cutting volume V. We call Sprotect, the boundary of V which is not in Souter. In other words, Sprotect includes the faces of V which are in contact with other cutting or non-cutting volumes of the tool.
In practical situations such as NC machining simulation, the shape of most common tools allows Sprotect to include one or two planar faces. However, it is noted that the internal separation between the cutting and non-cutting volumes has no physical significance and can therefore often be chosen as planar without any impact on the resulting behavior.
In the case of the example of
The method may define the colliding sweep as the set theoretic difference between the sweep of the whole convex non-cutting volume and the sweep of a subset of Sprotect. This subset includes all points of Sprotect where the outer normal points in the sweep direction. In case of a general, non translational trajectory, some part of Sprotect may have an outer normal pointing toward the instantaneous sweep speed and some not. In this case only a subset of Sprotect may be swept. In case of translational sweeps, this is the subtraction of two convex sets and can be easily managed in a multi-dexel model.
Formally, the method may define:
So that, according to the previous definition of colliding sweep, we have:
In the context of machining simulation using a multi-dexel grid representation, the method can therefore easily check collision during an elementary trajectory by the following operations.
For each dexel, the method may compute the intervals A, (i.e. the segments of the dexel, which are stored as intervals on the support line of the dexel in this example) given by the intersection with the sweep of the non-cutting volume 190, as illustrated on
Else, the method may compute the volume swept by protectFront from t=0 to t=1 (if the trajectory, or the elementary step, is defined with a parameterization t going from 0 to 1). For this, the method may collect the faces 200 of Sprotect the outer normal of which has a positive dot product with the displacement vector. The method may then compute the volume that is swept by these faces 200, as illustrated on
Montana, Nicolas, Monteil, Marc, Nosenzo, Romain, Lieutier, Andre
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
10140395, | Dec 31 2014 | Dassault Systemes | Detecting collisions in a simulated machining of a workpiece represented by dexels |
10217291, | Nov 03 2011 | Dassault Systemes | Designing a modeled volume represented by dexels |
4833617, | Aug 14 1987 | General Electric Company | Solid modeling based adaptive feedrate control for NC machining |
5710709, | Aug 19 1993 | Iowa State University Research Foundation | NC milling simulation and dimensional verification via dexel representation |
6311100, | Sep 14 1998 | Massachusetts Institute of Technology | Tool path generator for computer aided manufacturing |
7747418, | Dec 09 2005 | CURATORS OF THE UNIVERSITY OF MISSOURI, THE | Computer aided dental bar design |
7832968, | Jul 08 2003 | MTU Aero Engines GmbH | Milling method for the production of components |
8538574, | Apr 02 2009 | DMG Electronics GMBH | Method and apparatus for generating control data for controlling a tool on a machine tool |
9117300, | Nov 03 2011 | Dassault Systemes | Designing a modeled volume represented by dexels |
9524583, | Nov 03 2011 | Dassault Systemes | Simulation of the machining of a workpiece |
9530246, | Jan 15 2009 | Mitsubishi Electric Corporation | Collision determination device and collision determination program |
20010048857, | |||
20020133264, | |||
20030083773, | |||
20050113963, | |||
20060094951, | |||
20090148251, | |||
20100298967, | |||
20110295576, | |||
20120089247, | |||
20120221300, | |||
20120330620, | |||
20130030781, | |||
20130116983, | |||
20130116984, | |||
20130116990, | |||
20160188770, | |||
CN102282561, | |||
CN102490081, | |||
EP2590143, | |||
JP2000235407, | |||
JP2013097813, | |||
JP9150347, | |||
WO2010082378, | |||
WO2011042764, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 05 2012 | LIEUTIER, ANDRE | DASSAULT SYSTÈMES | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048322 | /0640 | |
Dec 06 2012 | MONTANA, NICOLAS | DASSAULT SYSTÈMES | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048322 | /0640 | |
Dec 06 2012 | NOSENZO, ROMAIN | DASSAULT SYSTÈMES | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048322 | /0640 | |
Dec 10 2012 | MONTEIL, MARC | DASSAULT SYSTÈMES | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048322 | /0640 | |
Nov 08 2018 | DASSAULT SYSTÈMES | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Nov 08 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Jun 13 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 22 2025 | 4 years fee payment window open |
Aug 22 2025 | 6 months grace period start (w surcharge) |
Feb 22 2026 | patent expiry (for year 4) |
Feb 22 2028 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 22 2029 | 8 years fee payment window open |
Aug 22 2029 | 6 months grace period start (w surcharge) |
Feb 22 2030 | patent expiry (for year 8) |
Feb 22 2032 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 22 2033 | 12 years fee payment window open |
Aug 22 2033 | 6 months grace period start (w surcharge) |
Feb 22 2034 | patent expiry (for year 12) |
Feb 22 2036 | 2 years to revive unintentionally abandoned end. (for year 12) |