Application Center - Maplesoft

App Preview:

Animation of the contour and end milling process

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


Animation of the contour and end milling proces 

Dr.Laczik B?lint HUNGARY, Technical University of Budapest 

 

The worksheet demonstrate the basic kinematic feautures of the contour and planar milling.
The milling performs metal cutting by a co-ordinated movement between a rotating, multi-edge tool and a feed of a workpiece. 

The edges of the milling cutter are helical lines, the rake surfaces of the tool are helicoids generated now simple by starigth line segments (color magenta). 

The primer  clearence surfaces are intersected from the cylinder of  body of the tool by rake and seconder clearence surfaces (color green). The seconder clearence surfaces are helicoids generated by line segments too (color gold).
For the end milling are used the rake surfaces displayed by planar elements (color red). 

 

The real patches of the tool edges on the workpiece are prolated orthocycloides if the velocity v  of the feed in the straigth line direction and the angular velocity omega of the tool have constant values. The common centordes of the equal orthocycloides are the straigth line and the circle by radii  `assign`(rho, `/`(`*`(v), `*`(omega)))

 

> restart; `assign`(ido, time()); with(plots); with(plottools); with(linalg)
 

> `assign`(piece1, cuboid([70, 50, 0], [20, 0, `+`(`-`(20))], color = cyan)); `assign`(piece2, cuboid([70, 50, 50], [20, 20, 0], color = cyan)); `assign`(fix, display(piece1, piece2))
`assign`(piece1, cuboid([70, 50, 0], [20, 0, `+`(`-`(20))], color = cyan)); `assign`(piece2, cuboid([70, 50, 50], [20, 20, 0], color = cyan)); `assign`(fix, display(piece1, piece2))
 

> `assign`(rs, 20); `assign`(cim, titlefont = [HELVETICA, BOLD, 16], scaling = constrained)
 


Generation of the typical surface elements of the workpiece
 

> for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
for i from 0 to 7 do `assign`(Y, `+`(`*`(3, `*`(i)), Float(19, -1))); `assign`(psi, arcsin(`/`(`*`(Y), `*`(rs)))); `assign`(var1r || i, cuboid([70, 0, 50], [`+`(20, `*`(rs, `*`(`+`(1, `-`(cos(psi)))))...
 

> for i from 7 to 16 do `assign`(tav, `+`(`-`(`*`(`+`(6, `-`(i)), `*`(3))))); `assign`(vag || i, translate(var2r6, tav, 0, 0)); `assign`(vagg || i, cuboid([70, 0, 50], [`+`(38, tav), 20, 0], color = cya...
for i from 7 to 16 do `assign`(tav, `+`(`-`(`*`(`+`(6, `-`(i)), `*`(3))))); `assign`(vag || i, translate(var2r6, tav, 0, 0)); `assign`(vagg || i, cuboid([70, 0, 50], [`+`(38, tav), 20, 0], color = cya...
for i from 7 to 16 do `assign`(tav, `+`(`-`(`*`(`+`(6, `-`(i)), `*`(3))))); `assign`(vag || i, translate(var2r6, tav, 0, 0)); `assign`(vagg || i, cuboid([70, 0, 50], [`+`(38, tav), 20, 0], color = cya...
for i from 7 to 16 do `assign`(tav, `+`(`-`(`*`(`+`(6, `-`(i)), `*`(3))))); `assign`(vag || i, translate(var2r6, tav, 0, 0)); `assign`(vagg || i, cuboid([70, 0, 50], [`+`(38, tav), 20, 0], color = cya...
for i from 7 to 16 do `assign`(tav, `+`(`-`(`*`(`+`(6, `-`(i)), `*`(3))))); `assign`(vag || i, translate(var2r6, tav, 0, 0)); `assign`(vagg || i, cuboid([70, 0, 50], [`+`(38, tav), 20, 0], color = cya...
 

> `assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
`assign`(T, NULL); for j from 0 to 23 do `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, var3r || j, var5r || j], fix), `<=`(j, 16), display([vag || j, vagg || j], fix), display([var4r || (`+`(...
 

> unassign('i'); `assign`(k, p, delta, epsilon, 10, 20, `/`(`*`(Pi), `*`(3)), Float(4, -1)); `assign`(szin, gray, magenta, gold, green, red)
 

 

Generation of the helical, cylindrical and planar surface elements of the cutter
 

> `assign`(rho, `*`(k, `*`(u))); `assign`(r, [`*`(rho, `*`(cos(`+`(phi, `*`(delta, `*`(i)))))), `*`(rho, `*`(sin(`+`(phi, `*`(delta, `*`(i)))))), `*`(p, `*`(phi))]); `assign`(R, [`*`(rho, `*`(cos(`+`(ph...
 

> `assign`(q, [subs({phi = 0, u = 1, i = 1}, r), subs({phi = 0, u = 2, i = 1}, r), subs({phi = 0, u = 2, i = 1, i = 1}, R), subs({phi = 0, u = 1, i = 1}, R)])
`assign`(q, [subs({phi = 0, u = 1, i = 1}, r), subs({phi = 0, u = 2, i = 1}, r), subs({phi = 0, u = 2, i = 1, i = 1}, R), subs({phi = 0, u = 1, i = 1}, R)])
 

> `assign`(c1, cylinder([0, 0, 2], Float(97, -1), Float(575, -1), color = szin[1], grid = [2, 10])); `assign`(c2, cylinder([0, 0, `*`(3, `*`(p))], 20, `*`(2, `*`(p)), color = szin[1], grid = [2, 10])); ...
`assign`(c1, cylinder([0, 0, 2], Float(97, -1), Float(575, -1), color = szin[1], grid = [2, 10])); `assign`(c2, cylinder([0, 0, `*`(3, `*`(p))], 20, `*`(2, `*`(p)), color = szin[1], grid = [2, 10])); ...
`assign`(c1, cylinder([0, 0, 2], Float(97, -1), Float(575, -1), color = szin[1], grid = [2, 10])); `assign`(c2, cylinder([0, 0, `*`(3, `*`(p))], 20, `*`(2, `*`(p)), color = szin[1], grid = [2, 10])); ...
 

>

 

> `assign`(f, evalm(multiply(M, Rho))); `assign`(F, matadd(f, w)); `assign`(KEP, plot3d(F, t = 0 .. 20, phi = 0 .. 3, color = szin[4], grid = [6, 15], style = patchnogrid))
`assign`(f, evalm(multiply(M, Rho))); `assign`(F, matadd(f, w)); `assign`(KEP, plot3d(F, t = 0 .. 20, phi = 0 .. 3, color = szin[4], grid = [6, 15], style = patchnogrid))
 

> for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
for i to 6 do `assign`(kep || i, plot3d(r, phi = 0 .. 3, u = 1 .. 2, color = szin[2], grid = [20, 6])); `assign`(Kep || i, plot3d(R, phi = 0 .. 3, u = 1 .. 2, color = szin[3], grid = [20, 2])); `assig...
 

> unassign('i')
 

> `assign`(KEPQ, display(c1, c2, seq({kep || i, Kep || i, Kepp || i, Lap || i}, i = 1 .. 6))); display(KEPQ, title =
`assign`(KEPQ, display(c1, c2, seq({kep || i, Kep || i, Kepp || i, Lap || i}, i = 1 .. 6))); display(KEPQ, title =
 

 

Animation of the cutting proces 

 

> `assign`(epsilon, evalf(`+`(`-`(`/`(`*`(Pi), `*`(12)))))); for i from 0 to 7 do `assign`(forg || i, rotate(KEPQ, `*`(i, `*`(epsilon)), [[0, 0, 0], [0, 0, 1]])) end do
 

> `assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
`assign`(T, NULL); for j from 0 to 23 do `assign`(m, `mod`(j, 8)); `assign`(tool || j, translate(forg || m, `+`(`*`(3, `*`(j)), `-`(2)), 0, 0)); `assign`(Q, piecewise(`<=`(j, 6), display([var2r || j, ...
 

 

The real patches of the tool edges on the workpiece 

 

The number of edges is 2 <= z <= 6. 

 

> z:=4:
 

> `assign`(Szin, red, blue, black, magenta, green, cyan); `assign`(rho, k, N, 1, 10, 100); `assign`(delta, evalf(`/`(`*`(2, `*`(Pi)), `*`(z))))
 

> `assign`(kor, circle([0, 0], `+`(k, `-`(3)), color = black, thickness = 3)); `assign`(Kor, circle([0, 0], rho, color = black, thickness = 3)); `assign`(vonal, line([`+`(`-`(20)), `+`(`-`(rho))], [10, ...
`assign`(kor, circle([0, 0], `+`(k, `-`(3)), color = black, thickness = 3)); `assign`(Kor, circle([0, 0], rho, color = black, thickness = 3)); `assign`(vonal, line([`+`(`-`(20)), `+`(`-`(rho))], [10, ...
 

> for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
for i to z do `assign`(X1, `*`(k, `*`(cos(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(Y1, `*`(k, `*`(sin(`/`(`*`(2, `*`(Pi, `*`(`+`(i, `-`(1))))), `*`(z)))))); `assign`(X2, `*`(`+`...
 

> `assign`(FIX, display(seq({kep || i}, i = 1 .. z), vonal)); `assign`(TOOL, display(seq({plate || i}, i = 1 .. z), kor, Kor))
 

> for i from 0 to N do `assign`(psi, evalf(`/`(`*`(6, `*`(Pi, `*`(i))), `*`(N)))); `assign`(tool || i, display(translate(rotate(TOOL, psi), `+`(`-`(`/`(`*`(i, `*`(rho, `*`(6, `*`(Pi)))), `*`(N)))), 0), ...
for i from 0 to N do `assign`(psi, evalf(`/`(`*`(6, `*`(Pi, `*`(i))), `*`(N)))); `assign`(tool || i, display(translate(rotate(TOOL, psi), `+`(`-`(`/`(`*`(i, `*`(rho, `*`(6, `*`(Pi)))), `*`(N)))), 0), ...
for i from 0 to N do `assign`(psi, evalf(`/`(`*`(6, `*`(Pi, `*`(i))), `*`(N)))); `assign`(tool || i, display(translate(rotate(TOOL, psi), `+`(`-`(`/`(`*`(i, `*`(rho, `*`(6, `*`(Pi)))), `*`(N)))), 0), ...
for i from 0 to N do `assign`(psi, evalf(`/`(`*`(6, `*`(Pi, `*`(i))), `*`(N)))); `assign`(tool || i, display(translate(rotate(TOOL, psi), `+`(`-`(`/`(`*`(i, `*`(rho, `*`(6, `*`(Pi)))), `*`(N)))), 0), ...
for i from 0 to N do `assign`(psi, evalf(`/`(`*`(6, `*`(Pi, `*`(i))), `*`(N)))); `assign`(tool || i, display(translate(rotate(TOOL, psi), `+`(`-`(`/`(`*`(i, `*`(rho, `*`(6, `*`(Pi)))), `*`(N)))), 0), ...
 

> `+`(time(), `-`(ido))
 

>  
 

>  
 

>  
 

>