Страница 2 из 2
Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО
Добавлено: 20 июн 2014, 09:34
nkp
Код: Выделить всё
# tkapp.py: specify inifile entry [DISPLAY]USER_COMMAND_FILE = path_to_tkapp.py
# specify tk applications as inifile entries like:
# [DISPLAY]TKAPP = ngcgui_app.tcl
# note: USER_COMMAND_FILE supersedes ~/.axisrc so source it here, once only
try:
first_tkapp
except NameError:
first_tkapp = True
user_rcfile = os.path.expanduser("~/.axisrc")
if first_tkapp and os.path.exists(user_rcfile):
first_tkapp = False
import traceback
try:
execfile(user_rcfile)
except:
tb = traceback.format_exc()
print >>sys.stderr, tb
root_window.tk.call("nf_dialog", ".error", _("Error in ~/.axisrc"),
tb, "error", 0, _("OK"))
class moreTclCommands(nf.TclCommands):
def dynamic_tab(name, text):
tab = widgets.right.insert("end", name, text=text)
tab.configure(borderwidth=1, highlightthickness=0)
return tab
# for emc2.5, _dynamic_tab is in axis.py, so do this instead:
#def dynamic_tab(name, text):
# return _dynamic_tab(name,text) # ccaller: make a frame and pack
def inifindall(section,item):
# support USER_COMMAND_FILE that uses tcl, return tcl list
answer = inifile.findall(section,item)
tlist = ""
for x in answer:
if len(answer) == 1:
tlist = x
else:
tlist = tlist + "{" + x + "} "
return tlist
moreTclCommands(root_window)
tkapp = inifile.findall("DISPLAY","TKAPP") or ""
for app in tkapp:
root_window.tk.call("source",app)
Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО
Добавлено: 20 июн 2014, 11:22
nkp
UAVpilot писал(а):Неоптимальные холостые перемещения.
исходя из этого замечания попробуй такой вариант:
Код: Выделить всё
o<sverlo> sub
(info: сверление)
#<Num_X> = #1 (=5 кол-во отверстий по X)
#<Step_X> = #2 (=10 шаг по X, мм)
#<Num_Y> = #3 (=5 кол-во отверстий по Y)
#<Step_Y> = #4 (=10 шаг по Y, мм)
#<Speed> = #5 (=200 скорость сверловки)
#<Depth> = #6 (=10 глубина сверловки, мм)
#<Step_Z> = #7 (=5 шаг сверловки, мм)
#<Surface> = #8 (=0 высота пов-ти заготовки, мм)
#<Max_RPM> = #9 (=5000 обороты шпинделя)
#<Start_X> = #10 (=0 нач.координата по X, мм)
#<Start_Y> = #11 (=0 нач.координата по Y, мм)
G0 Z5.0
G0 X0 Y0 S#<Max_RPM> M3
#<Current_Y> = #<Start_Y>
#<Current_X> = #<Start_X>
#<i> = 2
G0 X#<Current_X> Y#<Current_Y>
o111 if [[#<Num_X> OR #<Num_Y> ] eq 0]
(msg, set #<Num_X> and #<Num_Y> )
M30
o111 endif
(forward)
#<y> = [#<Num_Y>-1]
o102 REPEAT [#<Num_Y>]
G83 R#<Surface> Z[-1 * #<Depth>] Q#<Step_Z> F#<Speed>
G0 Z5.0
o112 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> + #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o112 ENDIF
o102 ENDREPEAT
(endforward)
o100 WHILE [#<Num_X> gt 1]
o101 IF [[#<i> MOD 2] eq 0]
(jump)
#<Current_X> = [#<Current_X> + #<Step_X>]
G0 X#<Current_X>
(endjump)
(back)
#<y> = [#<Num_Y>-1]
o103 REPEAT [#<Num_Y>]
G83 R#<Surface> Z[-1 * #<Depth>] Q#<Step_Z> F#<Speed>
G0 Z5.0
o113 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> - #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o113 ENDIF
o103 ENDREPEAT
(endback)
o101 ELSE
(jump)
#<Current_X> = [#<Current_X> + #<Step_X>]
G0 X#<Current_X>
(endjump)
(forward)
#<y> = [#<Num_Y>-1]
o104 REPEAT [#<Num_Y>]
G83 R#<Surface> Z[-1 * #<Depth>] Q#<Step_Z> F#<Speed>
G0 Z5.0
o114 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> + #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o114 ENDIF
o104 ENDREPEAT
(endforward)
o101 ENDIF
#<Num_X> =[ #<Num_X> - 1 ]
#<i> = [#<i> + 1]
o100 ENDWHILE
G0 Z5.0 M5
G0 X0 Y0
M9
o<sverlo> endsub
схематично это выглядит так:
Код: Выделить всё
#<_Current_Y> = #<_Start_Y>
#<_Current_X> = #<_Start_X>
#<i> = 2
G1 F300 X#<_Current_X> Y#<_Current_Y>
o<forward> call
o100 WHILE [#<Num_X> gt 1]
o101 IF [[#<i> MOD 2] eq 0]
o<jump> call
o<back> call
o101 ELSE
o<jump> call
o<forward> call
o101 ENDIF
#<Num_X> =[ #<Num_X> - 1 ]
#<i> = [#<i> + 1]
o100 ENDWHILE
то есть :
"работаем вперед"(o<forward> call)
проверяем на четность номер ряда и в зависимости от этого
"работаем вперед " или "назад" (o<back> call)
между проходами o<jump> call
Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО
Добавлено: 20 июн 2014, 12:25
nkp
очевидно .что эту подпрограмму можно использовать для любого действия ,повторяещегося
по данной схеме...
для этого непосредственный код "работы" заменяем на вызов подпрограммы(o<operation> call) , записаной в отдельном файле :
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
o<sv_backup> sub
(info: сверление)
#<Num_X> = #1 (=5 кол-во отверстий по X)
#<Step_X> = #2 (=10 шаг по X, мм)
#<Num_Y> = #3 (=5 кол-во отверстий по Y)
#<Step_Y> = #4 (=10 шаг по Y, мм)
#<Speed> = #5 (=200 скорость сверловки)
#<Depth> = #6 (=10 глубина сверловки, мм)
#<Step_Z> = #7 (=5 шаг сверловки, мм)
#<Surface> = #8 (=0 высота пов-ти заготовки, мм)
#<Max_RPM> = #9 (=5000 обороты шпинделя)
#<Start_X> = #10 (=0 нач.координата по X, мм)
#<Start_Y> = #11 (=0 нач.координата по Y, мм)
G0 Z5.0
G0 X0 Y0 S#<Max_RPM> M3
#<Current_Y> = #<Start_Y>
#<Current_X> = #<Start_X>
#<i> = 2
G0 X#<Current_X> Y#<Current_Y>
o111 if [[#<Num_X> OR #<Num_Y> ] eq 0]
(msg, set #<Num_X> or #<Num_Y> )
m30
o111 endif
(forward)
#<y> = [#<Num_Y>-1]
o102 REPEAT [#<Num_Y>]
o<operation> call
o112 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> + #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o112 ENDIF
o102 ENDREPEAT
(endforward)
o100 WHILE [#<Num_X> gt 1]
o101 IF [[#<i> MOD 2] eq 0]
(jump)
#<Current_X> = [#<Current_X> + #<Step_X>]
G0 X#<Current_X>
(endjump)
(back)
#<y> = [#<Num_Y>-1]
o103 REPEAT [#<Num_Y>]
o<operation> call
o113 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> - #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o113 ENDIF
o103 ENDREPEAT
(endback)
o101 ELSE
(jump)
#<Current_X> = [#<Current_X> + #<Step_X>]
G0 X#<Current_X>
(endjump)
(forward)
#<y> = [#<Num_Y>-1]
o104 REPEAT [#<Num_Y>]
o<operation> call
o114 IF [#<y> gt 0]
#<Current_Y> = [#<Current_Y> + #<Step_Y>]
G0 X#<Current_X> Y#<Current_Y>
#<y> = [#<y> - 1]
o114 ENDIF
o104 ENDREPEAT
(endforward)
o101 ENDIF
#<Num_X> =[ #<Num_X> - 1 ]
#<i> = [#<i> + 1]
o100 ENDWHILE
G0 Z5.0 M5
G0 X0 Y0
M9
o<sv_backup> endsub
а уже в файле operation.ngc пропишем наш код для выполнения :
Код: Выделить всё
o<operation> sub
G0 Z.5
G1 F50 Z-.5
G91
X2
Y2
X-2
Y-2
G90
G0 Z5.0
o<operation> endsub
Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО
Добавлено: 20 июн 2014, 16:49
Ворон226
Nick писал(а):А кто это такой? Можно его тоже посмотреть?
Пока сам до него не добрался... Но то, что его нужно положить для пользования - это верно подмечено.
Дополнил.
Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО
Добавлено: 20 июн 2014, 16:54
Ворон226
Стремление сделать все универсальным - хорошее стремление. Только зачем кипятить чай велосипедом?
Я заведомо сузил задачу, определив её как ПЕРЕНАСТРАИВАЕМЫЙ АВТОМАТ. Даже не станок.
Но замечания правильные, познавательные. И не совсем для чайников. (но ведь когда-нибудь чайник станет НЕчайником? Хочется надеяться)