Można tak, można i tak - maść na szczury

A oto efekt:

Kod: Zaznacz cały
o<piorko> sub
( Ustawienia osi )
( Z0 ------ oś tarczy w osi ostrzonego freza )
( X0 ------ z0 i kontakt na czole ostrzonego freza )
( Y0 ------ czolo tarczy w osi ostrzonego freza )
( A0 ------ piórka poziomo )
( głowica osi A przesunięta o 3 stopnie względem X)
#<skok> = #1 (=8 średnica freza)
#<liczba_operacji> = #2 (=4 ilość piórek)
#<predkosc> = #3 (=10 prędkość )
#<zpocz> = #4 (=-12 poz. Z)
#<xpocz> = #5 (=-1.5 poz X)
#<ypocz> = [#<skok>/2 +0.5]
#<operacja> = 0
g0 z#<zpocz>
m3 s1
g0
y#<ypocz>
x#<xpocz>
o100 while [#<operacja> lt #<liczba_operacji>]
g0 a[#<operacja> * 360/#<liczba_operacji>]
g1 y0 f#<predkosc>
g0 y#<ypocz>
#<operacja> = [#<operacja> + 1]
o100 endwhile
o<piorko> endsub
Kod: Zaznacz cały
o<wybranie> sub
#<skok> = #1 (=8 średnica freza)
#<liczba_operacji> = #2 (=4 ilość piórek)
#<predkosc> = #3 (=10 prędkość )
#<zpocz> = #4 (=-12 poz. Z)
#<xpocz> = #5 (=-1.5 poz X)
#<ypocz> = [#<skok>/2 +0.5]
#<operacja> = 0
m3 s1
g0 z#<zpocz> y#<ypocz>
g0 x#<xpocz>
o100 while [#<operacja> lt #<liczba_operacji>]
g0 a[#<operacja> * 360/#<liczba_operacji>]
g1 y0 f#<predkosc>
g0 y#<ypocz>
#<operacja> = [#<operacja> + 1]
o100 endwhile
o<wybranie> endsub
Kod: Zaznacz cały
o<podciecie4> sub
#<skok> = #1 (=8 średnica freza)
#<liczba_operacji> = #2 (=4 ilość piórek)
#<predkosc> = #3 (=10 prędkość )
#<zpocz> = #4 (=-12 poz. Z)
#<xpocz> = #5 (=-1.5 poz X)
#<x1> =#6 (=0.3 podcięcie płytkie )
#<x2> =#7 (=0.7 podcięcie głębokie )
#<w_z> = #8 (=0 wyjazd Z)
#<w_x> = #9 (=5 wyjazd X)
#<w_y> = #10 (=0 wyjazd Y)
#<ypocz> = [#<skok>/2 +0.5]
#<operacja> = 0
m3 s1
g0 z#<zpocz> y#<ypocz>
g0 x#<xpocz>
o100 while [#<operacja> lt #<liczba_operacji>]
g0 a[#<operacja> * 360/#<liczba_operacji>]
y0
o120 if[#<operacja> MOD 2 eq 0]
g0 x#<xpocz>
g1 x[#<xpocz>-#<x1>] f#<predkosc>
g0 x[#<xpocz> +5]
o120 else
g0 x#<xpocz>
g1 x[#<xpocz>-#<x2>] f#<predkosc>
G0 x[#<xpocz> +5 ]
o120 endif
g0 y0
#<operacja> = [#<operacja> + 1]
o100 endwhile
o<podciecie4> endsub
Kod: Zaznacz cały
(-----NOWY KOD POCZATEK-----)
#<stala_pr_skrawania> = #19 (=1 <> stała pr. skrawania)
#<pr_skrawania> = #20 (=40 predkosc skrawania [m/min])
#<sr_narzedzia> = #21 (=10 średnica nadzędzia [mm])
#<stale_dobranie> = #22 (=1 <> stałe dobranie)
#<dobranie_zab> = #23 (=0.04 dobranie/ząb [mm])
#<liczba_zebow> = #24 (=4 liczba zębów)
#<bieg1> = #25 (=0 <> bieg: 150 Sr,Cz,Cz)
#<bieg2> = #26 (=0 <> bieg: 480 Zi,Ni,Ni)
#<bieg3> = #27 (=0 <> bieg: 1200 Zi,Cz,Cz)
#<bieg4> = #28 (=1 <> bieg: 3000 Zi,Żó,Żó)
( ------------------------------ )
o2 if [#<stala_pr_skrawania> eq 1]
#<Pi> = 3.141593
#<obwod_mm> = [2*#<Pi>*#<sr_narzedzia>/2]
#<obwod_m> = [#<obwod_mm> / 1000]
#<obr> = [#<pr_skrawania> / #<obwod_m>]
o2 endif
o3 if [#<stale_dobranie> eq 1]
#<dobranie_obrot_mm> = [#<liczba_zebow> * #<dobranie_zab>]
#<predkosc_bok> = [#<dobranie_obrot_mm> * #<obr>]
o3 endif
o4 if [[#<bieg1> + #<bieg2> + #<bieg3> + #<bieg4>] gt 1]
M100 P1 (Message)
o4 elseif [#<bieg4> eq 1]
#<obr> = #<obr>
o4 elseif [#<bieg3> eq 1]
#<obr> = [#<obr> * 2.5]
o4 elseif [#<bieg2> eq 1]
#<obr> = [#<obr> * 6.25]
o4 elseif [#<bieg1> eq 1]
#<obr> = [#<obr> * 20]
o4 else
M100 P3
o4 endif
o5 if [#<obr> gt 3000]
(Obroty poza osiągalnym zakresem)
o5 endif
(-----NOWY KOD KONIEC-----)
Kod: Zaznacz cały
( ------------------------------ )
( O T W O R D O K L A D N Y )
( ------------------------------ )
( Kamar )
( Time-stamp: <2015-10-01 13:27> )
( ------------------------------ )
( USTAWIENIA )
( ------------------------------ )
(info: Wycinanie spiralą dokładnego otworu lub kółka)
o<otwor_spirala> sub
#<obr> = #1 (=1500 obroty)
#<frez> = #2 (=8 frez)
#<sr_otworu> = #3 (=20 średnica)
#<glebokosc> = #4 (=-10 głębokość)
#<predkosc> = #5 (=60 prędkość)
#<skok> = #6 (=2 skok)
#<woda> = #7 (=1 <> chlodzenie)
#<w_z> = #8 (wyjazd Z)
#<w_x> = #9 (wyjazd X)
#<w_y> = #10 (wyjazd Y)
( ------------------------------ )
( ------------------------------ )
#<promien_freza> = [#<frez> / 2] ( promien freza )
#<promien_otworu> = [#<sr_otworu> / 2] ( promien otworu )
#<promien> = [#<promien_otworu> - #<promien_freza>] ( dojazd )
g0 z5
g0 x0 y0
m3 s#<obr>
o1 if [#<woda> eq 1]
m8
o1 endif
#1 = 0
G0 X[-1 * #<promien>] F#<predkosc>
G0 Z1
g1 z0
#<akt_z> = 0
o100 while [#<akt_z> gt #<glebokosc>]
#<akt_z> = [#<akt_z> - #<skok>]
( jezeli za gleboko to jade na max )
o110 if [#<akt_z> lt #<glebokosc>]
#<akt_z> = #<glebokosc>
o110 endif
G2 X0 Y#<promien> R#<promien> Z[#<akt_z> + [0.75 * #<skok>]]
G2 X#<promien> Y0 R#<promien> Z[#<akt_z> + [0.5 * #<skok>]]
G2 X0 Y[-1 * #<promien>] R#<promien> Z[#<akt_z> + [0.25 * #<skok>]]
G2 X[-1 * #<promien>] Y0 R#<promien> Z#<akt_z>
o100 endwhile
( rownanie dolu )
G2 X0 Y#<promien> R#<promien> Z#<akt_z>
G2 X#<promien> Y0 R#<promien>
G2 X0 Y[-1 * #<promien>] R#<promien>
G2 X[-1 * #<promien>] Y0 R#<promien>
m5
g0 z#<w_z>
g0 x#<w_x>
g0 y#<w_y>
o<otwor_spirala> endsub
Kod: Zaznacz cały
( ------------------------------ )
( O T W O R D O K L A D N Y )
( ------------------------------ )
( Kamar )
( Time-stamp: <2012-10-23 12:30> )
( ------------------------------ )
(info: Wycinanie dokładnego otworu lub kółka)
o<otwor> sub
#<frez> = #1 (=6 frez)
#<sr_otworu> = #2 (=20 średnica)
#<pr_wjazdu> = #3 (=0.1 promień wjazdu)
#<glebokosc> = #4 (=-10 głębokość )
#<glebokosc_poczatkowa> = #5 (=0 Z początkowe)
#<predkosc_bok> = #6 (=60 prędkość bok)
#<predkosc_dol> = #7 (=30 prędkość dół)
#<skok> = #8 (=2 skok)
#<rodzaj> = #9 (=0 <> koło)
#<woda> = #10 (=1 <> chlodzenie)
( ------------------------------ )
#<pr_freza> = [#<frez> / 2] ( promien freza )
#<pr_otworu> = [#<sr_otworu> / 2] ( promien otworu )
#<promien> = [#<pr_otworu> - #<pr_freza>] ( dojazd )
g17 G21 G61
(G0 X0 Y0)
M3 s1
o1 if [#<woda> eq 1]
m8
o1 endif
o2 if [#<rodzaj> eq 0]
(otwór)
G0 X[-1 * [#<promien> - #<pr_wjazdu>]] Y#<pr_wjazdu>
G0 Z1
G1 Z0 f#<predkosc_dol>
#<akt_glebokosc> = #<glebokosc_poczatkowa>
o100 while [#<akt_glebokosc> gt #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>]
( jezeli za gleboko to jade na max )
o110 if [#<akt_glebokosc> lt #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o110 endif
G1 Z#<akt_glebokosc> F#<predkosc_dol>
G3 X[#<promien> * -1] Y0 I0 J[-1 * #<pr_wjazdu>] F#<predkosc_bok>
G3 X[#<promien> * -1] Y0 I#<promien> J0
G3 X[-1 * [#<promien> - #<pr_wjazdu>]] Y[#<pr_wjazdu> * -1] I[#<pr_wjazdu>] J0
G1 Y#<pr_wjazdu>
o100 endwhile
o2 else
(koło)
#<promien> = [#<pr_otworu> + #<pr_freza>] ( dojazd )
G0 X[-1 * [#<promien> + #<pr_wjazdu>]] Y#<pr_wjazdu>
G0 Z1
G1 Z0 f#<predkosc_dol>
#<akt_glebokosc> = #<glebokosc_poczatkowa>
o200 while [#<akt_glebokosc> gt #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>]
( jezeli za gleboko to jade na max )
o210 if [#<akt_glebokosc> lt #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o210 endif
G1 Z#<akt_glebokosc> F#<predkosc_dol>
G2 X[#<promien> * -1] Y0 I0 J[-1 * #<pr_wjazdu>] F#<predkosc_bok>
G3 X[#<promien> * -1] Y0 I#<promien> J0
G2 X[-1 * [#<promien> + #<pr_wjazdu>]] Y[#<pr_wjazdu> * -1] I[#<pr_wjazdu> * -1] J0
(G1 X[-1 * [#<promien> + #<pr_wjazdu>]] Y#<pr_wjazdu>)
G1 Y#<pr_wjazdu>
o200 endwhile
o2 endif
g0 z5
o<otwor> endsub
Kod: Zaznacz cały
( ------------------------------ )
( O T W O R Y P O O K R E G U )
( ------------------------------ )
( ADAM )
( Time-stamp: <2018-11-30 18:29> )
( ------------------------------ )
( USTAWIENIA )
( ------------------------------ )
(info: Wycinanie otworów po okręgu)
o<otwory_po_okregu> sub
#<frez> = #1 (=50 frez)
#<sr_otworu> = #2 (=50 średnica otworu)
#<pelny> = #3 (=0 <> kontur[0] / pełny[1])
#<srednica> = #4 (=0 średnica podziału)
#<il_otworow> = #5 (=1 ilosc otworow )
#<kat_poczatkowy> = #6 (=0 kąt początkowy)
#<glebokosc> = #7 (=-1 glebokosc [-])
#<skok> = #8 (=2 skok)
#<wyjazd> = #9 (=5 wyjazd)
#<wys_przejazd> = #10 (=30 wysokość przejazdu)
#<posuw> = #11 (=60 posuw)
#<predkosc_dol> = #12 (=200 prędkosć dół)
#<glebokosc_lba> = #13 (=0 głębokość łba [-])
#<srednica_lba> = #14 (=0 średnica łba)
#<woda> = #15 (=0 <> chłodzenie)
#<mgla> = #16 (=0 <> mgła)
#<pompowanie> = #17 (=2 pompowanie)
#<wyjazd_wiertla> = #18 (=2 wyjazd wiertła)
#<obr> = #19 (=500 obroty)
( ------------------------------ )
(-----NOWY KOD POCZATEK-----)
#<stala_pr_skrawania> = #20 (=1 <> stała pr. skrawania)
#<pr_skrawania> = #21 (=100 predkosc skrawania [m/min])
#<sr_narzedzia> = #22 (=50 średnica nadzędzia [mm])
#<stale_dobranie> = #23 (=1 <> stałe dobranie)
#<dobranie_zab> = #24 (=0.2 dobranie/ząb [mm])
#<liczba_zebow> = #25 (=5 liczba zębów)
#<bieg1> = #26 (=0 <> bieg: 150 Sr,Cz,Cz)
#<bieg2> = #27 (=0 <> bieg: 480 Zi,Ni,Ni)
#<bieg2> = #28 (=0 <> bieg: 1200 Zi,Cz,Cz)
#<bieg4> = #29 (=0 <> bieg: 3000 Zi,Żó,Żó)
#<nr> = #30 (=1 nr narzędzia)
(-----NOWY KOD KONIEC-----)
(-----NOWY KOD POCZATEK-----)
o2 if [#<stala_pr_skrawania> eq 1]
#<Pi> = 3.141593
#<obwod_mm> = [2*#<Pi>*#<sr_narzedzia>/2]
#<obwod_m> = [#<obwod_mm> / 1000]
#<obr> = [#<pr_skrawania> / #<obwod_m>]
o2 endif
o3 if [#<stale_dobranie> eq 1]
#<dobranie_obrot_mm> = [#<liczba_zebow> * #<dobranie_zab>]
#<posuw> = [#<dobranie_obrot_mm> * #<obr>]
o3 endif
o4 if [[#<bieg1> + #<bieg2> + #<bieg2> + #<bieg4>] gt 1]
M100 P1 (Message)
o4 elseif [#<bieg4> eq 1]
#<obr> = #<obr>
o4 elseif [#<bieg2> eq 1]
#<obr> = [#<obr> * 2.5]
o4 elseif [#<bieg2> eq 1]
#<obr> = [#<obr> * 6.25]
o4 elseif [#<bieg1> eq 1]
#<obr> = [#<obr> * 20]
o4 else
M100 P2
o4 endif
o5 if [#<obr> gt 3000]
M100 P3
o5 endif
(-----NOWY KOD KONIEC-----)
#<promien> = [#<srednica> / 2] ( promien )
#<kat> = [360 / #<il_otworow>] ( kat )
#<akt_otwor> = 0 ( aktualny otwor - od 0)
#<przesuniecie> = [[#<sr_otworu > / 2] - [#<frez> / 2]]
#<przesuniecie_lba> = [[#<srednica_lba> / 2] - [#<frez> / 2]]
o6 if [#<glebokosc_lba> LT 0 AND #<pelny> EQ 0]
M100 P4
o6 endif
o100 while [#<akt_otwor> LT #<il_otworow>]
#<akt_kat> = [[#<akt_otwor> * #<kat>] + #<kat_poczatkowy>] ( kat * otwor )
#<poz_x> = [COS[#<akt_kat>] * #<promien>] ( X to RcosA )
#<poz_y> = [SIN[#<akt_kat>] * #<promien>] ( Y to RsinA )
g17 G21 (G61)
G64
( ustawiam pozycję startową )
/G0 Z#<wys_przejazd>
/G0 X#<poz_x> Y#<poz_y> ( ustawiam pozycje )
/G0 Z#<wyjazd>
( ------------------------------ )
( OPERACJA )
( ------------------------------ )
M6 T#<nr> G43
m3 s #<obr>
o1 if [#<woda> eq 1]
m8
o1 endif
o7 if [#<mgla> eq 1]
m7
o7 endif
o105 if [#<sr_otworu> gt #<frez>]
( frezuję )
#<akt_glebokosc> = 0
o40 if [#<pelny> eq 0]
g0 x[#<poz_x>] y[#<poz_y> + #<przesuniecie>]
G0 Z#<wyjazd>
g1 z#<akt_glebokosc> F#<predkosc_dol>
o19 while [#<akt_glebokosc> GT #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )
( jezeli wyliczylo ponizej limitu to zaglebiam tylko do limitu )
o30 if [#<akt_glebokosc> LT #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o30 endif
g2 x[#<poz_x>] y[[#<poz_y> + #<przesuniecie>]] i0 j[#<przesuniecie> * -1] z[#<akt_glebokosc>] F#<posuw>
(g0 y[#<poz_y>])
o19 endwhile
g2 x[#<poz_x>] y[[#<poz_y> + #<przesuniecie>]] i0 j[#<przesuniecie> * -1] F#<posuw>
(g0 x[#<poz_x>] y[#<poz_y>]) (rysiek do środka)
G0 Z#<wys_przejazd>
o40 else
#<szerokosc_zbierania> = [#<frez> / 2]
#<akt_przesuniecie> = 0
g0 x[#<poz_x>] y[#<poz_y> + #<akt_przesuniecie> + #<szerokosc_zbierania>]
o21 while [#<akt_przesuniecie> LT #<przesuniecie>]
#<akt_glebokosc> = 0
#<akt_przesuniecie> = [#<akt_przesuniecie> + #<szerokosc_zbierania>] (dobieranie w poziomie o 1 trzecia srednicy freza)
o42 if [#<akt_przesuniecie> gt #<przesuniecie>]
#<akt_przesuniecie> = #<przesuniecie>
o42 endif
g0 x[#<poz_x>] y[#<poz_y> + #<akt_przesuniecie> ] F#<posuw>
g0 z#<wyjazd>
g1 z#<akt_glebokosc> F#<predkosc_dol>
o20 while [#<akt_glebokosc> GT #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )
( jezeli wyliczylo ponizej limitu to zaglebiam tylko do limitu )
o31 if [#<akt_glebokosc> LT #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o31 endif
g2 x[#<poz_x>] y[[#<poz_y> + #<akt_przesuniecie>]] i0 j[#<akt_przesuniecie> * -1] z[#<akt_glebokosc>] F#<posuw>
o20 endwhile
g2 x[#<poz_x>] y[[#<poz_y> + #<akt_przesuniecie>]] i0 j[#<akt_przesuniecie> * -1] F#<posuw>
(g0 x[#<poz_x>] y[#<poz_y>]) (rysiek do środka)
g0 Z#<wyjazd>
o21 endwhile
g0 z#<wys_przejazd>
o40 endif
o105 else
G83 X#<poz_x> Y#<poz_y> Z#<glebokosc> R#<wyjazd_wiertla> Q#<pompowanie> F#<predkosc_dol>
o105 endif
(g0 x[#<poz_x>] y[#<poz_y>]) (rysiek do środka)
G0 Z#<wyjazd>
( wybieram leb )
o110 if [#<glebokosc_lba> LT 0 and #<pelny> eq 1]
#<akt_glebokosc_lba> = 0
#<szerokosc_zbierania> = [#<frez> / 2]
#<akt_glebokosc_lba> = 0
#<szerokosc_zbierania> = [#<frez> / 2]
#<akt_przesuniecie_lba> = #<przesuniecie> (przesuniecie w Y po wywierceniu otworu)
o25 while [#<akt_przesuniecie_lba> LT #<przesuniecie_lba>]
#<akt_przesuniecie_lba> = [#<akt_przesuniecie_lba> + #<szerokosc_zbierania>] (dobieranie lba w poziomie o 1 trzecia srednicy freza)
o41 if [#<akt_przesuniecie_lba> gt #<przesuniecie_lba>]
#<akt_przesuniecie_lba> = #<przesuniecie_lba>
o41 endif
g0 x[#<poz_x>] y[#<poz_y> + #<akt_przesuniecie_lba>]
g1 z#<akt_glebokosc_lba> F#<predkosc_dol>
(wiercenie)
o120 while [#<akt_glebokosc_lba> GT #<glebokosc_lba>]
#<akt_glebokosc_lba> = [#<akt_glebokosc_lba> - #<skok>] ( ustalenie glebokosci )
( jezeli nizej limitu to jade max )
o130 if [#<akt_glebokosc_lba> LT #<glebokosc_lba>]
#<akt_glebokosc_lba> = #<glebokosc_lba>
o130 endif
g2 x[#<poz_x>] y[#<poz_y> + #<akt_przesuniecie_lba>] i0 j[#<akt_przesuniecie_lba> * -1] z[#<akt_glebokosc_lba>] F#<posuw>
o120 endwhile
g2 x[#<poz_x>] y[#<poz_y> + #<akt_przesuniecie_lba>] i0 j[#<akt_przesuniecie_lba> * -1] F#<posuw>
#<akt_glebokosc_lba> = 0
(G0 Z#<wyjazd>)
(g0 x[#<poz_x>] y[#<poz_y>]) (rysiek do środka)
o25 endwhile
o110 endif
(g0 z#<wys_przejazd>)
( ------------------------------ )
( ------------------------------ )
#<akt_otwor> = [#<akt_otwor> + 1] ( nastepny otwor )
o100 endwhile
(g0 x[#<poz_x>] y[#<poz_y>]) (rysiek do środka)
g0 z#<wys_przejazd>
g0 x0 y0
o<otwory_po_okregu> endsub