Страница 9 из 10

ngcgui

Добавлено: 14 янв 2012, 21:02
nkp
NGCGUI - установка, настройка, описание, примеры.
Примеры
Файлы подпрограмм

NGCGUI это утилита для использования в EMC2 подпрограмм,т.н. мастеров.
Ссылки
http://www.youtube.com/watch?v=Bn8T5Fw0ISs
http://www.linuxcnc.org/docs/2.5/html/g ... ha:O-Codes - О-коды
Установка
Для установки в EMC2 версии 2.4 нужны 4 файла:
ngcgui.rar
(38.12 КБ) 1468 скачиваний
Положить файлы в папку с конфигурацией станка.
Более удобным будет поместить в отдельную папку,тогда можно их использовать для разных кофигураций.
Прописать в ini файле в секции [DISPLAY] пути к этим файлам:
(пример из моего ini файла)
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

[attachment=10]Screenshot-7.png[/attachment][DISPLAY]

USER_COMMAND_FILE = /home/nkp/emc2/ngcgui/ngcgui_tst/tkapp.py
NGCGUI = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui.tcl
TKAPP   = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui_app.tcl
TKAPP   = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui_ttt.tcl
Обратите внимание: : ngcgui_app.tcl должен предшествовать ngcgui_ttt.tcl
Теперь создаем нашу первую вкладку следующей строкой - пока без названия:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

NGCGUI_SUBFILE =""
Запускаем,проверяем:
(для просмотра содержимого нажмите на ссылку)
Screenshot-5.png (55965 просмотров) <a class='original' href='./download/file.php?id=3810&mode=view' target=_blank>Загрузить оригинал (51.01 КБ)</a>
Screenshot-6.png (55965 просмотров) <a class='original' href='./download/file.php?id=3811&mode=view' target=_blank>Загрузить оригинал (50.3 КБ)</a>
Настройка
Теперь создаем сам файл подпрограммы для нашей вкладки.
Он должен быть такого вида:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

o<имя> sub
 тело попрогр
o<имя> endsub
имя- имя подпрограммы,имя файла и название нашей вкладки.
тело подпрогр- g-код, который мы напишем.
Назовем файл lathe (пример будет из токарной обработки):
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

o<lathe> sub
  тело подпрогр
o<lathe> endsub
Окончание файлов должно быть .ngc
Помещаем наш файл lathe.ngc в папку прописанную в ini [DISPLAY]PROGRAM_PREFIX
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

PROGRAM_PREFIX = /home/nkp/emc2/nc_files
и прописываем путь к ней там же:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

NGCGUI_SUBFILE =/home/nkp/emc2/nc_files/lathe.ngc
Проверяем:
(для просмотра содержимого нажмите на ссылку)
Screenshot-3.png (55966 просмотров) <a class='original' href='./download/file.php?id=3809&mode=view' target=_blank>Загрузить оригинал (51.24 КБ)</a>
Кстати,загружаемый по умолчанию EMC файл можно изменить в ini [DISPLAY]
если прописать так
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

OPEN_FILE = ""

не загр. ничего.(как на скриншоте выше.)
Напишем тело нашей подпрограммы.
Его надо начинать с набора инструкций, которые определяют параметры :
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

o<lathe> sub
   #<Material_Dia> =  #1 (=16 Диаметр заготовки)
   #<Final_Dia> =  #2 (=10 Диаметр детали)
   #<Depth_Cut> =  #3 (=2 глуб  прохода)
   #<Final_Cut> =  #4 (=0.00 глуб чист прох)
   #<SurfaceSpeed> =  #5 (=100 Поверхностная скорость)
   #<FeedRate> =  #6 (=40 Подача)
   #<Max_RPM> =  #7 (=1500 обороты)
   #<Z_EndOfCut> =  #8 (=2 финиш )
   #<Z_StartOfCut> =  #9 (=46 L заготовки)
   #<RToolNumber> = #10 (=1 Черновой инстр)
   #<FToolNumber> = #11 (=1 Чистовой инстр)
   #<Coolant> = #12 (=8 Охл вкл=8, Выкл=9)
o<lathe> endsub
Смотрим:
(для просмотра содержимого нажмите на ссылку)
Screenshot-7.png (55964 просмотра) <a class='original' href='./download/file.php?id=3812&mode=view' target=_blank>Загрузить оригинал (56.48 КБ)</a>
Каждая строка появилась во вкладке с возможностью редактировать данные.
Теперь мы в нашей подпрограмме (в g-коде) можем (и будем) использовать переменные.
Например,вмето T1M6 пишем T#<RToolNumber> M6
После набора инструкций (их может быть до 30) непосредственно сам G-код:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

T#<RToolNumber> M6
G43 G7 G96 D#<Max_RPM> S#<SurfaceSpeed>
M3 M#<Coolant>
G0 X#<Material_Dia> Z#<Z_StartOfCut>
#<Current_Dia>=#<Material_Dia>
o100 while [#<Current_Dia> gt #<Final_Dia>]
O101   if [#<Current_Dia>-#<Depth_Cut> gt #<Final_Dia>]
         #<Current_Dia>=[#<Current_Dia>-#<Depth_Cut>]
O101   else
         #<Current_Dia>=#<Final_Dia>
O101   endif
       X#<Current_Dia>
       G1 Z#<Z_EndOfCut> F#<FeedRate>
       G0 X[#<Current_Dia>+0.025]
       Z#<Z_StartOfCut>
o100 endwhile
G0 X[#<Current_Dia>+0.025]
M5 M9               
Z#<Z_StartOfCut>
G49                
G53 G0 X0 Z0       
o<lathe> endsub
Сам файл:
lathe.ngc
(1.28 КБ) 1813 скачиваний
Запускаем,на вкладке нажимаем "Create feature" ,потом "Finalize"
Получаем запрограммированную траекторию:
(для просмотра содержимого нажмите на ссылку)
Screenshot-8.png (55963 просмотра) <a class='original' href='./download/file.php?id=3815&mode=view' target=_blank>Загрузить оригинал (56.69 КБ)</a>
Описание
Примеры
Как объеденить несколько подпрограмм
В программу могут быть объеденены несколько копий как одной подпрограммы, так и разные подпрограммы.
Как это выглядит на практике:
у нас есть 6 вкладок с подпрограммами для фрезерной обработки:
(для просмотра содержимого нажмите на ссылку)
Screenshot.png (55940 просмотров) <a class='original' href='./download/file.php?id=3824&mode=view' target=_blank>Загрузить оригинал (55.81 КБ)</a>
Объеденим их все в одну программу. Открываем первую вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
Этим мы передали наши параметры в создаваемый ngcgui файл auto.ngc. Изменим некоторые параметры(например координаты начала обработки) Нажмем еще раз "CreateFeature".В файл auto.ngc передались также и новые параметры.Нажимаем "Finalize"-загружаем готовый файл с двумя подпрограммами:
(для просмотра содержимого нажмите на ссылку)
Screenshot-1.png (55940 просмотров) <a class='original' href='./download/file.php?id=3825&mode=view' target=_blank>Загрузить оригинал (64.18 КБ)</a>
Чтобы объеденить подпрограммы с разных вкладок :
1.Открываем первую вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
2.Переходим на нужную вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
3.Повторяем,если необходимо.
4.Нажимаем "Finalize".
5. Соглашаемся создать из всех вкладок.
(для просмотра содержимого нажмите на ссылку)
Screenshot-2.png (55940 просмотров) <a class='original' href='./download/file.php?id=3826&mode=view' target=_blank>Загрузить оригинал (65.78 КБ)</a>
Удобней объеденять несколько одинаковых контуров так:
1.создаем из требуемой вкладки копию нажатием кнопки "new"
2.нажимаем "Subfile" ,открываем файл(в нашем случае тот же,что и на первой вкладке)
3.повторяем необходимое число раз
4.корректируем параметры для каждой копии
5.объеденяем все,соблюдая нужную нам последовательность обработки.
(для просмотра содержимого нажмите на ссылку)
Screenshot-3.png (55940 просмотров) <a class='original' href='./download/file.php?id=3827&mode=view' target=_blank>Загрузить оригинал (72.72 КБ)</a>
5. Соглашаемся создать из всех вкладок.
(для просмотра содержимого нажмите на ссылку)
Screenshot12.png (55672 просмотра) <a class='original' href='./download/file.php?id=4009&mode=view' target=_blank>Загрузить оригинал (76.2 КБ)</a>
Файлы подпрoграмм
для токарной обработки
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

;   цикл на уменьшение, который может быть использован как часть  программы

#<start-value> = 15    ;нач значение
#<decrement>   = 1    ;декремент -еденичн. уменшение
#<end-value>   =10    ;конеч значение
#<end>=3  ; значен X
o100 do
;------------------------------------------------------------
G0 X#<end>   ;любые действия
;-----------------------------------------------------------
  G4 P1.0 (маленькая пауза)

  ; алгоритм
  o110 if [[#<start-value> - #<decrement>] GT #<end-value>]
    ; убедиться, что [начальное значение минус декремент] не будет выходить за рамки конечного значения
    #<start-value> = [#<start-value> - #<decrement>]
  o110 else
   
    #<start-value> = #<end-value> 
  o110 endif
;---------------------------------------
 #<end>=[#<end>+2]
;---------------------------------------
o100 while [#<start-value> GT #<end-value>]



M2
шаблон цикла
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

(info: сфера ) 
 o<sfer> sub 
 #<promien_walca> =     #1 (=30 радиус заготовки) 
 #<promien_na_plasko> =  #2 (=20 Радиус части без скругл.) 
 #<promien_kulki> =     #3 (=10 Радиус  скругления) 
 #<przybranie> =     #4 (=1 снятие за прох) 
 #<przesuniecie_z> =     #5 (=0 Начало по Z) 
  #<Coolant>    =        #6 (=8 охлажд вкл=8 выкл=9) 
 #<predkosc> = #7 (=400 скорость резания) 
 #<promien> = #<promien_walca> 
 M3 M#<Coolant> 
 #<walec> = 0 
 #<promien_walca> = [#<promien_walca>-#<promien_na_plasko>] 
 g18 (g7)  G64
 M3 S1000 
 g0 z[#<przesuniecie_z>+1] x[[#<promien>]+1] 
 o100 while [#<walec> lt [#<promien_walca>]] 
 #<walec>=[[#<walec>]+[#<przybranie>]] 
o110 if [[[#<promien_walca>]-[#<walec>]+[#<promien_na_plasko>]]GT [ #<promien_na_plasko>]]
 x[[#<promien_walca>]-[#<walec>]+[#<promien_na_plasko>]]
z[#<przesuniecie_z>] 
 g3 x[[#<promien>]] z-[[#<walec>]-[#<przesuniecie_z>]] r[#<promien_kulki>]  f[#<predkosc>]   
  o110 else  
    G61
 x[[#<promien_walca>]-[#<walec>]+[#<promien_na_plasko>]]
z[#<przesuniecie_z>] 
 g3 x[[#<promien>]] z-[[#<walec>]-[#<przesuniecie_z>]] r[#<promien_kulki>]  f[#<predkosc>] 
  o110 endif
 g0 
 x [[#<promien>]+1] 
 z[#<przesuniecie_z>+1] 
 o100 endwhile 
 o<sfer> endsub
M2
сфера
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

(info: внешний конус) 
 o<stozek> sub 
 #<MaxRPM>          = #1 (= 3000 макс обороты) 
 #<SurfaceUnitsMin> = #2 (= 40 поверхностная скорость) 
 #<Przybranie>        = #3 (= 2 за 1 проход) 
 #<Z-Start>         = #4 (= 0.000 старт по Z) 
 #<kat>           = #5 (= 45 угол конуса) 
 #<dlugosc_stozka> =  #6 (=30 длинна конуса) 
 #<srednica_walka> = #7 (=30 начальный диаметр) 
 #<Coolant>         = #8 (=8 охлаж вкл=8 выкл=9) 
#<FeedRate>        = #9 (=40 подача)
 #<zebrane_max> = [tan[#<kat>]*[#<dlugosc_stozka>]] 
 #<ilosc_przybran> = [[#<zebrane_max>]/[#<przybranie>]] 
 #<zejscie_dlugosci> = [[#<dlugosc_stozka>]/[#<ilosc_przybran>]] 
 #2 = #<zejscie_dlugosci> 
 #1 = 0 
G96 D#<MaxRPM> S#<SurfaceUnitsMin> 
M3
 o100 while [#<ilosc_przybran> gt 0] 
 #1=[[#1]+[#<przybranie>]] 
 g0 z1 
 x[[#<srednica_walka>/2]-[#1]] 
 z0 
 g1 f[#<FeedRate>] z-[#<zejscie_dlugosci>] x[#<srednica_walka>/2] 
 g0 x[[#<srednica_walka>/2]+1] 
 #<ilosc_przybran> = [[#<ilosc_przybran>] - [#<przybranie>]] 
 #<zejscie_dlugosci> = [[#<zejscie_dlugosci>]+[#2]] 
 o100 endwhile  
 g0 z1 
 o<stozek> endsub
конус по его длине
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

(info: проточка наружной поверхности)
o<od> sub
#<Material_Dia> =  #1 (=16 Диаметр заготовки)
   #<Final_Dia> =  #2 (=10 Диаметр детали)
   #<Depth_Cut> =  #3 (=2 глуб  прохода)
   #<Final_Cut> =  #4 (=0.00 глуб чист прох)
#<SurfaceSpeed> =  #5 (=100 Поверхностная скорость)
    #<FeedRate> =  #6 (=40 Подача)
     #<Max_RPM> =  #7 (=3000 обороты)
  #<Z_EndOfCut> =  #8 (=2 финиш )
#<Z_StartOfCut> =  #9 (=46 L заготовки)
 #<RToolNumber> = #10 (=2 Черновой инстр)
 #<FToolNumber> = #11 (=1 Чистовой инстр)
     #<Coolant> = #12 (=8 Охл вкл=8, Выкл=9)

T#<RToolNumber> M6

G43 G7 G96 D#<Max_RPM> S#<SurfaceSpeed>

M3 M#<Coolant> 
G0 X#<Material_Dia> Z#<Z_StartOfCut>
#<Current_Dia>=#<Material_Dia>

o100 while [#<Current_Dia> gt #<Final_Dia>]

O101   if [#<Current_Dia>-#<Depth_Cut> gt #<Final_Dia>]
         #<Current_Dia>=[#<Current_Dia>-#<Depth_Cut>]
O101   else
         #<Current_Dia>=#<Final_Dia>
O101   endif

       X#<Current_Dia>
       G1 Z#<Z_EndOfCut> F#<FeedRate>
       G0 X[#<Current_Dia>+0.025]
       Z#<Z_StartOfCut>
o100 endwhile

G0 X[#<Current_Dia>+0.025]
M5 M9             
Z#<Z_StartOfCut>
G49             
G53 G0 X0 Z0    
o<od> endsub
обработка наружной цилиндрической поверхности
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

(info: расточка)
o<id>sub
      #<Hole_Dia> =  #1 (=16  нач диаметр отверстия)
     #<Final_Dia> =  #2 (=20  кон диаметр отверстия)
     #<Depth_Cut> =  #3 (=1 расточ за 1 проход)
   #<Spring_Cuts> =  #4 (=0 Spring Cuts)
  #<Z_StartOfCut> =  #5 (=46 Z начало обработки)
    #<Z_EndOfCut> =  #6 (=-0.600 Z конец обработки)
  #<SurfaceSpeed> =  #7 (=80 поверхн скорость)
      #<FeedRate> =  #8 (=50 подача)
#<MaxSpindle_RPM> =  #9 (=3000 макс обороты)
    #<ToolNumber> = #10 (=1 № инстр)
       #<Coolant> = #11 (=8 охлажд вкл= 8 выкл=9)

T#<ToolNumber> M6
G43 G7 G96 D#<MaxSpindle_RPM> S#<SurfaceSpeed>
M3 M#<Coolant> 
G0 X#<Hole_Dia> Z#<Z_StartOfCut> 
#<Current-Diameter> = #<Hole_Dia>
o100 while [#<Current-Diameter> lt #<Final_Dia>]
O101   if [#<Current-Diameter> + #<Depth_Cut> lt #<Final_Dia>]
         #<Current-Diameter> = [#<Current-Diameter> + #<Depth_Cut>]
O101   else
         #<Current-Diameter> = #<Final_Dia>
O101   endif
       X#<Current-Diameter>
       G1 Z#<Z_EndOfCut> F#<FeedRate>
       G0 X[#<Current-Diameter>-0.010]
       Z#<Z_StartOfCut>
o100 endwhile
o102 while [#<Spring_Cuts> gt 0]
       G1 X#<Final_Dia>
       Z#<Z_EndOfCut>
       X[#<Final_Dia>-0.010]
       G0 Z#<Z_StartOfCut>
       #<Spring_Cuts> = [#<Spring_Cuts> -1]
o102 endwhile
G0 X[#<Current-Diameter>-0.010]
M5 M9          
Z#<Z_StartOfCut>
G49             
G53 G0 X0 Z0   
o<id>endsub
расточка
taper-od.ngc
(1021 байт) 2049 скачиваний
face.ngc
(894 байт) 2046 скачиваний
для фрезерной обработки
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

 (info: цилиндрический карман)
O<deepcylindricalpocket> sub
  #<xc>     = #1 (= 0 X центр)
  #<yc>     = #2 (= 0 Y центр)
  #<safez>  = #3 (= 8 безоп высота)
  #<depth>  = #4 (= 2 глубина фрезерования)
  #<radius> = #5 (= 5 радиус)
  #<milld>  = #6 (= 6 диаметр фрезы)
  #<frate>  = #7 (= 120 подача)
  #<zstep>  = #8 (= 0.5 z за 1 об)
  #<rstep>  = #9 (= 1 r за 1 об)

  O<if> if [ #<frate> NE 0 ]
    F#<frate>
  O<if> endif
  O<if> if [ #<zstep> EQ 0 ]
    #<zstep> = [#<milld>/2]
  O<if> endif
  O<if> if [ #<rstep> EQ 0 ]
    #<rstep> = [#<milld>/2]
  O<if> endif
  #<z> = #<safez>
  #<r> = [#<radius> - #<milld>/2]
  G0 Z#<safez>
  G4 P0
  G0 X[#<xc> + #<r>] Y#<yc>
  O<loop> while [ 1 ]
    O<if> if [ #<z> - #<zstep> LT #<depth>]
      #<zstep> = [#<z> - #<depth>]
    O<if> endif   
    G40
    G2 X[#<xc> - #<r>] Y#<yc> Z[#<z> - #<zstep>/2] R#<r>
    G2 X[#<xc> + #<r>] Y#<yc> Z[#<z> - #<zstep>] R#<r>   
    #<r1> = #<r>
    O<loop_r> while [ 1 ]
      G2 X[#<xc> - #<r1>] Y#<yc> R#<r1>
      G2 X[#<xc> + #<r1>] Y#<yc> R#<r1>
      #<r1> = [#<r1> - #<rstep>]
      O<if> if [ #<r1> GT 0 ] 
        G1 X[#<xc>+#<r1>]
      O<if> else
        O<loop_r> break
      O<if> endif      
    O<loop_r> endwhile
    G1 X[#<xc> + #<r>]
    #<z> = [#<z> - #<zstep>]
    O<if> if [ #<z> LE #<depth> ]
      O<loop> break
    O<if> endif
  O<loop> endwhile
  G0 Z#<safez>
O<deepcylindricalpocket> endsub
3.png (55573 просмотра) <a class='original' href='./download/file.php?id=4064&mode=view' target=_blank>Загрузить оригинал (75.05 КБ)</a>
цилиндрический карман

Re: ngcgui

Добавлено: 26 май 2014, 19:16
Ворон226
nkp писал(а):Прописать в ini файле в секции [DISPLAY] пути к этим файлам:
(пример из моего ini файла)
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё • Развернуть
Screenshot-7.png
[DISPLAY]

USER_COMMAND_FILE = /home/nkp/emc2/ngcgui/ngcgui_tst/tkapp.py
NGCGUI = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui.tcl
TKAPP = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui_app.tcl
TKAPP = /home/nkp/emc2/ngcgui/ngcgui_tst/ngcgui_ttt.tcl


Обратите внимание: : ngcgui_app.tcl должен предшествовать ngcgui_ttt.tcl
Так как у меня ngcgui уже установлено, то нужно ли прописывать и что прописывать в INI (прописал только NGCGUI_SUBFILE ="" - никакого результата)?

Re: ngcgui

Добавлено: 26 май 2014, 21:58
Serg
А YourGUI :) умеет запускать Tk-приложения внутри себя в соотв. окошке? Axis это делать умеет именно посредством параметров TKAPP, но хитрость в том что эти параметры понимает только axis и никт о кроме него...

Re: ngcgui

Добавлено: 26 май 2014, 22:58
Ворон226
Так я и спрашиваю... Если никак, то буду переделывать AXIS...

Re: ngcgui

Добавлено: 26 май 2014, 23:11
Serg
а в отдельном окошке чем плохо? Оно ведь нужно только на момент задания шага сетки.

Re: ngcgui

Добавлено: 26 май 2014, 23:41
Ворон226
Кнопок - меньше двух десятков... Зачем это все распихивать по окошкам? ИМХО, удобство и эстетика - близнецы сестры ;)

Re: ngcgui

Добавлено: 27 май 2014, 06:56
Serg
Ничего не понял. Какие кнопки?
Кнопка нужна ровно одна - запуск ngcgui. А уже внутри можно выбрать нужную фичу и т.п.

Re: ngcgui

Добавлено: 27 май 2014, 18:32
Ворон226
UAVpilot писал(а):Ничего не понял. Какие кнопки?
Ты сказал про задание шага сетки чуть выше, и я сразу включился в свою задачу... Но это разговор отдельной темы. Для универсального станка широкая библиотека (даже в отдельном окошке) вполне даже симпатична и нужна.

Re: ngcgui

Добавлено: 17 июн 2014, 22:39
Ворон226
Вот хочу я использовать подпрограмму в ngcgui. Настраиваю INI, кладу файл с описанием переменных <имя_1>.ngc в папку /nc_files . Туда же файл auto.ngc...
Получаю вкладку с окошками для ввода значений переменных и кнопки для формирования G-кода.

Но не понял КАК организовать ДВЕ вкладки? Понятно, что в INI , скорее всего, нужно написать:

Код: Выделить всё

[DISPLAY]
DISPLAY = axis
EDITOR = gedit
GLADEVCP = mygui.ui
...
NGCGUI_SUBFILE =/home/sun/linuxcnc/nc_files/<имя_1>.ngc
NGCGUI_SUBFILE =/home/sun/linuxcnc/nc_files/<имя_2>.ngc
...
А что делать с файлом auto.ngc ? Неужели в него прописывать ВСЕ переменные из первой и второй подпрограммы?

Возьмем, для примера, что в подпрограмме 1 будет три переменных, а во второй - 4 переменные. И имена этих переменных будут разные.

Что делать?

Re: ngcgui

Добавлено: 18 июн 2014, 07:44
nkp
файл auto.ngc никуда "ложить" не требуется...(на то он и "auto")
он автоматически создается из вызова подпрограммы (или нескольких сразу)
поэтому в данном случае просто удали файл auto.ngc и всё...

Re: ngcgui

Добавлено: 18 июн 2014, 21:37
Ворон226
А в INI прописывать ДВА файла?

И изначально нет нужды создавать файл auto.ngc ???

Re: ngcgui

Добавлено: 18 июн 2014, 21:46
nkp
Ворон226 писал(а):А в INI прописывать ДВА файла?
да ,два(или сколько необходимо)
Ворон226 писал(а):И изначально нет нужды создавать файл auto.ngc ???
точно - не нужно
==================
кстати - можно "задействовать" сразу несколько вкладок :
открываем первую вкладку - нажимаем "Create Feature" - открываем вторую - опять жмём "Create Feature" - .......-
"Finalize" - соглашаемся "сбить всё в кучу" , и получаем auto.ngc с вызовом подпрограмм из соответствующих вкладок

Re: ngcgui

Добавлено: 18 июн 2014, 22:53
Ворон226
nkp писал(а):кстати - можно "задействовать" сразу несколько вкладок :
открываем первую вкладку - нажимаем "Create Feature" - открываем вторую - опять жмём "Create Feature" - .......-
"Finalize" - соглашаемся "сбить всё в кучу" , и получаем auto.ngc с вызовом подпрограмм из соответствующих вкладок
Это уже понятно. Спасибо!

Re: ngcgui

Добавлено: 19 июн 2014, 22:19
Ворон226
Возникли вопросы:

1. Как передать значение переменной в HAL?
Например, в ngcgui у нас есть переменная <Step>. Можно ли её значение присвоить параметру в HAL? Допустим подать на вход mux2.0.in1 ? И как?

2. Как присвоить переменной в ngcgui значение параметра из HAL ?
Например, мы получаем на выходе mux2.0.out некоторое значение, которое нужно присвоить переменной ngcgui <Speed>. И как?

Re: ngcgui

Добавлено: 20 июн 2014, 01:29
Serg
Типа тонкий намёк. :)

Код: Выделить всё

$ tclsh
% package require Linuxcnc
1.0
% hal getp ini.0.max_limit
1000
% hal setp ini.0.max_limit 500
setting parameter 'ini.0.max_limit' to '500'
Pin 'ini.0.max_limit' set to 500
% hal getp ini.0.max_limit
500
%

Re: ngcgui

Добавлено: 20 июн 2014, 09:21
Nick
Или через inline python, на подобие:

Код: Выделить всё

;py,interpreter.this.params['draw_param_g']=g
(только для последних релизов)

О или вообще через прямой доступ к пинам в Gкоде (тоже вроде только в новых релизах):
http://www.linuxcnc.org/docs/devel/html ... al_items_a
To read arbitrary HAL pins, signals and parameters from G-code, use the following named parameter syntax:
#<_hal[hal_name]>
where hal_name may be a pin, parameter or signal name.

Re: ngcgui

Добавлено: 19 ноя 2014, 19:49
Ворон226
Сегодня пытался сделать такой мастер:

есть файл сложной обработки поверхности на фрезере ("сложной" - это такой обработки, которую нет нужды или возможности запихивать в отдельный мастер). Нужно отфрезеровать на заготовке несколько штук этого элемента.

По аналогии со сверловкой сделал "рыбу":

Код: Выделить всё

o<sverlo> sub
   #<Num_X> =  #1 (=3 кол-во элементов по X)
   #<Step_X> =  #2 (=10 шаг по X, мм)
   #<Num_Y> =  #3 (=3 кол-во элементов по Y)
   #<Step_Y> =  #4 (=10 шаг по Y, мм)
   #<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>
   o100 repeat [#<Num_Y>]
   #<Current_X> = #<Start_X>
      o101 repeat [#<Num_X>]
      G0 X#<Current_X> Y#<Current_Y>

(тут должна быть программа фрезеровки элемента)

      G0 Z5.0
      #<Current_X> = [#<Current_X> + #<Step_X>]
      o101 endrepeat
   #<Current_Y> = [#<Current_Y> + #<Step_Y>]
   o100 endrepeat
G0 Z5.0 M5
G0 X0 Y0
M9
o<sverlo> endsub
Но есть одно БОЛЬШОЕ но... Обычно программа обработки не предусматривает относительные координаты, т.е. в соответствии с "мастером" мы переместимся на место следующей детали, но программа обработки этой детали вернет нас на место первой детали, если...
Если мы не воспользуемся G-кодом временного отступа G92, т.е. после переезда на место фрезеровки следующей детали мы установим
G92 X0 Y0
А в конце работы "мастера" не забываем отменить значения G92 командой G92.2

Проверил - работает.

Вот и подошел я к самому вопросу:
Как просто вставить в "мастер" программу обработки детали? (самый простой способ при помощи Ctrl-C и Ctrl-V я уже знаю ;) )
Нет ли способа в меню "мастера" сделать окошко для вызова внешней программы обработки, которую "мастер" мультиплицирует?

Re: ngcgui

Добавлено: 19 ноя 2014, 20:23
torvn77
Почему бы просто не сместить ось через G10 ?

Вставить программу можно оформив её как вызываемую из мастера внешнею суброутину

Re: ngcgui

Добавлено: 19 ноя 2014, 20:37
Ворон226
torvn77 писал(а):Почему бы просто не сместить ось через G10 ?
А почему не G92?
torvn77 писал(а):Вставить программу можно оформив её как вызываемую из мастера внешнею суброутину
И как?

Re: ngcgui

Добавлено: 19 ноя 2014, 20:48
Ворон226
nkp писал(а):В файле ngcgui.tcl
ограничение на размер png здесь
Так и не нашел как картинку вставить...

Re: ngcgui

Добавлено: 19 ноя 2014, 21:14
nkp
Ворон226 писал(а):Как просто вставить в "мастер" программу обработки детали?
o<cod> call
=========
сам код положить в файл cod.ngc и его в папку с остальными программами...
файл cod.ngc оформить в виде:
o<cod>sub
...
...
o<cod>endsub