Nasze ustawienia do tokarki pod Axisem

Domyślny Axis dla tokarki wygląda tak:

axis_tokarka_1

ś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:

axis_tokarka_2

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:

axis_tokarka_3

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ń.