Страница 1 из 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 КБ) 1465 скачиваний
Положить файлы в папку с конфигурацией станка.
Более удобным будет поместить в отдельную папку,тогда можно их использовать для разных кофигураций.
Прописать в 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 (55814 просмотров) <a class='original' href='./download/file.php?id=3810&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (51.01 КБ)</a>
Screenshot-6.png (55814 просмотров) <a class='original' href='./download/file.php?id=3811&sid=d62d6ed95fab8354a6ba7066c0da8b4d&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 (55815 просмотров) <a class='original' href='./download/file.php?id=3809&sid=d62d6ed95fab8354a6ba7066c0da8b4d&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 (55813 просмотров) <a class='original' href='./download/file.php?id=3812&sid=d62d6ed95fab8354a6ba7066c0da8b4d&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 КБ) 1810 скачиваний
Запускаем,на вкладке нажимаем "Create feature" ,потом "Finalize"
Получаем запрограммированную траекторию:
(для просмотра содержимого нажмите на ссылку)
Screenshot-8.png (55812 просмотров) <a class='original' href='./download/file.php?id=3815&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (56.69 КБ)</a>
Описание
Примеры
Как объеденить несколько подпрограмм
В программу могут быть объеденены несколько копий как одной подпрограммы, так и разные подпрограммы.
Как это выглядит на практике:
у нас есть 6 вкладок с подпрограммами для фрезерной обработки:
(для просмотра содержимого нажмите на ссылку)
Screenshot.png (55789 просмотров) <a class='original' href='./download/file.php?id=3824&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (55.81 КБ)</a>
Объеденим их все в одну программу. Открываем первую вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
Этим мы передали наши параметры в создаваемый ngcgui файл auto.ngc. Изменим некоторые параметры(например координаты начала обработки) Нажмем еще раз "CreateFeature".В файл auto.ngc передались также и новые параметры.Нажимаем "Finalize"-загружаем готовый файл с двумя подпрограммами:
(для просмотра содержимого нажмите на ссылку)
Screenshot-1.png (55789 просмотров) <a class='original' href='./download/file.php?id=3825&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (64.18 КБ)</a>
Чтобы объеденить подпрограммы с разных вкладок :
1.Открываем первую вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
2.Переходим на нужную вкладку,корректируем ,если нужно параметры,нажимаем "CreateFeature".
3.Повторяем,если необходимо.
4.Нажимаем "Finalize".
5. Соглашаемся создать из всех вкладок.
(для просмотра содержимого нажмите на ссылку)
Screenshot-2.png (55789 просмотров) <a class='original' href='./download/file.php?id=3826&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (65.78 КБ)</a>
Удобней объеденять несколько одинаковых контуров так:
1.создаем из требуемой вкладки копию нажатием кнопки "new"
2.нажимаем "Subfile" ,открываем файл(в нашем случае тот же,что и на первой вкладке)
3.повторяем необходимое число раз
4.корректируем параметры для каждой копии
5.объеденяем все,соблюдая нужную нам последовательность обработки.
(для просмотра содержимого нажмите на ссылку)
Screenshot-3.png (55789 просмотров) <a class='original' href='./download/file.php?id=3827&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (72.72 КБ)</a>
5. Соглашаемся создать из всех вкладок.
(для просмотра содержимого нажмите на ссылку)
Screenshot12.png (55521 просмотр) <a class='original' href='./download/file.php?id=4009&sid=d62d6ed95fab8354a6ba7066c0da8b4d&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 байт) 2045 скачиваний
face.ngc
(894 байт) 2040 скачиваний
для фрезерной обработки
(для просмотра содержимого нажмите на ссылку)

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

 (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 (55422 просмотра) <a class='original' href='./download/file.php?id=4064&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (75.05 КБ)</a>
цилиндрический карман

Re: ngcgui

Добавлено: 14 янв 2012, 22:36
nkp
В файле ngcgui.tcl
ограничение на размер png здесь

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

  # common to any instance items:
  set ay(any,app)                ngcgui
  set ay(any,entrykeys,special)  {x X y Y z Z a A b B c C u U v V w W d D}
  set ay(any,dir,just)           "/tmp/ngcgui_bak" ;# set to "" to disable
  set ay(any,aspect)             horiz
  set ay(any,font)               {Helvetica -10 normal}
  set ay(any,width,comment)      12
  set ay(any,width,varname)      12
  set ay(any,img,width,max)   320 ;# subsample image to this max size
  set ay(any,img,height,max)   240;# subsample image to this max size
(для просмотра содержимого нажмите на ссылку)
Screenshot.png (9921 просмотр) <a class='original' href='./download/file.php?id=3726&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (121.59 КБ)</a>

Re: ngcgui

Добавлено: 15 янв 2012, 10:31
nkp
Оптимально подходит размер изображения 850*700:
(для просмотра содержимого нажмите на ссылку)
Screenshot-1.png (9921 просмотр) <a class='original' href='./download/file.php?id=3727&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (149.38 КБ)</a>
Можно использовать .png,.gif,.jpg,.pgm.

Re: ngcgui

Добавлено: 15 янв 2012, 11:43
nkp
Установил доп пакет шрифтов
Прописывая в ini
NGCGUI_FONT = Arial -10 normal
пробл не решил
Прописал непосредственно в ngcgui.tcl вместо
-font $::ngc(any,font)
-font Arial
(для просмотра содержимого нажмите на ссылку)

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

      # use entry since it can be expanded by user to see overfill
        if {$::ngc(any,width,varname) != 0} {
          set l [entry $fdata.[qid] -state readonly  -font Arial \
                -textvariable ::ngc($hdl,arg,name,$num) \
                -takefocus 0 -justify right -relief groove \
                -width $::ngc(any,width,varname)]
          pack $l -side left -fill x -expand 0
        }
        set tvar ::ngc($hdl,arg,value,$num)
        set e [entry $fdata.[qid] \
              -width $ew \
              -font $::ngc(any,font) \
              -textvariable $tvar\
              -validate     all\
              -validatecommand \
                [list ::ngcgui::validateNumber $hdl $tvar %W %s %P]]
        foreach k $::ngc(any,entrykeys,special) {
          bind $e <Key-$k> \
             [list ::ngcgui::entrykeybinding %K %W ::ngc($hdl,arg,value,$num)]
        }
        if [info exists ::ngc(embed,axis)] [list updownkeys $e]
        set ::ngc($hdl,arg,entrywidget,$num02) $e
        pack $e -side left

        set l [entry $fdata.[qid] -state readonly  -font Arial \
               -textvariable ::ngc($hdl,arg,comment,$num02) \
               -takefocus 0 -relief groove \
               -width $::ngc(any,width,comment)\
               ]
        pack $l -side left -fill x -expand 1
      }
Результат:
(для просмотра содержимого нажмите на ссылку)
Screenshot-1.png (9917 просмотров) <a class='original' href='./download/file.php?id=3731&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (146.66 КБ)</a>

Re: ngcgui

Добавлено: 15 янв 2012, 12:03
sandman
Очень интересно, потому что у меня как то с этим делом проблемы были...

Re: ngcgui

Добавлено: 15 янв 2012, 12:43
nkp
Чтоб увеличить число используемых полей ввода:
1.Добавляем в o-код строки (у меня по высоте влезло 18 )
(для просмотра содержимого нажмите на ссылку)

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

o<faceeeeeeeeeeeeee>sub
#<tool> = #1 (= 1 инструмент)
#<rpm> = #2 (= 1250 скорость)
#<diameter> = #3 (=16 диаметр)
#<tpi> = #4 (=1 шаг резьбы)
#<inital_depth> = #5 (= 0.005глубина)
#<thread_depth> = #6 (= 1 глуб за 1 проход)
#<spring_pass> = #7 (=1 **********)
#<z_start> = #8 (= 48 L заготовки)
#<z_end> = #9 (=40 L детали)
#<x_1> = #10 (= 0.025 X компенсация)
#<x_2> = #11 (= 0.025 X компенсация)
#<x_3> = #12 (= 0.025 X компенсация)
#<x_4> = #13 (= 0.025 X компенсация)
#<x_5> = #14 (= 0.025 X компенсация)
#<x_6> = #15 (= 0.025 X компенсация)
#<x_16> = #16 (= 0.025 X компенсация)
#<x_17> = #17 (= 0.025 X компенсация)
#<x_18> = #18 (= 0.025 X компенсация)
2.В файле ngcgui.tcl подправляем:
(для просмотра содержимого нажмите на ссылку)

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

  # fixed initializations
  set ::ngc(any,pentries)       18 ;# number of entries in positional frame
Получаем:
(для просмотра содержимого нажмите на ссылку)
Screenshot-2.png (9915 просмотров) <a class='original' href='./download/file.php?id=3732&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (151.79 КБ)</a>
Изменение цвета элементов:
(для просмотра содержимого нажмите на ссылку)

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

  # fixed initializations
  set ::ngc(any,pentries)       18 ;# number of entries in positional frame
                                   ;# 30 max positional parameters
                                   ;# 3 frames max so must have pentries >=10
  set ::ngc(any,pollms)         2000
  set ::ngc(any,wait_restart)   0  ;# for alternate behavior

  set ::ngc(any,color,black)    black                              ;# цвет шрифта в полях  ввода
  set ::ngc(any,color,stdbg)    #dcdad5                        ;# цвет полей ввода после изменения дефолтных параметров
  set ::ngc(any,color,title)    lightsteelblue2                      ;# цвет фона "Параметры" 
  set ::ngc(any,color,vdefault) darkseagreen2          ;# цвет полей ввода
  set ::ngc(any,color,readonly) gray

  set ::ngc(any,color,ok)       green4            ;#цвет подсказки
  set ::ngc(any,color,single)   palegreen    ;#цвет шрифта в   закладке( измен при наж "G-код")
  set ::ngc(any,color,multiple) cyan
  set ::ngc(any,color,feature)  lightslategray  ;#цвет  закладки  (измен при наж "G-код")
  set ::ngc(any,color,prompt)   blue3   ;#Из файла ..........

Re: ngcgui

Добавлено: 15 янв 2012, 15:38
nautilus
nkp, ты как на это наткнулся? есть какое-то описалово ngcgui.tcl -файла?

Re: ngcgui

Добавлено: 15 янв 2012, 16:01
nautilus
Странно... Прописывая в ini
NGCGUI_FONT = Arial -14 normal

У меня получается менять шрифт на закладках ngcgui.

Re: ngcgui

Добавлено: 15 янв 2012, 16:10
nkp
nautilus писал(а):Странно... Прописывая в ini
NGCGUI_FONT = Arial -14 normal

У меня получается менять шрифт на закладках ngcgui.
Так и должно быть
У меня на домашнем компе пробл с радеоном
Поэтому решилось только так
Сейчас хочу сделать визуализацию закладок:
(для просмотра содержимого нажмите на ссылку)
Screenshot-2.png (9901 просмотр) <a class='original' href='./download/file.php?id=3733&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (164.06 КБ)</a>
ЗЫ Описания ngcgui.tcl нет,все НМТ-он самый.

Re: ngcgui

Добавлено: 15 янв 2012, 17:16
nautilus
Еще вопрос: правка ngcgui.tcl для количества полей ввода - зачем?
Вроде они и так добавляются в закладке, или эти добавленные переменные потом не работают?

Re: ngcgui

Добавлено: 15 янв 2012, 19:17
nautilus
Вроде догнал
# fixed initializations
set ::ngc(any,pentries) 18 ;# number of entries in positional frame
это чтоб в одну колонку на закладке столько параметров входило.

Re: ngcgui

Добавлено: 16 янв 2012, 10:01
Nick
nautilus писал(а):NGCGUI_FONT = Arial -14 normal
Хочу заметить, что Arial - не свободный шрифт, и его нет в стандартном дистрибутиве убунту. Его свободный аналог DejaVu Sans.
nkp, а у тебя ubuntu какая стоит, 8.04?

Re: ngcgui

Добавлено: 16 янв 2012, 10:16
nkp
Да 8.4

Re: ngcgui

Добавлено: 16 янв 2012, 10:49
Nick
а чего не хочешь на 10.04 перейти - это сейчас актуальная версия, и имхо она более стабильная и более быстрая. Хотя со старым железом типа моего радеона не рабртает (только без 3д).

Re: ngcgui

Добавлено: 16 янв 2012, 12:10
nkp
Хочу.Начал с 10.04
Ну не заработала она на моем компе нормально
Теперь точно придется - начал разбираться с тиклем и тк ,так не все работает
Думаю из-за 8.4

Re: ngcgui

Добавлено: 16 янв 2012, 16:03
nautilus
А чего не работает, какой функционал?

На первый взгляд мне не хватает проверки вводимых значений, т.е. какой - никакой обратной связи с формой - закладкой ngcgui.
Я до встерчи с EMC2 хотел вообще написать стороннее приложение (типа конструктора для своих типовых задач) для создания простейшего G-кода, на Delphi или С++. До сих пор есть еще такое желание.
Интересно сколько вкладок можно подключить, nkp - не проверял?

Re: ngcgui

Добавлено: 16 янв 2012, 20:01
nkp
nautilus писал(а):А чего не работает, какой функционал?
Если вопрос про тикль/тк- то у меня не работает например вот это:
(для просмотра содержимого нажмите на ссылку)

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

package require Tk
package require http
wm title . "ttk::notebook"

# Объявляем виджет вкладок
ttk::notebook .tb
pack .tb

# Добавление фрейма в 1-ю вкладку
.tb add [frame .tb.f1] -text "1-Вкладка"

	# Добавление текстовой надвиси к фрейму первой вкладки
	set w [label .tb.f1.lm -text "Текст сообщения" -anchor n]
	pack $w -side top

# Добавление фрейма во 2-ю вкладку
.tb add [frame .tb.f2] -text "2-Вкладка"

	# Добавление изображения к фрейму второй вкладки
	set tok [::http::geturl "http://etcl.ru/sites/default/files/darkblue_logo.gif" -blocksize 4096]
	image create photo img -data [http::data $tok]
	set w [label .tb.f2.i -image img -bd 1 -relief sunken]
	pack $w -side top -padx .5m -pady .5m
	::http::cleanup $tok

# Добавление фрейма в 3-ю вкладку
.tb add [frame .tb.f3] -text "3-Вкладка"

	# Добавление кнопки к фрейму третьей вкладки
	set w [button .tb.f3.pm -text "На 1-ю вкладку" -command {.tb select .tb.f1}]
	pack $w -padx 4 -pady 4 -side right -anchor s

# Селектирование вкладки по умолчанию и активация вкладок
.tb select .tb.f2
ttk::notebook::enableTraversal .tb
Тест на максимум вкладок не проводил ,но вот у человека >15 :
(для просмотра содержимого нажмите на ссылку)
ngcgui.png (9854 просмотра) <a class='original' href='./download/file.php?id=3755&sid=d62d6ed95fab8354a6ba7066c0da8b4d&mode=view' target=_blank>Загрузить оригинал (75.75 КБ)</a>

Re: ngcgui

Добавлено: 16 янв 2012, 20:24
Nick
nautilus писал(а):На первый взгляд мне не хватает проверки вводимых значений, т.е. какой - никакой обратной связи с формой - закладкой ngcgui.Я до встерчи с EMC2 хотел вообще написать стороннее приложение (типа конструктора для своих типовых задач) для создания простейшего G-кода, на Delphi или С++. До сих пор есть еще такое желание.
В Gкоде есть возможность вызова внешнего файла через M100-M199. Правда есть ограничение - только 2 параметра на каждый вызов, но его можно просто обойти. Просто делаем Osub с 30 параметрами, который выполняет скрипт сохраняющий параметры 15 раз в отдельный файл, а затем вызывает нужный обработчик.

Что особенно приятно, внешняя программа может быть написана на чем угодно!

Неприятность: нет обратной связи с формой, т.е. найти ошибку и сообщить о ней можем, а вот исправить в форме - нет.
nkp писал(а):Если вопрос про тикль/тк- то у меня не работает например вот это:
Какую ошибку выдает?

Re: ngcgui

Добавлено: 16 янв 2012, 20:27
nautilus
Вот, вот - это интересно! Где про это можно прочитать подробнее?

Re: ngcgui

Добавлено: 16 янв 2012, 20:28
Nick
Вот тут :) http://linuxcnc.org/docs/html/gcode_mai ... 00-to-M199:
В двух словах, все просто создаешь файлы с именами M100-M199, а при нахождении в Gкоде строки вида
M1XX Parg1 Qarg2
Выполняется такая строка M1XX arg1 arg2.