Nasze ustawienia do tokarki pod Axisem
Domyślny Axis dla tokarki wygląda tak:
średnicę początkową podałem 100, na ekranie widać 50 i nie ma znaczka 'fi’, nie widać osi wrzeciona i zamiast osi X mamy 'Rad’ i 'Dia’ – czyli podaną średnicę i promień. Brzydko – chcemy mieć tylko X i Z, i X ma być średnicą a nie promieniem – taki kaprys 😀
1. ⌀ i skale X
Najpierw dodamy znak ’⌀’.
Szukamy pliku hersey.py. Przy LinuxCNC zainstalowanym 'systemowo’ – czyli 2.5.x z Ubuntu 10.10 albo 2.7.0 z Debiana z Machinekitem to będzie /usr/share/pyshared/hersey.py. Przy dystrybucji dla BeagleBone albo przy budowaniu LinuxCNC czy Machinekita lokalnie to będzie plik: ~/linuxcnc/lib/python/hersey.py
Dodajemy naszą średnicę jako znak '@’ do słownika 'translate’ na początku pliku. Zmodyfikowany słownik będzie wyglądał tak dla LinuxCNC 2.5:
translate = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '-': 10, '.': 11, 'X': 12, 'Y': 13, 'Z': 14, 'G': 15, '@': 16}
a tak dla 2.6 i 2.7:
translate = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '-': 10, '.': 11, 'X': 12, 'Y': 13, 'Z': 14, 'G': 15, 'U': 16, 'V': 17, 'W': 18, '@': 19}
poniżej w tablicy self.hersey dodajemy na końcu definicję naszego znaku:
# fi [[(200.0, 320.0), (260.0, 340.0), (320.0, 320.0), (360.0, 260.0), (360.0, 200.0), (320.0, 140.0), (260.0, 120.0), (200.0, 140.0), (160.0, 200.0), (160.0, 260.0), (200.0, 320.0), (160.0, 380.0), (360.0, 80.0)]]
i już – mamy zdefiniowany nowy znak '@’ który po wyrenderowaniu wygląda jak 'fi’.
Otwieramy plik ’glcanon.py’. Będzie w /usr/share/pyshared/rs274/glcanon.py albo w ~/linuxcnc/lib/python/rs274/glcanon.py.
W okolicy linii 650 (dla 2.5) albo 719 (dla 2.6 i 2.7) znajdujemy i modyfikujemy poniższy fragment kodu:
if view != x and g.max_extents[x] > g.min_extents[x]: y_pos = g.min_extents[y] - 6.0*dashwidth bbox = self.color_limit(g.min_extents[x] < machine_limit_min[x]) glPushMatrix() f = fmt % ((g.min_extents[x] - offset[x]) * dimscale * 2) # artur 20.08.2014 glTranslatef(g.min_extents[x] - halfchar, y_pos, z_pos) glRotatef(-90, 0, 0, 1) if view == y: glRotatef(90, 0, 1, 0) glTranslatef(dashwidth*1.5, 0, 0) glScalef(charsize, charsize, charsize) self.hershey.plot_string("@" + f, 0, bbox) # artur 20.08.2014 glPopMatrix() bbox = self.color_limit(g.max_extents[x] > machine_limit_max[x]) glPushMatrix() f = fmt % ((g.max_extents[x] - offset[x]) * dimscale * 2) # artur 20.08.2014 glTranslatef(g.max_extents[x] - halfchar, y_pos, z_pos) glRotatef(-90, 0, 0, 1) if view == y: glRotatef(90, 0, 1, 0) glTranslatef(dashwidth*1.5, 0, 0) glScalef(charsize, charsize, charsize) self.hershey.plot_string("@" + f, 0, bbox) # artur 20.08.2014 glPopMatrix()
Moje zmiany są tylko w liniach opatrzonych komentarzem. Przy wypisywaniu wartości (czyli 'f’) dodaję na początku średnicę – stąd „@”+f . Mnożę też dimscale przez dwa żeby mieć wypisane średnice a nie promienie. Po tych operacjach Axis wygląda tak:
Czyli wymiary mamy dobre i znak 'fi’ jest na miejscu. Malina.
2. Oś wrzeciona
w pliku glcanon.py w okolicy linii: 1465 (dla 2.6 i 2.7) albo 1226 (dla 2.5)
po:
glColor3f(*self.colors['axis_z']) glBegin(GL_LINES) glVertex3f(0.0,0.0,0.0) glVertex3f(0.0,0.0,1.0)
dodajemy:
my_z = -30.0 while(my_z < 30.0): glVertex3f(0.0, 0.0, my_z) glVertex3f(0.0, 0.0, my_z + 1) glVertex3f(0.0, 0.0, my_z + 1.5) glVertex3f(0.0, 0.0, my_z + 1.6) my_z += 2
i mamy śliczną oś wrzeciona. O tak:
3. Rad, Dia i Vel
Zostały tylko te dziwne napisy w lewym górnym rogu.
plik glcanon.py linia 1361 (2.6 i 2.7) albo 1108 (2.5):
zamiast linii:
posstrs[0] = format % ("Rad", positions[0])
dajemy X i średnicę czyli:
posstrs[0] = format % ("X", positions[0] * 2.0)
linię z Dia:
posstrs.insert(1, format % ("Dia", positions[0]*2.0))
zastępujemy linią pustą:
posstrs.insert(1, "")
linię z Vel:
posstrs.append(format % ("Vel", spd))
zastępujemy posuwem:
posstrs.append(format % ("Posuw", spd))
i tyle.
Efekt powinien być zbliżony do tego:
Oczywiście daleki jestem od twierdzenia, że to jest jedyne i najlepsze ustawienie. Bardziej mi chodziło o to, żeby pokazac jak w sumie niewielkim nakładem sił można LinuxCNC dostosować sobie do wymagań/przyzwyczajeń.