Znaleziono 2 wyniki

autor: kamar
04 gru 2025, 06:09
Forum: LinuxCNC (dawniej EMC2)
Temat: suby linuxcnc
Odpowiedzi: 4
Odsłony: 633

Re: suby linuxcnc

Niestety, kobyły nie mam i nie miałem. Była niezgodna z moją filozofią :)
Ale wiem , że koledzy mają i używają. Tylko czemu nikt nie wystawia ?
autor: kamar
03 gru 2025, 10:35
Forum: LinuxCNC (dawniej EMC2)
Temat: suby linuxcnc
Odpowiedzi: 4
Odsłony: 633

Re: suby linuxcnc

Tak pięknie AI poprawiło mojego starego suba, że aż grzech trzymać go tylko dla siebie :)
Obrazek Obrazek

Kod: Zaznacz cały

( ------------------------------ )
(  W I E L O K Ą T  SPIRALNY   )
( ------------------------------ )
( Kamar - zmodyfikowane          )
( Wielokąt z ciągłym przybraniem )
( ------------------------------ )
(          USTAWIENIA            )
( ------------------------------ )
(info: Nacinanie wielokąta z ruchem helikalnym)
o<wielokat> sub

#<z_poczatkowe> = #1 (=0 wysokość początkowa)
#<frez> = #2 (frez)
#<rozmiar> = #3 (wymiar)
#<glebokosc> = #4 (głębokość)
#<predkosc> = #5 (=100 prędkość)
#<boki> = #6 (liczba boków)
#<przyrost_okrazenie> = #7 (=2.0 przybranie)
#<x_wyjazd> = #8 (=0 pozycja X wyjazdu)
#<y_wyjazd> = #9 (=0 pozycja Y wyjazdu)
#<z_wyjazd> = #10 (=5 pozycja Z wyjazdu)

( ------------------------------ )
( ------------------------------ )

( Wartość domyślna dla Z początkowego )
o10 if [#<z_poczatkowe> eq 0]
  #<z_poczatkowe> = 5
o10 endif

( Sprawdzenie minimalnej liczby boków )
o11 if [#<boki> lt 3]
  #<boki> = 3
o11 endif

( Sprawdzenie przyrostu )
o12 if [#<przyrost_okrazenie> eq 0]
  #<przyrost_okrazenie> = 2.0
o12 endif

( Wartości domyślne dla pozycji wyjazdu )
o13 if [#<x_wyjazd> eq 0]
  #<x_wyjazd> = 0
o13 endif

o14 if [#<y_wyjazd> eq 0]
  #<y_wyjazd> = 0
o14 endif

o15 if [#<z_wyjazd> eq 0]
  #<z_wyjazd> = 50
o15 endif

( Korekcja rozmiaru o średnicę freza )
#<rozmiar> = [#<rozmiar> + #<frez>]

( Obliczenie promienia w zależności od parzystości boków )
#<kat_pol> = [180.0 / #<boki>]
#<cos_kat> = cos[#<kat_pol>]

( Sprawdzenie parzystości: modulo 2 )
#<reszta> = [#<boki> - [fix[#<boki> / 2] * 2]]

o16 if [#<reszta> eq 0]
  ( PARZYSTE: rozmiar = klucz na płasko )
  #<promien> = [#<rozmiar> / [2 * #<cos_kat>]]
o16 else
  ( NIEPARZYSTE: rozmiar = bok → wierzchołek )
  #<promien> = [#<rozmiar> / [1 + #<cos_kat>]]
o16 endif

#<glebokosc> = [#<glebokosc> * -1]
#<kat> = [360.0 / #<boki>]  ( kąt między bokami )

( Obliczenie przyrostu Z na jeden bok )
#<dz_na_bok> = [#<przyrost_okrazenie> / #<boki>]

g17 g21 g61
g0 z#<z_poczatkowe> m3 s1

( Start w pierwszym wierzchołku - góra )
#<x_start> = [#<promien> * cos[90]]
#<y_start> = [#<promien> * sin[90]]

g0 x#<x_start> y#<y_start>
g0 z2 m3 s1
m8

( Zmienna głębokości )
#<z_aktualny> = 0

( Pętla - schodzenie spiralne )
o100 while [#<z_aktualny> gt #<glebokosc>]
  
  ( Pętla rysująca wielokąt z jednoczesnym schodzeniem )
  #<i> = 1
  o200 while [#<i> le #<boki>]
    
    ( Obliczenie następnej pozycji XY )
    #<kat_wierzcholka> = [90 - [#<i> * #<kat>]]
    #<x_cel> = [#<promien> * cos[#<kat_wierzcholka>]]
    #<y_cel> = [#<promien> * sin[#<kat_wierzcholka>]]
    
    ( Obliczenie następnej głębokości Z )
    #<z_cel> = [#<z_aktualny> - #<dz_na_bok>]
    
    ( Sprawdzenie, czy nie przekroczyliśmy docelowej głębokości )
    o210 if [#<z_cel> lt #<glebokosc>]
      #<z_cel> = #<glebokosc>
    o210 endif
    
    ( Ruch XYZ jednocześnie )
    g1 x#<x_cel> y#<y_cel> z#<z_cel> f#<predkosc>
    
    #<z_aktualny> = #<z_cel>
    #<i> = [#<i> + 1]
    
    ( Jeśli osiągnęliśmy docelową głębokość, przerwij wewnętrzną pętlę )
    o220 if [#<z_aktualny> le #<glebokosc>]
      o200 break
    o220 endif
    
  o200 endwhile
  
  ( Jeśli osiągnęliśmy docelową głębokość, przerwij zewnętrzną pętlę )
  o230 if [#<z_aktualny> le #<glebokosc>]
    o100 break
  o230 endif
  
o100 endwhile

( Jedno przejście wyrównujące od miejsca zakończenia spirali )
#<koniec_wyrownania> = [#<i> + #<boki>]
o300 while [#<i> lt #<koniec_wyrownania>]
  #<kat_wierzcholka> = [90 - [#<i> * #<kat>]]
  #<x_cel> = [#<promien> * cos[#<kat_wierzcholka>]]
  #<y_cel> = [#<promien> * sin[#<kat_wierzcholka>]]
  g1 x#<x_cel> y#<y_cel> z#<glebokosc> f#<predkosc>
  #<i> = [#<i> + 1]
o300 endwhile

g0 z#<z_poczatkowe>
g0 x#<x_wyjazd> y#<y_wyjazd>
g0 z#<z_wyjazd>
m9
m5

o<wielokat> endsub

Wróć do „suby linuxcnc”