LinuxCNC Features - набор мастеров для LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick » 22 май 2013, 18:07

LinuxCNC Features - набор мастеров для LinuxCNC Снимок-features.ngc - AXIS 2.6.0-pre0-4385-g9c95855 on LinuxCNC-HAL-SIM-AXIS.png

Как некоторые уже заметили я пропал на недельку. И пропадал я не зря. Наконец-то решил сделать достойную замену ngcgui.


LinuxCNC Features это тулкит для создания "мастеров". Точнее это тулкит самих "мастеров". В общем и целом LinuxCNC Features работает схоже с ngcgui, но с некоторыми отличиями. Честно говоря, с ngcgui я до конца так и не разобрался, поэтому это я считаю, что он работает схоже :freak:. (Название Features взято от кнопки в ngcgui - add feature.)

В wiki cnc-club добавлена страница о LinuxCNC Features, давайте вместе ее наполнять документацией, видео и прочими полезными материалами.
http://cnc-club.ru/wiki/index.php/LinuxCNC_Features

Текущий статус разработки


  • Дописать обработки.
  • Отловить баги :freak: .
Возможности (для просмотра содержимого нажмите на ссылку)
Что может LinuxCNC Features:
  1. Добавлять features - простые обработки
  2. Менять их порядок
  3. Группировать обработки
  4. Делать линейные и круговые массивы
  5. Встраиваться в axis LinuxCNC или работать как отдельной приложение
  6. Просматривать резултьтат в axis в редиме реального времени
  7. Сохранять шаблоны обработок
Это только пока :).

Установка (для просмотра содержимого нажмите на ссылку)
http://cnc-club.ru/wiki/index.php/LinuxCNC_Features#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0

Где взять

Тут --> https://github.com/cnc-club/linuxcnc-features/

Скриншоты (для просмотра содержимого нажмите на ссылку)
Пара примеров обработки, созданной за 20 сек:
LinuxCNC Features - набор мастеров для LinuxCNC LinuxCNC-Features1.png
LinuxCNC Features - набор мастеров для LinuxCNC LinuxCNC-Features.png

Скрины предыдущих версий

Саме начало
LinuxCNC Features - набор мастеров для LinuxCNC LinuxCNC Features.png

Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1576
Заслуга: Developer
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick » 19 июн 2014, 20:15

Надо line-to, arc-to, может еще move-to.
И заглубление. И... что-нибудь еще :).
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1576
Заслуга: Developer
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 19 июн 2014, 20:22

Вот по этомуhttp://cnc-club.ru/wiki/index.php/LinuxCNC_Features_Draw_subroutine есть тоже мнение.
Когда я вижу в окне исполнения g-coda такую строчку
Код: Выделить всёРазвернуть
   ;py,milldraw.line_to(interpreter.this.params['draw_tmp_x'],interpreter.this.params['draw_tmp_y'])
трудно определить что за команда выполняется? не очень наглядно. Макросы еще куда бы ни шло, но inline python - не очень. ИМХО. Или я чего то недопонимаю?
Последний раз редактировалось verser 19 июн 2014, 22:05, всего редактировалось 1 раз.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 19 июн 2014, 20:22

Nick писал(а):Надо line-to, arc-to, может еще move-to.
И заглубление. И... что-нибудь еще :).
Я помогу.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 19 июн 2014, 20:28

это мелочь, по сравнению с тем что уже работает.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick » 19 июн 2014, 23:26

verser писал(а):Вот по этомуhttp://cnc-club.ru/wiki/index.php/LinuxCNC_Features_Draw_subroutine есть тоже мнение.
Когда я вижу в окне исполнения g-coda такую строчку
Код: Выделить всёРазвернуть
   ;py,milldraw.line_to(interpreter.this.params['draw_tmp_x'],interpreter.this.params['draw_tmp_y'])
трудно определить что за команда выполняется? не очень наглядно. Макросы еще куда бы ни шло, но inline python - не очень. ИМХО. Или я чего то недопонимаю?

Долго думал, без него практически никак. Суть какая, чтобы сделать заглубление под углом, надо делать разворот траектории. Без разворота можно сделать только для замкнутых контуров. Для ломаных я в принципе сделал, но выглядит это не лучше inline питона, т.к. синтаксис gкода сильно ограничен.
Второй довод к такому поведению - один и тот же код может выполняться несколько раз, например, в цикле. И каждый раз значения переменных могут быть разными, значит каждый раз внешний скрипт надо запускать заново.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1576
Заслуга: Developer
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 21 июн 2014, 18:36

Вник в суть.
Внес лепту :
- добавил новую группу "мастеров" Lines, в ней 5 "мастеров" - Line cartesian, Line polar, Arc 2 points + center, Arc 2 points + radius, Arc 3 points, все с пошаговым заглублением.
- учитывая что Draws и спиральное заглубление пока у Nicka в активной разработке - временно убрал из меню mill.xml
- добавил пошаговое заглубление к n-gon и hexagon
- применил фиксы с патча UAVpilot (ему +1)
- подчистил несколько мелких нюансов
- обновил дополнение Features для интерфейса gmoccapy, подключается просто, работает на ура!http://cnc-club.ru/forum/viewtopic.php?f=15&t=4575#p110897
Все добавления делал в полном соответствии с довольно элегантной концепцией Nicka (в смысле рабочей, той что пока без заглублений по спирали), надеюсь он их примет.
Здесь выкладываю вариант без адaптации под gmoccapy - проверьте как пойдет под Axis. Как подключать объяснял nkp (ему +1) тут http://cnc-club.ru/forum/viewtopic.php?f=15&t=3124&start=140#p72441
features_axis.rar
(1.01 Мб) Скачиваний: 302
LinuxCNC Features - набор мастеров для LinuxCNC Lines.png
Последний раз редактировалось verser 22 июн 2014, 17:01, всего редактировалось 4 раз(а).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение UAVpilot » 21 июн 2014, 23:00

verser писал(а):Здесь выкладываю вариант без адaптации под gmoccapy - проверьте как пойдет под Axis.

Features ведь читает конфиг станка - пусть само автоматом адаптируется под прописанный там интерфейс.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20127
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4840
Заслуга: !!!
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 10:01

UAVpilot писал(а):Features ведь читает конфиг станка - пусть само автоматом адаптируется под прописанный там интерфейс.
После последних изменений единственное отличие features.py для gmoccapy - это отсутствие всего одной строчки
Код: Выделить всёРазвернуть
         subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"])
так что можно заявлять, что features - универсальное дополнение для linuxcnc для любых интерфейсов :)
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение nkp » 22 июн 2014, 10:07

verser писал(а):После последних изменений единственное отличие features.py для gmoccapy - это отсутствие всего одной строчки

ну тогда можно добавить проверку :
Код: Выделить всёРазвернуть
если Axis:
   subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"])

для полной "универсальности" :)
nkp
Мастер
 
Сообщения: 8259
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 10:16

может, кстати и не нужна она, после добавления этих
self.linuxcnc.wait_complete()
выглядит как дублирование этого
self.linuxcnc.program_open(PROGRAM_PREFIX + "/features.ngc")

но у меня не настроен Axis, чтобы проверить.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение nkp » 22 июн 2014, 10:59

verser писал(а):может, кстати и не нужна она, после добавления этих
self.linuxcnc.wait_complete()
выглядит как дублирование этого
self.linuxcnc.program_open(PROGRAM_PREFIX + "/features.ngc")

но у меня не настроен Axis, чтобы проверить.

как я это понимаю:
inuxcnc.program_open(файл) - команда открыть файл в емс
но если не ошибаюсь - эта команда не всегда "загружает" файл непосредственно в Axis(то есть - в саму отрисовку)
и если включить емс на выполнение - то все будет работать правильно(то есть - файл загрузился в интерпретатор , а в Axis - нет)
для этого юзают axis-remote
---------
linuxcnc.wait_complete() возвращает -1 -если предыдущая команда не выполнена
(для просмотра содержимого нажмите на ссылку)
Код: Выделить всёРазвернуть
static int emcWaitCommandComplete(int serial_number, RCS_STAT_CHANNEL *s, double timeout) {
    double start = etime();

    do {
        double now = etime();
        if(s->peek() == EMC_STAT_TYPE) {
           EMC_STAT *stat = (EMC_STAT*)s->get_address();
//           printf("WaitComplete: %d %d %d\n", serial_number, stat->echo_serial_number, stat->status);
           if (stat->echo_serial_number == serial_number &&
               ( stat->status == RCS_DONE || stat->status == RCS_ERROR )) {
                return s->get_address()->status;
           }
        }
        esleep(fmin(timeout - (now - start), EMC_COMMAND_DELAY));
    } while (etime() - start < timeout);
    return -1;
}

вот здесь непонятно :
выглядит как дублирование этого
nkp
Мастер
 
Сообщения: 8259
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 11:41

nkp писал(а):linuxcnc.wait_complete() возвращает -1 -если предыдущая команда не выполнена

и, что особо важно, ставит на паузу процесс ( в течении EMC_COMMAND_DELAY похоже), без этой команды в gmoccapy глючит обновление.
nkp писал(а):вот здесь непонятно :
выглядит как дублирование этого
я имел ввиду что как бы дублируется в def refresh(self, *arg ) открытие features.ngc
Код: Выделить всёРазвернуть
self.linuxcnc.program_open(PROGRAM_PREFIX + "/features.ngc")
Код: Выделить всёРазвернуть
subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"])
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение nkp » 22 июн 2014, 13:16

verser писал(а):я имел ввиду что как бы дублируется в def refresh(self, *arg ) открытие features.ngc

может и да:
self.linuxcnc.program_open(PROGRAM_PREFIX + "/features.ngc")
"загружает" файл в интерпретатор
------------
subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"])
обновляет в т.ч. отрисовку Axis
("в т.ч." - потому как для Axis , вроде бы , должно быть достаточно subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"]))
nkp
Мастер
 
Сообщения: 8259
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 14:08

Есть такие мысли-сомнения-хотелки еще (как у фрезеровщика, а не как у программиста :) )
1. Нужно ли плавное заглубление на незамкнутых контурах? типа line , arc ?
2. Хочется lines и arcs "сцеплять", чтобы шаг заглубления делался после прохождения всей цепочки, а не по-элементно как сейчас, например когда помещаешь lines в общую группу - они "сцепляются".
3. Плавно заглубиться на замкнутом контуре g-codом довольно легко. Можно во все "мастера" с замкнутым контурами добавить доп. способ заглубления - плавный (по спирали).

Если сделать в Features эти пп.2-3 тогда, Nick, что еще будет уметь новый подход Draw чего не будет в Features? с точки зрения фрезеровщика?
Последний раз редактировалось verser 22 июн 2014, 15:29, всего редактировалось 2 раз(а).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 15:11

verser писал(а):3. Плавно заглубиться на замкнутом контуре g-codом довольно легко. Можно во все "мастера" с замкнутым контурами добавить доп. способ заглубления - плавный (по спирали).

Вот например быстренько сделал рабочий вариант "мастера" circle с плавным заглублением(потребовалось минимальное изменение g-code в обычном circle)
circle-spiral.ini
(2.38 Кб) Скачиваний: 904
LinuxCNC Features - набор мастеров для LinuxCNC spiral.png
расчет траектории делает сам linuxcnc.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 22 июн 2014, 16:37

Вот тоже самое для rect (лишь немного сложнее):
rect-spiral.ini
(3.46 Кб) Скачиваний: 911
LinuxCNC Features - набор мастеров для LinuxCNC spiral_rect.png
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 23 июн 2014, 14:33

verser писал(а):2. Хочется lines и arcs "сцеплять", чтобы шаг заглубления делался после прохождения всей цепочки, а не по-элементно как сейчас, например когда помещаешь lines в общую группу - они "сцепляются".

Представляю реально крутую группу "мастеров" - Chain, включающую видоизмененные lines, arcs и "соединитель" Link up.
Теперь можно резать довольно сложные (замкнутые и незамкнутые) контуры с пошаговым заглублением:
LinuxCNC Features - набор мастеров для LinuxCNC chain.png

Пользоваться просто - заходим "плюсиком" в Chain, добавляем новую группу LinkUp и заполняем ее понятные параметры, набираем кривую из linked lines и arcs,закидываем в LinkUp все эти lines и arcs - готово.
Примечание, если концы соседних линий не совпадают, то они автоматически соединяться доп. прямым отрезком. Вот например что получиться если всего две arc разместить друг напротив друга:
LinuxCNC Features - набор мастеров для LinuxCNC chain1.png

Выкладываю папку subrotines (изменилась только она) со всеми подключенными новшествами.
subroutines.rar
изменен 23.06.2014
(1.01 Мб) Скачиваний: 279

для интерфейса gmoccapy обновленная сборка здесь http://cnc-club.ru/forum/viewtopic.php?f=15&t=4575#p110897
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick » 23 июн 2014, 16:13

Супер!
Про linkup по подробнее можешь написать?

ИМХО Depth, Depth step, Surface, Final, Rappid лучше убрать из обработок, и поставить в отдельный set cutting parameters...
Ну разве что Depth и Surface оставить, остальное для всех обработок будет одинаковым, а зависит только от инструмента.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1576
Заслуга: Developer
Медальки:

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение verser » 23 июн 2014, 16:24

Nick писал(а):Супер!
ИМХО Depth, Depth step, Surface, Final, Rappid лучше убрать из обработок, и поставить в отдельный set cutting parameters...
Ну разве что Depth и Surface оставить, остальное для всех обработок будет одинаковым.

Согласен, сделаю.
Link up это типа группа, в которую встроил multipass, и однопроходный(one pass) контур построенный из lines и arcs, этим multipass-ом заглубляется. Параметры заглубления прямо в Link up прописываются.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1768
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1180
Медальки:
Настоящее имя: Сергей

Re: LinuxCNC Features - набор мастеров для LinuxCNC

Сообщение Nick » 23 июн 2014, 16:33

ммм просто я его на скриншотах не увидел...

ЗЫ надо тебя в git прописать, чтобы все изменения туда вносить... просто будешь вести отдельную ветку, и потом все будем мержить в основную.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1576
Заслуга: Developer
Медальки:

Пред.След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], commanlm, Cvazist, Enot_1, Google [Bot], MGG, michael-yurov, niksooon, rage, SeReGa Sh, vasilevs, Yandex [bot], Тенгель

Reputation System ©'