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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Снимок-features.ngc - AXIS 2.6.0-pre0-4385-g9c95855 on LinuxCNC-HAL-SIM-AXIS.png (201061 просмотр) <a class='original' href='./download/file.php?id=15468&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (153.61 КБ)</a>
Как некоторые уже заметили я пропал на недельку. И пропадал я не зря. Наконец-то решил сделать достойную замену 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. Сохранять шаблоны обработок
Это только пока :).
Скриншоты (для просмотра содержимого нажмите на ссылку)
Пара примеров обработки, созданной за 20 сек:
LinuxCNC-Features1.png (201350 просмотров) <a class='original' href='./download/file.php?id=14825&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (158.39 КБ)</a>
LinuxCNC-Features.png (201350 просмотров) <a class='original' href='./download/file.php?id=14826&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (166.41 КБ)</a>

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

Саме начало
LinuxCNC Features.png (201354 просмотра) <a class='original' href='./download/file.php?id=14824&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (68.04 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

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

Сообщение verser »

Вот по этомуhttp://cnc-club.ru/wiki/index.php/Linux ... 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
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

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

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

Сообщение verser »

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

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

Сообщение Nick »

verser писал(а):Вот по этомуhttp://cnc-club.ru/wiki/index.php/Linux ... subroutine есть тоже мнение.
Когда я вижу в окне исполнения g-coda такую строчку

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

	;py,milldraw.line_to(interpreter.this.params['draw_tmp_x'],interpreter.this.params['draw_tmp_y'])
трудно определить что за команда выполняется? не очень наглядно. Макросы еще куда бы ни шло, но inline python - не очень. ИМХО. Или я чего то недопонимаю?
Долго думал, без него практически никак. Суть какая, чтобы сделать заглубление под углом, надо делать разворот траектории. Без разворота можно сделать только для замкнутых контуров. Для ломаных я в принципе сделал, но выглядит это не лучше inline питона, т.к. синтаксис gкода сильно ограничен.
Второй довод к такому поведению - один и тот же код может выполняться несколько раз, например, в цикле. И каждый раз значения переменных могут быть разными, значит каждый раз внешний скрипт надо запускать заново.
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Вник в суть.
Внес лепту :
- добавил новую группу "мастеров" 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? ... 75#p110897
Все добавления делал в полном соответствии с довольно элегантной концепцией Nicka (в смысле рабочей, той что пока без заглублений по спирали), надеюсь он их примет.
Здесь выкладываю вариант без адaптации под gmoccapy - проверьте как пойдет под Axis. Как подключать объяснял nkp (ему +1) тут http://cnc-club.ru/forum/viewtopic.php? ... 140#p72441
features_axis.rar
(1.01 МБ) 484 скачивания
Lines.png (5279 просмотров) <a class='original' href='./download/file.php?id=29857&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (117.34 КБ)</a>
Последний раз редактировалось verser 22 июн 2014, 17:01, всего редактировалось 4 раза.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

verser писал(а):Здесь выкладываю вариант без адaптации под gmoccapy - проверьте как пойдет под Axis.
Features ведь читает конфиг станка - пусть само автоматом адаптируется под прописанный там интерфейс.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

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

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

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

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

Сообщение nkp »

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

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

если Axis:
   subprocess.call(["axis-remote",PROGRAM_PREFIX + "/features.ngc"])
для полной "универсальности" :)
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

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

но у меня не настроен Axis, чтобы проверить.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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;
}
вот здесь непонятно :
выглядит как дублирование этого
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

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"])
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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"]))
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

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

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

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

Сообщение verser »

verser писал(а):3. Плавно заглубиться на замкнутом контуре g-codом довольно легко. Можно во все "мастера" с замкнутым контурами добавить доп. способ заглубления - плавный (по спирали).
Вот например быстренько сделал рабочий вариант "мастера" circle с плавным заглублением(потребовалось минимальное изменение g-code в обычном circle)
circle-spiral.ini
(2.38 КБ) 1057 скачиваний
spiral.png (5234 просмотра) <a class='original' href='./download/file.php?id=29880&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (116.73 КБ)</a>
расчет траектории делает сам linuxcnc.
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Вот тоже самое для rect (лишь немного сложнее):
rect-spiral.ini
(3.46 КБ) 1048 скачиваний
spiral_rect.png (5227 просмотров) <a class='original' href='./download/file.php?id=29900&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (120.67 КБ)</a>
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

verser писал(а): 2. Хочется lines и arcs "сцеплять", чтобы шаг заглубления делался после прохождения всей цепочки, а не по-элементно как сейчас, например когда помещаешь lines в общую группу - они "сцепляются".
Представляю реально крутую группу "мастеров" - Chain, включающую видоизмененные lines, arcs и "соединитель" Link up.
Теперь можно резать довольно сложные (замкнутые и незамкнутые) контуры с пошаговым заглублением:
chain.png (5174 просмотра) <a class='original' href='./download/file.php?id=29916&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (117.12 КБ)</a>
Пользоваться просто - заходим "плюсиком" в Chain, добавляем новую группу LinkUp и заполняем ее понятные параметры, набираем кривую из linked lines и arcs,закидываем в LinkUp все эти lines и arcs - готово.
Примечание, если концы соседних линий не совпадают, то они автоматически соединяться доп. прямым отрезком. Вот например что получиться если всего две arc разместить друг напротив друга:
chain1.png (5164 просмотра) <a class='original' href='./download/file.php?id=29947&sid=212cc6586c8a70a9c94ba7c87df8a995&mode=view' target=_blank>Загрузить оригинал (111.76 КБ)</a>
Выкладываю папку subrotines (изменилась только она) со всеми подключенными новшествами.
subroutines.rar
изменен 23.06.2014
(1.01 МБ) 411 скачиваний
для интерфейса gmoccapy обновленная сборка здесь http://cnc-club.ru/forum/viewtopic.php? ... 75#p110897
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

ИМХО Depth, Depth step, Surface, Final, Rappid лучше убрать из обработок, и поставить в отдельный set cutting parameters...
Ну разве что Depth и Surface оставить, остальное для всех обработок будет одинаковым, а зависит только от инструмента.
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Nick писал(а):Супер!
ИМХО Depth, Depth step, Surface, Final, Rappid лучше убрать из обработок, и поставить в отдельный set cutting parameters...
Ну разве что Depth и Surface оставить, остальное для всех обработок будет одинаковым.
Согласен, сделаю.
Link up это типа группа, в которую встроил multipass, и однопроходный(one pass) контур построенный из lines и arcs, этим multipass-ом заглубляется. Параметры заглубления прямо в Link up прописываются.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

ЗЫ надо тебя в git прописать, чтобы все изменения туда вносить... просто будешь вести отдельную ветку, и потом все будем мержить в основную.
Ответить

Вернуться в «LinuxCNC»