LinuxCNC - tokarka

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

MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 82
Posty: 3705
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#191

Post napisał: MlKl » 03 gru 2012, 12:12

Zamiast długości stożka dałbym pozycję początkową i końcową w Z, wtedy można toczyć stożek od prawej do lewej i od lewej do prawej. Tak jak jest teraz nie da się tego zrobić.



Tagi:


Autor tematu
kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 96
Posty: 16284
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#192

Post napisał: kamar » 04 gru 2012, 19:34

Pewnie że można. Wszystko można :). Tyle że robiąć non stop na trzech tokarkach, nie pamiętam takiej potrzeby :) A jak ię trafi to się da rade. W toczeniu zew jest to od zawsze. Trudno , leżąc nad Bałtykiem wykupować ubezpieczenie od tzunami.

[ Dodano: 2012-12-04, 07:57 ]
Kula przystosowana do latania :)

Obrazek

Kod: Zaznacz cały

( -*- encoding: utf-8-unix -*-   ) 
( ------------------------------ ) 
(            K U L A             ) 
( ------------------------------ ) 
( Kamar                          ) 
( Time-stamp: <2012-03-14 11:05> ) 
( ------------------------------ ) 

(info: Kula ) 

o<kula> sub

#<sr_pocz> = #1 (=40 Średnica materiału) 
#<sr_stozka> = #2 (=0 Średnica początku kuli) 
#<sr_koncowa> = #3 (=40 Średnica końca kuli) 
#<z_pocz> = #4 (=0 Z początkowe) 
#<dl_stozka> = #5 (=20 Promień kuli) 
#<rodzaj> = #6 (=0 <> wklęsła) 
#<dobieranie> = #7 (=2 Dobieranie) 
#<posuw> = #8 (=60 Posuw) 
#<woda> = #9 (=1 <> chłodzenie) 

g61

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


o300 if [#<sr_pocz> gt #<sr_koncowa>] 

 #<akt_koniec> = [#<z_pocz> - #<dl_stozka>] 
 o305 while [#<sr_pocz> gt #<sr_koncowa>] 
  #<sr_pocz> =[#<sr_pocz> -#<dobieranie>] 
	
       	g0 x[#<sr_pocz> + 1] 
 	g0 z[#<z_pocz> +1] 
 
   g1 z[#<akt_koniec>]  f#<posuw> 
    x[#<sr_pocz> + #<dobieranie>] 
   g0 z[#<z_pocz> + 1] 
 o305 endwhile 

o300 endif



o100 if [#<sr_stozka> lt #<sr_koncowa>] 

#<akt_start> = #<sr_pocz> 
o5 while [#<akt_start> gt #<sr_stozka>] 
  #<akt_start> = [#<akt_start> - #<dobieranie>] 

  o10 if [#<akt_start> lt #<sr_stozka>] 
    #<akt_start> = #<sr_stozka> 
  o10 endif
	
  g0 z[#<z_pocz> +1] 
	g0 x[#<akt_start>] 
	o101 if [#<rodzaj> eq 0] 
g1 z#<z_pocz> f#<posuw> 
  g3 x[#<sr_koncowa>] z[#<z_pocz> - [[[#<sr_koncowa> - #<akt_start>] * #<dl_stozka>] / [#<sr_koncowa> - #<sr_stozka>]]] r[[#<dl_stozka>]] f#<posuw> 
	o101 else
g1 z#<z_pocz> f#<posuw> 
  g2 x[#<sr_koncowa>] z[#<z_pocz> - [[[#<sr_koncowa> - #<akt_start>] * #<dl_stozka>] / [#<sr_koncowa> - #<sr_stozka>]]] r[[#<dl_stozka>]] f#<posuw> 
	o101 endif
	
o5 endwhile

o100 endif

o<kula> endsub
Gwint też optaszkowany.

Obrazek

Kod: Zaznacz cały

( ------------------------------ ) 
(           G W I N T            ) 
( ------------------------------ ) 
( Kamar                          ) 
( Time-stamp: <2012-12-07 09:40> ) 
( ------------------------------ ) 

(info: Gwint ) 

o<gwint> sub 


#<x_pocz> = #1 (=30 średnica początkowa X) 
#<z_pocz> = #2 (=0  początek gwintu Z) 
#<skok> = #3 (=2 skok gwintu [P]) 
#<dlugosc> = #4 (=-50 długość gwintu [Z]) 
#<rodzaj> = #5 (=0 <> wewnętrzny ) 
#<gl_pocz> = #6 (=0.1 Dobieranie [J]) 
#<gl_koncowa> = #7 (=1.2 Głębokość gwintu [K]) 
#<woda> = #8 (=1 <> chłodzenie) 
#<dosuw> = #9 (=0 <> dobieranie boczne ) 

g18 g61 g7

(#<wjazd>=[#<gl_koncowa> *2]) 
#<wjazd> = #<gl_koncowa> 

m3 s300
o100 if [#<woda> eq 1] 
m8
o100 endif



o110 if [#<dosuw> eq 1] 
#<dosuw>=30
o110 endif

o101 if [#<rodzaj> eq 1] 
#<pierwszy> = 0.1
g0 x[#<x_pocz> - 1] 
g0 z#<z_pocz> 
g0 x#<x_pocz> 
o101 endif

o102 if [#<rodzaj> eq 0] 
#<pierwszy> = -0.1
g0 z#<z_pocz> 
g0 x#<x_pocz> 
o102 endif

G76 P#<skok> Z#<dlugosc> I#<pierwszy> J#<gl_pocz> K#<wjazd> r1 Q#<dosuw> 
g18

o<gwint> endsub
Ostatnio zmieniony 07 gru 2012, 11:42 przez kamar, łącznie zmieniany 1 raz.

Awatar użytkownika

MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 82
Posty: 3705
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#193

Post napisał: MlKl » 05 gru 2012, 09:23

To wrzuć jeszcze zmiany w ngcgui.tcl :)


Autor tematu
kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 96
Posty: 16284
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#194

Post napisał: kamar » 05 gru 2012, 10:40

Nikt się nie dopominał to myslałem że niepotrzebne :)

Wieczorem Artur wystawi z komentarzem gdzie i co.

Awatar użytkownika

ArturM
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 6
Posty: 160
Rejestracja: 12 kwie 2008, 07:53
Lokalizacja: Kozienice
Kontakt:

#195

Post napisał: ArturM » 06 gru 2012, 09:23

Zmiany robimy w pliku: usr/lib/tcltk/linuxcnc/ngcgui.tcl

Najpierw zmiana opcjonalna - wyłączenie numerków przed ptaszkami i przyciągnięcie ptaszków do lewej:

Szukamy (w okolicy linii 1574):

Kod: Zaznacz cały

set l [label $fdata.[qid] -text [format %#2d $onum] -anchor e \
   -takefocus 0 -relief ridge -width 2] 
pack $l -side left -fill x -expand 0
i wstawiamy w to w ifa - czyli zastępujemy tym:

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] == -1} { 
  set l [label $fdata.[qid] -text [format %#2d $onum] -anchor e \
        -takefocus 0 -relief ridge -width 2] 
  pack $l -side left -fill x -expand 0
} 
A teraz zmiana obowiązkowa - czyli podmiana pola tekstowego na ptaszka:

Wyszukujemy tego kawałka w okolicy linii 1588:

Kod: Zaznacz cały

set e [entry $fdata.[qid] \
  -width $ew \
  -font $::ngc(any,font) \
  -textvariable $tvar\
  -validate     all\
  -validatecommand \
  [list ::ngcgui::validateNumber $hdl $tvar %W %s %P]] 
i też dodajemy ifa - ale z generowaniem ptaszka - czyli zamieniamy na cos takiego:

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] != -1} { 
  set ::ngc($hdl,arg,comment,$num02) [string range $::ngc($hdl,arg,comment,$num02) 3 1000] 
  set e [checkbutton $fdata.[qid] -anchor w -font $::ngc(any,font) \
        -variable ::ngc($hdl,arg,value,$num)] 
} else { 
   set e [entry $fdata.[qid] \
              -width $ew \
              -font $::ngc(any,font) \
              -textvariable $tvar\
              -validate     all\
              -validatecommand \
                [list ::ngcgui::validateNumber $hdl $tvar %W %s %P]] 
} 
I już. Prosto czysto i przyjemnie. Jak wyrzeźbię comboboxy to podeślę patcha do chłopaków od LinuxCNC albo do Micgesa - może wdrożą :D

EDIT: IFy poprawione wg sugestii tuxcnc
Ostatnio zmieniony 11 gru 2012, 08:09 przez ArturM, łącznie zmieniany 1 raz.

Awatar użytkownika

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

#196

Post napisał: tuxcnc » 06 gru 2012, 19:44

ArturM pisze:I już. Prosto czysto i przyjemnie.
No niezupełnie.
U mnie wykonanie linii :

Kod: Zaznacz cały

set e [checkbutton $fdata.[qid] -anchor w -font $::ngc(any,font) \
        -variable ::ngc($hdl,arg,value,$num)]
Kończy się dość idiotycznym komunikatem

Kod: Zaznacz cały

Traceback (most recent call last): 
  File "/opt/linuxcnc-lathe.sim/bin/axis", line 3255, in <module> 
    root_window.tk.call("package","require",*pkg) 
_tkinter.TclError: unknown option " " 
Shutting down and cleaning up LinuxCNC...
Reszta działa jak powinna.

.

[ Dodano: 2012-12-06, 20:37 ]

Znalazłem dziada.

Błąd formatowania.
Przyczyną okazało się kopiuj/wklej z forum do gedita.
Po wykonaniu takiej operacji za backslashem pojawia się spacja, a musi być koniec linii.
Po usunięciu tej spacji wszystko zaczyna działać.
Czyli mogło by być w jednej linii :

Kod: Zaznacz cały

set e [checkbutton $fdata.[qid] -anchor w -font $::ngc(any,font) -variable ::ngc($hdl,arg,value,$num)]
Tak przy okazji, to bardziej elegancko jest postawić warunki

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] == -1}
czyli nie znaleziono łańcucha i

Kod: Zaznacz cały

if {[string first "<> " $::ngc($hdl,arg,comment,$num02)] != -1}
czyli łańcuch znaleziono.

.

Awatar użytkownika

MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 82
Posty: 3705
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#197

Post napisał: MlKl » 07 gru 2012, 05:00

Nawet działa :)

Obrazek

Jeszcze poproszę radio na podcięcia i combosy na noże, i aplikacja do obsługi toczenia w G1, G2 i G3 zrobi się całkiem przyjemna także wizualnie. Na dziś obsługuje pięć operacji w jednym okienku, w sumie na czterech średnicach.

Obrazek


Autor tematu
kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 96
Posty: 16284
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

#198

Post napisał: kamar » 07 gru 2012, 05:54

tuxcnc pisze: Tak przy okazji, to bardziej elegancko jest postawić warunki
.
Normalnie czułbym się zawiedziony, gdyby kolega czegoś nie wytknął :)
To jest ubranie robocze a nie frak. Zawsze można go sobie uprasować ale lepiej np. dopisać elegancko comboksy i mieć konstruktywny wkład w rozwój programu.

Awatar użytkownika

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

#199

Post napisał: tuxcnc » 08 gru 2012, 05:30

kamar pisze:Normalnie czułbym się zawiedziony, gdyby kolega czegoś nie wytknął :)
Jak zwykle niczego nie rozumiesz, ale odezwać się musisz.
Otóz jak się burdel robi w programie, to się właśnie utrudnia, albo wręcz uniemożliwia innym wprowadzenie zmian.
Dlatego dodany kod powinien być prosty, logiczny i jeszcze lepiej jak obkomentowany.
Jak parametr przyjmuje wartość -1 dla "nie znaleziono", to się powinno sprawdzać czy jest -1 czy nie.
Sprawdzanie czy jest mniejszy od zera to zupełnie niepotrzebne gmatwanie kodu.

.

Awatar użytkownika

MlKl
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 82
Posty: 3705
Rejestracja: 15 sie 2010, 13:44
Lokalizacja: Błonie
Kontakt:

#200

Post napisał: MlKl » 08 gru 2012, 06:18

tuxcnc - byłbyś chory, gdybyś komuś nie nawrzucał, wytykając błędy :)

A ogólnie fajnie by było, gdyby do NGCGUI dopisać możliwość wpisywania rozszerzonego opisu pola, wyskakującego w dymku po najechaniu na opis pola w jego dotychczasowej postaci. Lepiej to widać na zrzucie z oknem programu do zapisywania ekranu w formacie .ogg:

Obrazek

Do zaimplementowania np tak:

Kod: Zaznacz cały

#<sr_materialu> = #1 (=0 Średnica materiału <<Tutaj należy wpisać średnicę surowego wałka, włożonego w uchwyt. Wypełnienie tego pola powoduje automatyczne przetoczenie do średnicy podanej jako początkowa, na długości podanej jako końcowa w osi Z, lub do długości gotowego detalu, podawanej opcjonalnie w następnym polu formularza>>)
Gdzie ngcgui.tcl powinno z komentarza wydzielić wszystko co pomiędzy parami nawiasów trójkątnych, i wyświetlić w dymku po najechaniu myszką na pole.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”