Jak ktoś potrzebuje wygrawerować jakąś płaskorzeźbę, to na pewno CAM jest właściwym rozwiązaniem.
Ale zarys zęba to faktycznie czysta matematyka.
Dodane 1 godzina 11 minuty 14 sekundy:
Taki przykład.
Od dawna zabierałem się do napisania podprogramu na frezowanie frezem walcowym pogłębienia pod łeb stożkowy wkręta.
Niby nic specjalnie trudnego, ale ponieważ miało mi się to przydać dopiero w przyszłości, więc za każdym razem kiedy sobie przypomniałem, odkładałem to na później...
Dzisiejsza dyskusja skończyła się konstatacją, że warto by było dać jakiś przykład, więc padło na stożkowe pogłębienie...
Poszło łatwiej niż przypuszczałem, bo pytając Google o frezowanie stożka w LinuxCNC jako jedną z pierwszych odpowiedzi dostałem https://forum.linuxcnc.org/40-subroutin ... ed-threads
"Milling-tapered-threads" znaczy frezowany gwint stożkowy, a jak wiadomo, gwint stożkowy różni się od potrzebnego stożka 90 stopni tylko skokiem i nachyleniem, więc byłem w domu.
Trochę musiałem posprzątać kod, bo autor zawarł w komentarzach dużo więcej niż powinien, ale zmiany są w zasadzie kosmetyczne:
Kod: Zaznacz cały
G0 Z0
(o<npt2> call [x] [y] [start r.] [degrees per increment] [revolutions] [-z start position] [pitch] [feed])
o<npt2> call [0] [0] [0] [2] [100] [-10] [10] [1000]
G0 Z0
M30
o<npt2> sub
g90
g64 p.01
#<U> = #1 ( X LOCATION of hole) (rapids to this location)
#<W> = #2 ( Y LOCATION of hole) (rapids to this location)
#<A> = #3 (A=STARTING RADIUS) (adjust diameter here)
#<R> = #4 (R=NUMBER degrees per increment 2) (small increments make a better thread form)
#<E> = #5 (E=NUMBER OF PASSES)(revolutions)([thickness / pitch])
#<Z> = #6 (Z=DEPTH)(start at bottom of hole) (f200 feed to bottom of hole)
#<V> = #7 (V=THREADS PER UNIT)
#<F> = #8 (F=FEED)
#3=0.0 (start position 0 degrees)
#10=[360 / #<R>] (number of increments per revolution)
#109=#10
#110=[1 / #<V>] (thread pitch)
#111=[1 / #<V>] (calculate diameter increase per revolution)
#3=#<R> (number of degrees first move 2)
G00 X#<U> Y#<W> (rapid linear move to center of hole)
G01 Z#<Z> F200 (linear move to bottom of hole)
#19=[#<A> + #<U>] (calculate spiral start position)(cutter centerline, no cutter comp.)
G01 X#19 Y#<W> F#<F> (linear move in x plus direction to start point of spiral)
#<Z>=[#<Z> + #110 / #109] (calculate z end position per increment , absolute)
#24=[COS[ #3 ] * #<A>]
#25=[SIN[ #3 ] * #<A>]
#24=[#24 + #<U>] (updated x end point)
#25=[#25 + #<W>] (updated y end point)
G01 X#24 Y#25 Z#<Z> F#<F> (3 axis linear movement)
#3=[#3 + #<R>] (updated degrees of rotation ?)
#<A>=[#<A> + #111 / #109] (diameter increase per increment)
o110 while [ #3 LE 360.00000 * #<E> ] (stop when number of revolutions is complete)
#<Z>=[#<Z> + #110 / #109] (updated z end point)
#24=[COS[ #3 ] * #<A>] (calculate x end point)
#25=[SIN[ #3 ] * #<A>] (calculate y end point)
#24=[#24 + #<U>] (add end point to last x end point)
#25=[#25 + #<W>] (add end point to last y end point)
G01 X#24 Y#25 Z#<Z> F#<F> (three axis linear move)
#3=[#3 + #<R>] (update #3 )
#<A>=[#<A> + #111 / #109] (update diameter increase per increment)
o110 endwhile
G01 X#<U> Y#<W> F#<F> (move to center of circle )
G01 Z1.0 f20 (z up to 1 inch absolute f20)
g90
o<npt2> endsub

Jak widać, do wykonania takiego pogłębienia frezem walcowym, wcale nie potrzeba programu CAM za kilka tysięcy miesięcznie, lub kilkadziesiąt jednorazowo...
Nie potrzeba, bo to jest właśnie zadanie czysto matematyczne.
Nawiasem mówiąc CAM zrobi to tak samo, bo nie istnieje inna matematyka.
Nacinanie kół zębatych należy do tej właśnie kategorii - zadań czysto matematycznych.