Suby ngcgui

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 107
Posty: 1479
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Suby ngcgui

#311

Post napisał: senio » 10 maja 2025, 02:55

Jak ktoś potrafi i zechce dodać w tym subie dodatkową opcję początek stożka w Z to będę wdzięczny

Kod: Zaznacz cały

( ------------------------------ )
(          F A Z A  W E W        )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2012-07-20 14:01> )
( ------------------------------ )

(info: Faza wewnêtrzna )

o<stozek_wew> sub

#<sr_pocz> = #1 (=20 średnica początkowa materiału)
#<sr_stozka> = #2 (=30 średnica stożka)
#<kat> = #3 (=0 kąt...)
#<dlugosc> = #4 (=20 ... albo długość stożka)
#<dobieranie> = #5 (=0.1 Dobieranie)
#<posuw> = #6 (=60 Posuw)
#<woda> = #7 (=0 Woda)

g7
g61

m3 s1
o1 if [#<woda> eq 1]
   M8
o1 endif

#<akt_z> = 0
#<akt_x> = #<sr_pocz>

o5 if [#<kat> eq 0]
#<kroki> = FUP[[#<sr_stozka> - #<sr_pocz>] / #<dobieranie>]
#<dobieranie_z> = [#<dlugosc> / #<kroki>]
o5 else
#<dobieranie_z> = #<dobieranie>
o5 endif


o100 while [#<akt_x> lt #<sr_stozka>]

#<akt_x> = [#<akt_x> + #<dobieranie>]
o110 if [#<akt_x> gt #<sr_stozka>]
  #<akt_x> = #<sr_stozka>
o110 endif

#<akt_z> = [#<akt_z> - #<dobieranie_z>]

g0 x#<akt_x>
g0 z0.5
g1 z0 f#<posuw>
o10 if [#<kat> eq 0]
g1 x#<sr_pocz> z#<akt_z> f#<posuw>
o10 else
g1 x#<sr_pocz> z[[#<akt_z>/tan[#<kat>]] / 2] f#<posuw>
o10 endif
g0 z0.5


o100 endwhile

o<stozek_wew> endsub



Tagi:


szary11
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 384
Rejestracja: 16 lut 2011, 22:44
Lokalizacja: Tarnogród

Re: Suby ngcgui

#312

Post napisał: szary11 » 10 maja 2025, 07:02

Mam chyba coś podobnego na szybko, może to jest to czego szukasz.

Kod: Zaznacz cały

( ------------------------------ )
(          S T O Z E K  2        )
( ------------------------------ )
( Adam                    		)
( Time-stamp: <2016-02-26 15:25 )
( ------------------------------ )

(info: Stożek2 )

 o<stozek2> sub 

 
 #<obr> = #1 (=400 obroty)
 #<odboczka> = #2 (=0 <> odboczka)
 #<sr_materialu> = #3 (=40 Średnica wału / otworu)
 #<rodzaj> = #4 (=0 <> wewnętrzny )
 #<sr_pocz> = #5 (=20 Średnica prawa )
 #<sr_koncowa> = #6 (=30 Średnica lewa...)
 #<kat> = #7 (=0 ...albo kąt < -, > + [kąt ma priorytet])
 #<dl_stozka> = #8 (=20 Długość stożka)
 #<z_pocz> = #9 (=0 Z początkowe )
 #<dobieranie> = #10 (=2 Dobieranie )
 #<ostatnia_warstwa> = #11 (=0.1 ostatnia warstwa)
 
 #<posuw> = #12 (=0.2 posuw [mm/obr] v [mm/min])
 #<posuw_na_obrot> = #13 (=1 <> posuw/obrot)
 #<woda> = #14 (=0 <> chłodzenie )
 
#<stala_pr_skrawania> = #15 (=1 <> stala_pr_skrawania)
#<obroty_max> = #16 (=1200 obroty max)
#<pr_skrawania> = #17 (=200 predkosc skrawania [m/min])

 #<korekta> = #18 (=0 <> korekta )
 #<wielkosc_korekty> = #19 (=0 wielkość korekty)
 #<w_z> = #20 (=5 Z  do zmiany)
#<w_x> = #21 (=50 X  do zmiany)
 
 
#<tangens_kat> = tan[#<kat>]



o1 if [#<rodzaj> eq 0]  (ZEWNETRZNY)
		o20 if [#<sr_materialu> lt #<sr_pocz> or #<sr_materialu> lt #<sr_koncowa>]
			(msg, KOLIZJA ! zły wyjazd)
			M30	
		o20 else
			o21 if [#<w_z> lt 0 or #<w_x> lt #<sr_materialu> ]
			(msg, KOLIZJA ! zły wyjazd)
			M30
			o21 endif
		o20 endif
o1 else  (WEWNETRZNY)
		o22 if [#<sr_materialu> gt #<sr_pocz> or #<sr_materialu> gt #<sr_koncowa>]
			(msg, KOLIZJA ! zły wyjazd)
			M30
		o22 else
			o23 if [#<w_z> lt 0 or #<w_x> gt #<sr_materialu> ]
			(msg, KOLIZJA ! zły wyjazd)
			M30	
			o23 endif
		o22 endif
o1 endif



o2 if [#<odboczka> eq 1]
  #<obr> = [#<obr> * 8]
o2 endif

o3 if [#<odboczka> eq 1]
  #<pr_skrawania> = [#<pr_skrawania> * 8]
  #<obroty_max> = [#<obroty_max> * 8]
o3 endif



m3 s#<obr>

o4 if [#<woda> eq 1] 
   M8 
o4 endif 


o5 if [#<posuw_na_obrot> eq 1]
	G95 
o5 endif


o7 if [#<kat> gt 0 and  #<sr_koncowa> gt 0]
(msg, Podajemy albo kąt albo druga srednicę)



o7 endif


(uzaleznienie srednicy końcowej od kąta) 
(2 warianty - srenica lub kat-preferowany, albo, srednica lub dlogosc)

	o10 if [#<kat> ne 0]
	 (#<dl_stozka> = [[#<sr_pocz> - #<sr_koncowa>]/ 2 / #<tangens_kat> ])
	 #<sr_koncowa> = [ #<sr_pocz> + 2 *[ #<dl_stozka> * #<tangens_kat> ] ]
	o10 endif



(W teorii ujemny kąt powinien odwrocic kierunek stozka)

(stozek zewnętrzny - z uzyciem roznicy srednic, srednica moze byc tez uzalezniona od kąta)


				o99 if [#<sr_pocz> gt #<sr_koncowa>]
						#<srednica_wieksza> = #<sr_pocz>
						#<srednica_mniejsza> = #<sr_koncowa>
						
					(stozek rosnacy)
			o99 else
						#<srednica_wieksza> = #<sr_koncowa>
						#<srednica_mniejsza> = #<sr_pocz>
					
				o99 endif


o100 if [#<rodzaj> eq 0] (ZEWNETRZNY)

	

	o101 if [#<korekta> eq 0]  (ZEWNETRZNY BEZ KOREKTY)
	
						o11 if [#<stala_pr_skrawania> eq 1]
						G96 s#<pr_skrawania> D#<obroty_max>
						o11 endif
		
			( jezeli srednica koncowa mniejsza niz material to zbieram naddatek)
				
			(zaleznie od kierunku pochylenia wieksza bedzie srednica poczatkowa lub koncowa - musimy sie zabezpieczyc)
			
			
						o12 if [#<sr_materialu> gt #<srednica_wieksza>]  (STACZANIE NADDATKU MATERIAŁU)
						 
							#<akt_poz> = #<sr_materialu>
							#<x_koniec> = #<srednica_wieksza>
							
							o200 while [#<akt_poz> gt #<x_koniec>]
									#<akt_poz> = [#<akt_poz> - #<dobieranie>]
									
										o201 if [#<akt_poz> lt #<x_koniec>]
											#<akt_poz> = #<x_koniec>
										o201 endif
									
							o81 if [#<sr_pocz> gt #<sr_koncowa>]				
						(przy stozku od lewej strony walu wjazd do zbierania materialu zlikwidujemy zeby nie ryc w materiale)			
								g0 z[#<z_pocz>]
								g0 x#<akt_poz>
								g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw>
								g1 x[#<akt_poz> + 2] F#<posuw>
								g0 z[#<z_pocz>]
							o81 else				
								g0 z[#<z_pocz> + 1]
								g0 x#<akt_poz>
								g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw>
								g1 x[#<akt_poz> + 2] F#<posuw>
								g0 z[#<z_pocz> + 1]
							o81 endif
				
								
								
							o200 endwhile
				
						o12 endif

			#<x_start> = #<srednica_wieksza>
		
			g0 x[#<srednica_wieksza> + 2]
			g0 z[#<z_pocz> + 1]	
				
					
			o105  if [#<sr_pocz> gt #<sr_koncowa>]   (SREDNICA PRAWA > LEWA)
					
					o202 while [#<x_start> gt #<srednica_mniejsza>]
									#<x_start> = [#<x_start> - #<dobieranie>]
									
										(o203 if [#<x_start> lt #<srednica_mniejsza>])
										(	#<x_start> = #<srednica_mniejsza>)
										(o203 endif)
					
  (jesli ostatnie dobranie wychodzi mniejsze niz zadana grubosc ostatniej warstwy wtedy skroc poprzednie dobranie)
  					
						  o203 if [#<x_start>  eq [#<srednica_mniejsza> + #<ostatnia_warstwa> - #<dobieranie>]]
								#<x_start> = #<srednica_mniejsza>
    
							o203 elseif [#<x_start>  lt [#<srednica_mniejsza>+#<ostatnia_warstwa>] ]
								#<x_start>  = [#<srednica_mniejsza> + #<ostatnia_warstwa>]
							o203 endif
					
					
					
					g0 z[ [#<z_pocz> - #<dl_stozka>] + [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ]
					
					g1 x#<srednica_wieksza> F#<posuw>
					g1 x#<x_start> z[#<z_pocz> - #<dl_stozka>] F#<posuw>
					g0 x[#<srednica_wieksza> + 2]
					
					o202 endwhile
					
					
			o105 endif
			
			o106 if [#<sr_koncowa> gt #<sr_pocz>]  (SREDNICA PRAWA < LEWA)
			
					o204 while [#<x_start> gt #<srednica_mniejsza>]
									#<x_start> = [#<x_start> - #<dobieranie>]
									
										(o209 if [#<x_start> lt #<srednica_mniejsza>])
										(	#<x_start> = #<srednica_mniejsza>)
										(o209 endif)

  (jesli ostatnie dobranie wychodzi mniejsze niz zadana grubosc ostatniej warstwy wtedy skroc poprzednie dobranie)
					
							o209 if [#<x_start>  eq [#<srednica_mniejsza> + #<ostatnia_warstwa> - #<dobieranie>]]
								#<x_start> = #<srednica_mniejsza>
    
							o209 elseif [#<x_start>  lt [#<srednica_mniejsza>+#<ostatnia_warstwa>] ]
								#<x_start>  = [#<srednica_mniejsza> + #<ostatnia_warstwa>]
							o209 endif
					
					g0 z[#<z_pocz> + 1]
					g0 x#<x_start>
					g1 z#<z_pocz> F#<posuw>
					g1 x#<srednica_wieksza> z[ #<z_pocz> - [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ]
					g0 x[#<srednica_wieksza> + 2]
					
					(g0 z[ #<z_pocz> - [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ])
					
					(g1 x#<srednica_wieksza> F#<posuw>)
					(g1 x#<x_start> z#<z_pocz> F#<posuw>)
					(g0 x[#<srednica_wieksza> + 2])
					
					o204 endwhile
			
			o106 endif	
					

	o101 else  (ZEWNETRZNY Z KOREKTĄ)
	
		(---------- korekta ----------)
			#<srednica_mniejsza> = [#<srednica_mniejsza> - #<wielkosc_korekty>]
			#<x_start> = #<srednica_mniejsza>
			
			
			
					o13 if [#<stala_pr_skrawania> eq 1]
					G96 s#<pr_skrawania> D#<obroty_max>
					o13 endif
			
				g0 x[#<srednica_wieksza> + 2]
				g0 z[#<z_pocz> + 1]	
			
			
					o107  if [#<sr_pocz> gt #<sr_koncowa>]
							
					g0 z[ [#<z_pocz> - #<dl_stozka>] + [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ]
				
					g1 x[#<srednica_wieksza> - #<wielkosc_korekty>] F#<posuw>
					g1 x#<srednica_mniejsza> z[#<z_pocz> - #<dl_stozka>] F#<posuw>
					g0 x[#<srednica_wieksza> + 2]
					
					o107 endif
			
	
	
					o108 if [#<sr_koncowa> gt #<sr_pocz>]
					
					g0 z[#<z_pocz> + 2]
					g0 x#<srednica_mniejsza>
					g1 z#<z_pocz> F#<posuw>
					g1 x[#<srednica_wieksza> - #<wielkosc_korekty>] z[#<z_pocz> - #<dl_stozka>]
					
					
					(g1 x[#<srednica_wieksza>] z[ #<z_pocz> - [[#<srednica_wieksza> - #<x_start> + #<wielkosc_korekty>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ] )
					g0 x[#<srednica_wieksza> + 2]
					
					(g0 z[ #<z_pocz> - [[#<srednica_wieksza> - #<x_start> + #<wielkosc_korekty>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ])
					
					(g1 x[#<srednica_wieksza>] F#<posuw>)
					(g1 x#<srednica_mniejsza> z#<z_pocz> F#<posuw>)
					(g0 x[#<srednica_wieksza> + 2])
					
					o108 endif	
					
				
		
	o101 endif
		
o100 else  (WEWNETRZNY)

(wewnetrzny)

(stozek malejacy)
	

	o201 if [#<korekta> eq 0]  (WEWNETRZNY BEZ KOREKTY)
	
						o111 if [#<stala_pr_skrawania> eq 1]
						G96 s#<pr_skrawania> D#<obroty_max>
						o111 endif
		
			( jezeli srednica koncowa wieksza niz otwor to zbieram naddatek)
				
			(zaleznie od kierunku pochylenia wieksza bedzie srednica poczatkowa lub koncowa - musimy sie zabezpieczyc)
			
			
			
						o112 if [#<sr_materialu> lt #<srednica_mniejsza>]  (ZBIERANIE NADDATKU MATERIAŁU)
						 
							#<akt_poz> = #<sr_materialu>
							#<x_koniec> = #<srednica_mniejsza>
							
							o300 while [#<akt_poz> lt #<x_koniec>]
									#<akt_poz> = [#<akt_poz> + #<dobieranie>]
									
										o301 if [#<akt_poz> gt #<x_koniec>]
											#<akt_poz> = #<x_koniec>
										o301 endif
									
									
									
								g0 z[#<z_pocz> + 1]
								g0 x#<akt_poz>
								g1 z[#<z_pocz> - #<dl_stozka>] F#<posuw>
								g1 x[#<akt_poz> - 2] F#<posuw>
								g0 z[#<z_pocz> + 1]
								
							o300 endwhile
			
				
						o112 endif



			#<x_start> = #<srednica_mniejsza>
		
			g0 x[#<srednica_mniejsza> - 2]
			g0 z[#<z_pocz> + 1]	
				
					
			o205  if [#<sr_koncowa> gt #<sr_pocz>]  (SREDNICA PRAWA < LEWA)
			

					o210 while [#<x_start> lt #<srednica_wieksza>]
									#<x_start> = [#<x_start> + #<dobieranie>]
									
									(	o211 if [#<x_start> gt #<srednica_wieksza>])
									(		#<x_start> = #<srednica_wieksza>)
									(	o211 endif)
					
 (jesli ostatnie dobranie wychodzi mniejsze niz zadana grubosc ostatniej warstwy wtedy skroc poprzednie dobranie)
											
					
						o211 if [#<x_start> eq [#<srednica_wieksza> - #<ostatnia_warstwa> + #<dobieranie>]]
							#<x_start> = #<srednica_wieksza>
    
						o211 elseif [#<x_start>  gt [#<srednica_wieksza>-#<ostatnia_warstwa>] ]
							#<x_start> = [#<srednica_wieksza> - #<ostatnia_warstwa>]
						o211 endif
					
					
					
					
					g0 z[ [#<z_pocz> - #<dl_stozka>] + [[#<x_start>-#<srednica_mniejsza>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ]
					
					g1 x#<srednica_mniejsza> F#<posuw>
					
					g1 x#<x_start> z[#<z_pocz> - #<dl_stozka>] F#<posuw>
					g0 x[#<srednica_mniejsza> - 2]
					
					o210 endwhile
									
					
					
					
							
					
			o205 endif
			
			o206 if [#<sr_pocz> gt #<sr_koncowa>]  (SREDNICA PRAWA > LEWA)
			
			
			
					o304 while [#<x_start> lt #<srednica_wieksza>]
									#<x_start> = [#<x_start> + #<dobieranie>]
									
										(o302 if [#<x_start> gt #<srednica_wieksza>])
										(	#<x_start> = #<srednica_wieksza>)
										(o302 endif)
										
(jesli ostatnie dobranie wychodzi mniejsze niz zadana grubosc ostatniej warstwy wtedy skroc poprzednie dobranie)
											
					
						o302 if [#<x_start> eq [#<srednica_wieksza> - #<ostatnia_warstwa> + #<dobieranie>]]
							#<x_start> = #<srednica_wieksza>
    
						o302 elseif [#<x_start>  gt [#<srednica_wieksza>-#<ostatnia_warstwa>] ]
							#<x_start> = [#<srednica_wieksza> - #<ostatnia_warstwa>]
						o302 endif					
					
					
					g0 z[#<z_pocz> + 1]
					g0 x#<x_start>
					
					
					g1 z#<z_pocz> F#<posuw>
					
					g1 x#<srednica_mniejsza> z[[#<z_pocz> - #<dl_stozka>] + [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ]
				
					
					g0 x[#<srednica_mniejsza> - 2]
					
					
					o304 endwhile
			
		
			
			o206 endif	
					

	o201 else   (WEWNETRZNY Z KOREKTĄ)
	
		(---------- korekta ----------)
			#<srednica_mniejsza> = [#<srednica_mniejsza> - #<wielkosc_korekty>]
			#<x_start> = #<srednica_mniejsza>
			
			
					o113 if [#<stala_pr_skrawania> eq 1]
					G96 s#<pr_skrawania> D#<obroty_max>
					o113 endif
			
				g0 x[#<srednica_mniejsza> - 2]
			
				g0 z[#<z_pocz> + 2]	
			
		
					o207  if [#<sr_pocz> gt #<sr_koncowa>]
					
					g0 x[#<srednica_wieksza> + #<wielkosc_korekty>] 	
					g1 z[ [#<z_pocz> - #<dl_stozka>] + [[#<srednica_wieksza> - #<x_start>] * #<dl_stozka> / [#<srednica_wieksza> - #<srednica_mniejsza>]] ] F#<posuw>
				
					
					g1 x[#<srednica_mniejsza> + 2*#<wielkosc_korekty>] z[#<z_pocz> - #<dl_stozka>] F#<posuw>
					g0 x[#<srednica_mniejsza> - 2]
					
					o207 endif
			
	
	
					o208 if [#<sr_koncowa> gt #<sr_pocz>]
					
					(---------- przystozku wewnetrznym nie da sie dojechac nozem i wytoczyc stozka rosnacego w lewo -----------)
										
						(------opcja tymczasowo wyłączona----)
						
						(msg, stożek rosnący wewnetrzny, nie wjedziesz nożem)
					
						
					
					g0 z[#<z_pocz> + 2]
					g0 x#<srednica_mniejsza>
					g1 z#<z_pocz> F#<posuw>
					g1 x[#<srednica_wieksza> - #<wielkosc_korekty>] z[#<z_pocz> - #<dl_stozka>]
					
					
					
					o208 endif	
					
				
		
	o201 endif


o100 endif
g0 x#<w_x> 
g0 z#<w_z> 
 

o<stozek2> endsub 

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 107
Posty: 1479
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Suby ngcgui

#313

Post napisał: senio » 10 maja 2025, 09:52

Dzięki, ale on jest pod stałą prędkość skrawania + wiele innych i mi to nie podejdzie. Kamarowy jest prosty OK, tylko jeden parametr początek Z jest mi potrzebny, aby po toczeniu wewnątrz zrobił na końcu stożek.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 9457
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Suby ngcgui

#314

Post napisał: tuxcnc » 10 maja 2025, 11:59

senio pisze:
10 maja 2025, 09:52
tylko jeden parametr początek Z jest mi potrzebny, aby po toczeniu wewnątrz zrobił na końcu stożek.
To chyba jest bardziej skomplikowane niż sobie to wyobrażasz.
Ale jeśli się mylę, to sobie po prostu przesuń zero w Z.

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 107
Posty: 1479
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Suby ngcgui

#315

Post napisał: senio » 10 maja 2025, 12:33

Na pewno jest to jakieś rozwiązanie i też to rozważam o ile nie da się tego przerobić.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 9457
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Suby ngcgui

#316

Post napisał: tuxcnc » 10 maja 2025, 15:08

senio pisze:
10 maja 2025, 12:33
o ile nie da się tego przerobić.
Da się przerobić, tylko taka przeróbka może nie mieć sensu.
Moim zdaniem lepiej napisać od nowa procedurę roztaczania otworu z niezależnie deklarowanymi stożkami wejściowym i wyjściowym.
Może być niewiele więcej roboty, a bezpieczniej i pewniej.


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 117
Posty: 16328
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

Re: Suby ngcgui

#317

Post napisał: kamar » 10 maja 2025, 18:25

senio pisze:
10 maja 2025, 12:33
Na pewno jest to jakieś rozwiązanie i też to rozważam o ile nie da się tego przerobić.
Zobacz ten, chyba lepszy bo młodszy :)

Kod: Zaznacz cały

( ------------------------------ )
( Faza wewnętrzna - PORĘBA   )
( ------------------------------ )
( Kamar                          )
( Time-stamp: <2018-04-11 13:25> )
( ------------------------------ )

(info: Faza wewnętrzna )

o<faza_wew> sub

#<nr> = #1 (=1 numer narzędzia)
#<obr> = #2 (=400 obroty)
#<odboczka> = #3 (=0 <> odboczka)
#<sr_pocz> = #4 ( Średnica pocz. materiału)
#<sr_stozka> = #5 ( Średnica pocz. stożka)
#<sr_konc> =#6  ( Średnica koń. stożka)
#<kat> = #7 (=30 kąt...)
#<dlugosc> = #8 (=0 ... albo długość stożka)
#<z_poczatkowy> = #9 (=0 Z początkowy)
#<dobieranie> = #10 (=2 Dobieranie)
#<posuw> = #11 (=0.2 Posuw)
#<w_z> = #12 (  Z  do zmiany)
#<w_x> = #13 (  X  do zmiany)
#<woda> = #14 (=1 <> chłodzenie)


(o9 if [#<posuw> gt 1 ])
  (msg, Za duży posuw!)
(  m2)
(o9 endif)

M6 T#<nr> G43

g7
g61

m3 s#<obr>
o1 if [#<woda> eq 1]
   M8
o1 endif

#<akt_z> = #<z_poczatkowy>
#<akt_x> = #<sr_pocz>

o5 if [#<kat> eq 0]
	(	#<kroki> = FUP[[#<sr_stozka> - #<sr_pocz>] / #<dobieranie> / 2])
	(	#<dobieranie_z> = [#<dlugosc> / #<kroki>])
	(#<dobieranie_z> = [[[#<dlugosc> - #<z_poczatkowy>] * #<dobieranie_z>] / [#<sr_stozka> - #<sr_pocz>]])
	#<dobieranie_z> = [[#<dlugosc> - #<z_poczatkowy>] * [#<dobieranie> / [#<sr_stozka> - #<sr_pocz>]]]
o5 else
  #<dobieranie_z> = #<dobieranie>
o5 endif

o100 while [#<akt_x> lt #<sr_stozka>]

  #<akt_x> = [#<akt_x> + #<dobieranie>]
  o110 if [#<akt_x> gt #<sr_stozka>]
    #<akt_x> = #<sr_stozka>
  o110 endif

  #<akt_z> = [#<akt_z> - #<dobieranie_z>]

  g0 z[#<z_poczatkowy> + 0.5]
  g0 x#<akt_x>

  g1 z#<z_poczatkowy> f#<posuw>

  o10 if [#<kat> eq 0]
    g1 x#<sr_konc> z#<dlugosc> f#<posuw>
  o10 else 
	  (  #<akt_z> = [#<z_poczatkowy> + #<dobieranie_z>])
	  (  g1 x#<sr_pocz> z[[#<akt_z>/tan[#<kat>]] / 2] f#<posuw>)
	  g1 X#<sr_konc> Z[#<z_poczatkowy> - [[#<akt_x> - #<sr_konc>] / [2 * tan[#<kat>]]]] F#<posuw>
  o10 endif


o100 endwhile

g0 z#<w_z>
g0 x#<w_x> 

o<faza_wew> endsub
Przesuwanie "Z" w czasie roboty to dopiero głupota :)

Dodane 27 minuty 42 sekundy:
Sprawdziłem, działa od podanego Z.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 9457
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Suby ngcgui

#318

Post napisał: tuxcnc » 10 maja 2025, 18:58

kamar pisze:
10 maja 2025, 18:25
Przesuwanie "Z" w czasie roboty to dopiero głupota :)
Jak zwykle, jak sobie coś ubzdurasz, to nikt Ci nie przetłumaczy...
Po to są offsety, żeby ich używać.

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 107
Posty: 1479
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Suby ngcgui

#319

Post napisał: senio » 10 maja 2025, 20:24

kamar pisze:
10 maja 2025, 18:25

Zobacz ten, chyba lepszy bo młodszy :)
Dzięki wielkie Kamar :). Co prawda z łapy napisałem już, ale jest to super, bo korekty w locie a wielce prawdopodobne, że jakieś wystąpią. Co by nie napisac super że jest. W poniedziałek w robotę pójdzie.
stożek_ok.png
stożek_ok.png (6.17 KiB) Przejrzano 112 razy


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 117
Posty: 16328
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

Re: Suby ngcgui

#320

Post napisał: kamar » 10 maja 2025, 20:34

Drobiazg. Też go nagminnie używamy do np. poprawiania nakiełków.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”