Próbowałem coś wczoraj posklejać parę godzin ale poległem jak Andzia w bratkach

Kod: Zaznacz cały
( Rectangular area probe )
( adapted for ngcgui-compatibility from smartprobe.ngc written by Chris Radek )
( This program repeatedly probes a regular XY grid and writes the )
( probed locations to the file 'probe_result.txt' in the same directory )
( as the .ini file )
( Requires a probe connected to motion.probe-input )
( or use scripts/simulate_probe )
(info: Probe a rectangular area)
o<probe> sub
#<xmin> = #1 (= 0.0)
#<xmax> = #2 (= 10.0)
#<xinterval> = #3 (= 0.1)
#<ymin> = #4 (= 0.0 nie dotykaj dla tokarki)
#<ymax> = #5 (= 0.0 zostaw dla tokarki)
#<yinterval> = #6 (= 1.0 nierusz dla tokarki)
#<zsafe> = #7 (= 1.0)
#<zretract> = #8 (= 2.0 wycofanie Z offset)
#<zprobe> = #9 (= -10.)
#<probespeed> = #10 (= 200)
#<in_or_mm> = #11 (= 21 in|mm 20|21)
#<wait> = #12 (= 1 Wait for Start)
O1 if [ [#<in_or_mm> ne 20] and [#<in_or_mm> ne 21]]
(debug, in_or_mm invalid: #<in_or_mm> - EXITING)
(print, in_or_mm invalid: #<in_or_mm> - EXITING)
(AXIS,notify, probe: in_or_mm invalid - EXITING)
m2
O1 endif
#<xsteps> = [fix [abs[#<xmax> - #<xmin>]/#<xinterval> + 1]]
#<ysteps> = [fix [abs[#<ymax> - #<ymin>]/#<yinterval> + 1]]
G#<in_or_mm>
#<points> = [#<xsteps> * #<ysteps>]
(debug, Probing #<xsteps> * #<ysteps> = #<points> points)
(LOGOPEN,probe_result.txt)
(LOG,# xmin = #<xmin> xmax = #<xmax> xinterval = #<xinterval> xsteps = #<xsteps>)
/(LOG,# ymin = #<ymin> ymax = #<ymax> yinterval = #<yinterval> ysteps = #<ysteps>)
#<yct> = 0
#<xct> = 0
G0Z#<zsafe>
F#<probespeed>
O2 while [#<yct> lt #<ysteps>]
#<xct> = 0
/ G0 Y[#<ymin>+#<yinterval>*#<yct>]
O3 while [#<xct> lt #<xsteps>]
#<xtarget> = 0
O4 if [[#<yct>/2] - fix[#<yct>/2] eq 0]
#<xtarget> = [#<xmin> + #<xinterval> * #<xct>]
O4 else
#<xtarget> = [#<xmin> + #<xinterval> * [#<xsteps> - #<xct> - 1]]
O4 endif
#<probesuccess> = 1
O5 while [#<probesuccess> NE 0]
G38.5 z#<zsafe> (probe until no contact away from work, no error)
#<probesuccess> = #5070
G38.3 x#<xtarget> (probe until contact, toward work, no error)
#<probesuccess> = #5070
O5 endwhile
O6 if [[#<wait> eq 1] and [[#<yct> eq 0] and [#<xct> eq 0]]]
(debug, S to Begin Probe)
m0 (mandatory stop)
/ M110 (axisui.notifications-clear)
O6 endif
G38.2Z#<zprobe> (probe until contact, toward work, with error)
(G0z#<zsafe>)
G91
G0Z#<zretract>
G90
#<probex> = #5061
#<probey> = #5062
#<probez> = #5063
/ (LOG,X#<probex> Y#<probey> Z#<probez>) odkomentuj dla frezarki
(LOG,X#<probex> Z#<probez>)
#<xct> = [#<xct> + 1]
O3 endwhile
(G0Z#<zsafe>)
G91
G0Z#<zretract>
G90
#<yct> = [#<yct> + 1]
O2 endwhile
(LOG,# Finished: total points = #<points>)
(LOGCLOSE)
(debug, Finished: see probe_result.txt)
G0Z#<zsafe>
G0X#<xmin>
/Y#<ymin>
o<probe> endsub
Napisałem z palucha wszelkie kody i porobiłem wszystko. Na koniec również zębatki też z palucha napisałem. Ale obliczanie stopni ośki A przy dziwnych podziałach to nie jest bułka z masłem, bo te cyferki po przecinkach....... dużo tego, i łatwo się walnąć.
Kod: Zaznacz cały
( ------------------------------ )
( K O L A Z E B A T E )
( ------------------------------ )
( Kamar )
( Time-stamp: <2012-09-17 10:49> )
( ------------------------------ )
(info: Nacinaie koła zębatego)
o<frezowanie_tokarka> sub
#<il_zebow> = #1 (=10 Liczba zębów)
#<wjazd> = #2 (=0 Wjazd)
#<dlugosc> = #3 (=-20 Długość)
#<predkosc> = #4 (=50 Prędkość)
#<dlugosc_wstecz> = #5 (=0 Długość wstecz)
#<predkosc_wstecz> = #6 (=100 Prędkość wstecz)
#<woda> = #7 (=0 <> chłodzenie)
#<w_z> = #8 (=0 wyjazd Z)
#<w_x> = #9(=0 wyjazd X)
#<w_y> = #10 (=0 wyjazd Y)
( ------------------------------ )
#<zab> = 0
#<obrot> = [360 / #<il_zebow>]
g0 y0
g0 z0
g0 x0
o1 if [#<woda> eq 1]
m8
o1 endif
o100 while [#<zab> lt #<il_zebow>]
g0 a[#<zab> * #<obrot>]
g0 y#<wjazd>
g1 x#<dlugosc> f[#<predkosc>]
g1 x#<dlugosc_wstecz> f[#<predkosc_wstecz>]
g0 y0
#<zab> = [#<zab> + 1]
o100 endwhile
g0 z#<w_z>
g0 x#<w_x>
g0 y#<w_y>
o<frezowanie_tokarka> endsub
Kod: Zaznacz cały
( ------------------------------------ )
( P R Z E J A Z D P O Z I O M Y )
( ------------------------------------ )
( Kamar )
( Time-stamp: <2019-11-14 07:49> )
( ------------------------------------ )
(info: Przejazd poziomy)
o<przejazd_poziomy> sub
#<obr> = #1 (=1500 obroty)
#<X0> = #2 (=0 X początkowy)
#<X1> = #3 (=0 X końcowy)
#<Z0> = #4 (=0 Z początkowy)
#<Z1> = #5 (=0 Z końcowy)
#<glebokosc> = #6 (=-10 głębokość)
#<glebokosc_poczatkowa> = #7 (=0 Y początkowe )
#<skok> = #8 (=2 skok)
#<predkosc_bok> = #9 (=100 prędkość bok)
#<predkosc_dol> = #10 (=30 prędkość w głąb)
#<kopanie_szybkie> = #11 (=0 <> szybki wjazd)
#<woda> = #12 (=1 <> chłodzenie)
#<w_z> = #13 (wyjazd Z)
#<w_x> = #14 (wyjazd X)
#<w_y> = #15 (wyjazd Y)
( ------------------------------ )
( ------------------------------ )
g17 g21 g61
g0 y5
g0 x#<X0> z#<Z0>
m3 s#<obr>
o1 if [#<woda> eq 1]
m8
o1 endif
#<skok> = ABS[#<skok>]
#<akt_glebokosc> = #<glebokosc_poczatkowa> ( aktualna glebokosc )
o100 while [#<akt_glebokosc> GT #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )
( jezeli nizej limitu to jade max )
o110 if [#<akt_glebokosc> LT #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o110 endif
o115 if [#<kopanie_szybkie>]
g0 y[#<akt_glebokosc>]
o115 else
g0 y[#<akt_glebokosc> + #<skok> + 1]
g1 y[#<akt_glebokosc>] f[#<predkosc_dol>]
o115 endif
G1 x#<X1> z#<Z1> F#<predkosc_bok> ( przejazd )
(sprawdzam czy to koncowa glebokosc czy wracac)
o120 if[#<akt_glebokosc> GT #<glebokosc>]
g0 y[#<glebokosc_poczatkowa> + 4]
g0 x#<X0> z#<Z0>
o120 endif
g0 y[#<glebokosc_poczatkowa> + 4]
g0 x#<X0> z#<Z0>
o100 endwhile
g0 z#<w_z>
g0 x#<w_x>
g0 y#<w_y>
o<przejazd_poziomy> endsub
Kod: Zaznacz cały
( ------------------------------ )
( ZABIELENIE POWIERZCHNI )
( ------------------------------ )
( Kamar )
( Time-stamp: <2019-11-14 07:48> )
( ------------------------------ )
(info: Zabielanie prostokąta )
o<powierzchnia> sub
#<obr> = #1 (=1500 obroty)
#<frez> = #2 (=8 frez)
#<x_pocz> = #3 (=20 X początkowy)
#<x_kon> = #4 (=10 X końcowy )
#<y_pocz> = #5 (=10 Y początkowy)
#<y_kon> = #6 (=20 Y końcowy )
#<glebokosc> = #7 (=-10 głębokość )
#<glebokosc_poczatkowa> = #8 (=0 głębokość poczatkowa )
#<skok> = #9 (=2 skok)
#<predkosc_bok> = #10 (=60 prędkość bok)
#<predkosc_dol> = #11 (=40 prędkość dół)
#<pokrycie> = #12 (=1 zachodzenie w mm )
#<woda> = #13 (=1 <> chłodzenie)
#<w_z> = #14 (=5 wyjazd Z)
#<w_x> = #15 (=0 wyjazd X)
#<w_y> = #16 (=0 wyjazd Y)
( ------------------------------ )
( ------------------------------ )
#<skok> = ABS[#<skok>]
#<przyrost> = [#<frez> - #<pokrycie>]
g17 g21 g61
g0 z[#<glebokosc_poczatkowa>+1]
g0 x#<x_pocz> y#<y_pocz>
m3 s#<obr>
z[#<glebokosc_poczatkowa>+1]
o111 if [#<woda> eq 1]
m8
o111 endif
( pion czy poziom? )
o12 if [ABS[#<x_kon> - #<x_pocz>] GE ABS[#<y_kon> - #<y_pocz>]]
#<poziom> = 1
o12 else
#<poziom> = 0
o12 endif
#<akt_glebokosc> = #<glebokosc_poczatkowa> ( aktualna glebokosc )
#<x_akt> = #<x_pocz>
#<y_akt> = #<y_pocz>
o100 while [#<akt_glebokosc> GT #<glebokosc>]
#<akt_glebokosc> = [#<akt_glebokosc> - #<skok>] ( ustalenie glebokosci )
( jezeli nizej limitu to jade max )
o110 if [#<akt_glebokosc> lt #<glebokosc>]
#<akt_glebokosc> = #<glebokosc>
o110 endif
G1 z[#<akt_glebokosc> + #<skok>]F#<predkosc_dol>
G1 Z#<akt_glebokosc> F#<predkosc_dol> ( dobieranie poczatkowe )
o500 if[#<x_pocz> LT #<x_kon>] ( powierzchnia w prawo )
o510 if[#<poziom> eq 1] (poziomo)
G1 y#<y_akt>
G1 x#<x_kon> f#<predkosc_bok>
o130 while [#<y_akt> lt #<y_kon>]
#<y_akt> = [#<y_akt> + #<przyrost>]
o132 if [#<y_akt> gt #<y_kon>]
#<y_akt> = #<y_kon>
o132 endif
G1 y#<y_akt>
G1 x#<x_pocz> f#<predkosc_bok>
o136 if [#<y_akt> lt #<y_kon>] (sprawdzam czy wykonywac drugą operację)
#<y_akt> = [#<y_akt> + #<przyrost>]
o134 if [#<y_akt> gt #<y_kon>]
#<y_akt> = #<y_kon>
o134 endif
G1 y#<y_akt>
G1 x#<x_kon> f#<predkosc_bok>
o136 endif
o130 endwhile
o510 else (pionowo)
G1 x#<x_akt>
G1 y#<y_kon> f#<predkosc_bok>
o120 while [#<x_akt> lt #<x_kon>]
#<x_akt> = [#<x_akt> + #<przyrost>]
o122 if [#<x_akt> gt #<x_kon>]
#<x_akt> = #<x_kon>
o122 endif
G1 x#<x_akt>
G1 y#<y_pocz> f#<predkosc_bok>
o126 if [#<x_akt> lt #<x_kon>] (sprawdzam czy wykonywać drugą operację)
#<x_akt> = [#<x_akt> + #<przyrost>]
o124 if [#<x_akt> gt #<x_kon>]
#<x_akt> = #<x_kon>
o124 endif
G1 x#<x_akt>
G1 y#<y_kon> f#<predkosc_bok>
o126 endif
o120 endwhile
o510 endif
o500 else ( powierzchnia w lewo )
o520 if[#<poziom> eq 1] (poziomo)
G1 y#<y_akt>
G1 x#<x_kon> f#<predkosc_bok>
o230 while [#<y_akt> lt #<y_kon>]
#<y_akt> = [#<y_akt> + #<przyrost>]
o232 if [#<y_akt> gt #<y_kon>]
#<y_akt> = #<y_kon>
o232 endif
G1 y#<y_akt>
G1 x#<x_pocz> f#<predkosc_bok>
o236 if [#<y_akt> lt #<y_kon>] (sprawdzam czy wykonywac drugą operację)
#<y_akt> = [#<y_akt> + #<przyrost>]
o234 if [#<y_akt> gt #<y_kon>]
#<y_akt> = #<y_kon>
o234 endif
G1 y#<y_akt>
G1 x#<x_kon> f#<predkosc_bok>
o236 endif
o230 endwhile
o520 else (pionowo)
o220 while [#<x_akt> gt #<x_kon>]
G1 x#<x_akt>
G1 y#<y_kon> f#<predkosc_bok>
#<x_akt> = [#<x_akt> - #<przyrost>]
o222 if [#<x_akt> lt #<x_kon>]
#<x_akt> = #<x_kon>
o222 endif
G1 x#<x_akt>
G1 y#<y_pocz> f#<predkosc_bok>
#<x_akt> = [#<x_akt> - #<przyrost>]
o224 if [#<x_akt> lt #<x_kon>]
#<x_akt> = #<x_kon>
o224 endif
G1 x#<x_akt>
G1 y#<y_kon> f#<predkosc_bok>
o220 endwhile
o520 endif
o500 endif
G0 z[#<akt_glebokosc> + #<skok>]
G0 X#<x_pocz> Y#<y_pocz>
#<x_akt> = #<x_pocz>
#<y_akt> = #<y_pocz>
o100 endwhile
g0 z5
g0 X#<x_pocz> Y#<y_pocz>
g0 Z[#<glebokosc> + 1]
g0 z#<w_z>
g0 x#<w_x>
g0 y#<w_y>
o<powierzchnia> endsub