lathecode

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 9874
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

lathecode

#1

Post napisał: tuxcnc » 02 sty 2026, 13:11

Zupełnie przypadkiem trafiłem dziś na bardzo prosty, bardzo fajny i niestety totalnie spieprzony program CAM dla tokarki.
https://kachurovskiy.com/lathecode/
Że program jest bardzo prosty, to od razu widać, że fajny też, natomiast że spieprzony jest już ukryte, ale łatwo do tego dojdziemy.
Istotą działania programu jest wygenerowanie g-kodu z bardzo prostego skryptu, na przykład:

Kod: Zaznacz cały

STOCK D5
L1 D2
L3 D3
L4 DS3 DE5
Czyli z materiału o średnicy 5 tniemy najpierw walec d=2 l=1, za nim walec d=3 l=3 i na koniec stożek od d=3 do d=5 i l=4. jak na poniższym podglądzie:
Obrazek
Do wielu operacji typu "czop pod łożysko" taki program w zupełności wystarczy, jest totalnie za darmo, a jego nauka zajmie kilka minut...
Są jeszcze inne polecenia, bardzo użyteczne, ale nie będę ich opisywał, bo autor zrobił to bardzo dobrze.
https://github.com/kachurovskiy/lathecode/tree/main/src
Jest tam też kod źródłowy, co jest bardzo istotne, ale o tym później.

Tyle pochwał, przejdźmy do wad.
Program jest napisany pod specyficzną maszynę ze specyficznym sterowaniem, w czym formalnie nie ma niczego złego, ale autor dał też możliwość wygenerowania kodu na inne sterowania, co właśnie spieprzył i to totalnie.
Jego maszyna, z zupełnie nieznanych powodów, ma odwrócone osie, co da się naprawić poleceniem AXES RIGHT DOWN, ale ono co prawda osie odwraca, ale początek obróbki nadal ustawia w "minus X", co jest gwarancją pięknego dzwona...
Dodatkowo, sterowanie użyte przez autora nie obsługuje kodów G0 i G1, więc w wygenerowanym kodzie ich nie ma. LinuxCNC wywali błąd i nie ruszy, ale spodziewam się, że w innym sterowaniu może być jeszcze gorzej i może na przykład wykonać cały program na G0...
Autor ewidentnie tak jest zapatrzony w swoje dzieła, że reszty świata poza nimi nie widzi.
Tak więc musimy w gotowym programie wykonać kilka, na szczęście dość prostych zmian.
Oto przykładowy fragment wygenerowanego g-kodu:

Kod: Zaznacz cały

G21 ; metric
G18 ; ZX plane
G90 ; absolute positioning
F200
X-2.5 ; zero your tool X on centerline
Po G90 trzeba zamienić F200 na G1 F200, następnie usunąć znak "minus" z X- w następnej linii (jeśli odwróciliśmy kierunek osi), oraz na końcu programu dopisać M2 (albo "procenty" na początku i końcu programu).
Trochę to upierdliwe, ale jak widać nic szczególnie trudnego. (Można użyć do tego skryptu, jeśli ktoś potrafi.)
Tak zmieniony program powinien dać się uruchomić na każdym normalnym sterowaniu i nie robić żadnych niespodzianek.

Wróćmy do https://github.com/kachurovskiy/lathecode/tree/main/src.
Jest tam opublikowany kod źródłowy, który (jak twierdzi autor, bo ja nie sprawdzałem) da się skompilować do strony HTML, którą można otworzyć lokalnie, w (przynajmniej teoretycznie) dowolnej przeglądarce. O ile to faktycznie zadziała, to można usunąć błędy o których pisałem.



Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 9874
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: lathecode

#2

Post napisał: tuxcnc » 02 sty 2026, 16:15

Próbowałem skompilować źródła z Githuba, pluło błędami, czegoś brakuje w komputerze i cholera wie co to miałoby być...
Nie to że się nie da, bo autorowi jakoś się udaje, tylko raczej gra niewarta świeczki...

Dla Linuksa jest bardzo proste rozwiązanie:

Kod: Zaznacz cały

sed -i -e '/centerline/ s/[-]//' -e '/absolute/ a G1 F1' -e '$aM2'  nazwa_pliku
sed to takie polecenie terminala, -i oznacza że ma być zmieniony plik który podajemy jako ostatni parametr (inaczej wyświetli jego zawartość ze zmianami, ale tych zmian nie zapisze), a parametry po każdym -e to kolejne polecenia dla programu sed.
Pierwsze usuwa znak minus z linii zawierającej ciąg centerline (jest tylko jedna taka linia), drugie dodaje linię zawierającą G1 F1 po linii zawierającej ciąg absolute (jest tylko jedna taka linia), a trzecie dodaje linię zawierającą M2 na końcu pliku. Tłumaczę to, bo składnia sed jest strasznie wkurzająca, ciąg znaczków z pozoru bez sensu, a jak się któryś pomyli, to przestaje działać...
G1 F1 jest z tego powodu, że G1 nie pójdzie bez parametru F, co jest w sumie oczywiste, parametr F może być dowolny (F1 jest bezpieczne), bo i tak zaraz zostanie nadpisany nową wartością. Linia jest dopisywana akurat w tym miejscu, bo jest to najłatwiejsze i na pewno nie będzie z tego problemu.
Oczywiście usunięcie znaku minus to nie jest rozwiązanie problemu, tylko jego obejście. W skrypcie kompilowanym przez stronę lathecode trzeba dodać linię AXES RIGHT DOWN i po prostu upewnić się, że program wykona się jak tego chcemy, zanim go uruchomimy.
Warto też używać MODE TURN żeby nie rżnęło jak przecinakiem, co formalnie błędem nie jest, ale małe tokarki tego nie lubią...
Przy większych elementach ślimaki mu się rozbiegają, ale pracę po jakimś czasie kończy prawidłowo.
I jeszcze kilka obrazków:
Obrazek
Obrazek
Obrazek

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne dyskusje na temat oprogramowania CAD/CAM”