вопрос по центровке отрисовки в gremlin ...
в Axis функция o.set_centerpoint(x, y, z ) центровки вызывается в двух местах(при загрузке и после загрузки ж-кода):
Код: Выделить всё
def open_file_name(f):
open_file_guts(f)
if str(widgets.view_x['relief']) == "sunken":
commands.set_view_x()
elif str(widgets.view_y['relief']) == "sunken":
commands.set_view_y()
elif str(widgets.view_z['relief']) == "sunken":
commands.set_view_z()
elif str(widgets.view_z2['relief']) == "sunken":
commands.set_view_z2()
else:
commands.set_view_p()
if o.canon is not None:
x = (o.canon.min_extents[0] + o.canon.max_extents[0])/2
y = (o.canon.min_extents[1] + o.canon.max_extents[1])/2
z = (o.canon.min_extents[2] + o.canon.max_extents[2])/2
o.set_centerpoint(x, y, z)
из glnav.py:
Код: Выделить всё
def set_centerpoint(self, x, y, z):
"""Set the new center point for the model.
This is where we are looking."""
self.xcenter = x
self.ycenter = y
self.zcenter = z
print "glnav", x,y,z
self._redraw()
далее это "уходит" наверно(?) в minigl.c с корнями в самой библиотеке GL
если пытаться задать свои координаты центровки(ну вот хоть из кода Axis):
Код: Выделить всё
if o.canon is not None:
x = -20.0
y = (o.canon.min_extents[1] + o.canon.max_extents[1])/2
z = (o.canon.min_extents[2] + o.canon.max_extents[2])/2
o.set_centerpoint(x, y, z)
то заданное значение функция принимает - но отрисовка остается прежней(
такое впечатление ,что моментально перерисовывается из другого места...
но set_centerpoint вызывается только в этих двух файлах:
Код: Выделить всё
$nkp@nkp-desktop:~$ grep -rl 'set_centerpoint' /home/nkp/emc2-dev-80db2a2/
/home/nkp/emc2-dev-80db2a2/bin/axis
/home/nkp/emc2-dev-80db2a2/src/emc/usr_intf/axis/scripts/axis.py
/home/nkp/emc2-dev-80db2a2/lib/python/glnav.py
/home/nkp/emc2-dev-80db2a2/lib/python/glnav.pyc
/home/nkp/emc2-dev-80db2a2/lib/python/rs274/glcanon.py
glcanon.py
========
вроде бы мелочь , но "нарисовав" в Axis линии заготовки , хотелось чтоб центровалось именно по ней ...
сейчас сделано "по центру" загруженной программы (Gcode)