Fig. 1. 6-Axes machine tool.
Fig. 2. Machining operations on a tool.
* Fluting: performing the lateral helicoidal of straight grooves
* Gashing: cuts in the tool head
* Outer diameter sharpening: edge sharpening of the lateral grooves
* End face sharpening: edge sharpening of the tool head cuts * Notching: direct cut in the tool head.
Fig. 2 shows a real bore and it indicates the operations that have given its shape.
Each operation performs several symmetrical cuts in the tool shape. The tool shown in Fig. 2, for instance, has three lateral grooves realized during the ‘Fluting’ operation. Each cut is performed through a sequence of movements. In the CNC code, each movement corresponds to a line instruction specifying the motion axes (X; Y;U; A; or W for the tool and Z for the wheel) along with the amount of rotation or translation to be performed for each edge.
4. Machining simulation
4.1. Overview
Our approach uses the fact that the tools have a tubular shape. It consists of discretizing the tool in axial sections, performing the machining
operations
on
these
crosssections
and
finally,
reconstructing the surface of the tool by tiling between cross-sections. Before machining, the cross-sections are circles. Afterwards, they have a complex shape that may even have been split into separate connected shells at the tool end.
The movements are divided into blocks, each one corresponding to an CNC operation or even to one cut within an operation. The machining process is performed sequentially for each block. Therefore, as many intermediate models are created as instruction blocks exist. The initial tool is taken as input of the first machining process. The
resulting tool is used in the second block processing and so on. The surface reconstruction step can be performed on any of these intermediate models or, alternatively only on the last one.
Therefore, the simulation process of each instructions block is composed of two steps:
* A 2D Boolean operation process, that receives as input: (i) the tool representation, (ii) the machining wheel representation, (iii) a list of movements and that gives as output a new representation of the tool cross-sections.
* A tiling process that completes the tool representation with the triangulation between contours.
The second step, surface tiling, is a classical subject in computer graphics [14]. It consists of two related problems: (i) establishing correspondences between contours (branching problem) and (ii) searching correspondent vertices to form tiles (correspondence problem). Several solutions have been published to solve both problems based on minimizing the distance between successive contours [7,17] and interpolating in between contours [12]. The method used herein is an extension of these algorithms that adds to these criteria the constraint of tiling between segments of the contour corresponding to the same machining operation. This extension is described in depth in Ref. [22].
4.2. Machining of the tool cross-sections
The computation of the new shape of tool cross section consists of three steps:
* Computation through time of the intersections of the wheel cross sections and the external contour of the tool section. Both
sections are circular and, due to their relative orientation, their intersection is a segment. Therefore, the result of this step is a set of segments.
* Calculation of the hulls of the segments set. These hulls are polygonal approximations of wheel cuts on the tool section.
* Reconstruction of the tool cross section contour given its original shape and the hull curves.
The pseudo-code algorithm below illustrates this process. Let st be the tool cross section at the beginning of the process, where the wheel and ml the movements list. The wheel is discretized into a set of circular cross-sections switch (procedures FirtSectWheel and NextSectWheel). The movement of switch and st is decomposed into a a set of successive positions (inner loop). For each position, the intersection between sw and st is computed in the procedure InterSect. If there is intersection, then the corresponding segment segm is stored in the segments list seglist. Then, the geometry of st, sw and seglist is updated to next positions in the procedure UpdateGeom. The position of st is reset at its initial location for each new wheel section. After all the wheel sections have been processed, the hulls of the segment list are computed in CompHulls and then clipped against the initial contour of st with the procedure Reconstruct.
procedure CrossSection Machining(st: tSection,wh: tWheel, ml: tMovList)
var
sw: tSection segm: tSegment seglist: tSegmentList
hulls: tHullList fvar
InitSegList(seglist) sw U FirstSectWheel (wh) while ValidSection(sw) do endo f mov U FALSE while : endo f mov do
InterSect(st,sw, &segm, &status)
if status ! InsertSegment(segm, seglist) endif UpdateGeom(ml, &st, &sw, &seglist, &endo f mov) endwhile
sw U NextSectWheel(wh,sw) ResetToolPosition(&st) endwhile
CompHulls(slist, &hulls) Reconstruct(hulls, &st) fprocedure
4.2.1. Updating geometry
Each movement instruction is realized at constant speed. Therefore, a movement can be decomposed into n constant intervals of translation in X; Y; Z and U along with rotation in W and A : δA=ΔA/n,δW=ΔW/n,δX=ΔX/n,δY=ΔY/n,δU=ΔU/n andδZ=ΔZ/n.
As mentioned in Section 3, a line movement can be composed of several simultaneous instructions. Most of the tool movements are composed of translations and axial rotations, which are independent. Therefore, the order in which the update of each movement is done is irrelevant. However for conical tools with a round end called ‘ball nose’, simultaneous axial translations and column angle rotations are necessary. These two movements are obviously not independent. This