Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

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

Следующее направление разработки

Можно выбрать до 5 вариантов ответа

 
 
Результаты голосования

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

Разработка Gcodetools - плагин Inkscape для экспорта в Gкод

Сообщение Nick »

Разработка Gcodetools

Screenshot-output.ngc - AXIS-4.png (174894 просмотра) <a class='original' href='./download/file.php?id=348&sid=f6822b2f26e2abf01044902d1e7b62c9&mode=view' target=_blank>Загрузить оригинал (31.64 КБ)</a>
Эта ветка посвящена разработке Gcodetools, плагина для векторного редактора Inkscape, позволяющего конвертировать кривые из Inkscape в Gкод, используя круговую и линейную интерполяцию.

Описание работы, установка, помошь и уроки по плагину можно найти в теме: Gcodetools - plug-in Inkscape для экспорта в Gcode

На данный момент ведется работа над Gcodetools 1.7

Что мы хотим увидеть в новой версии:
  • Улучшение расширения для плазменной резки
  • Добавление дополнительных опций экспорта:
  • Улучшение функции обработки площади
  • Угол заглубления
  • Расширение для сверловки

Требуются

  • Тестеры
  • Разработчики
  • Помощь в технических аспектах по работе станков и обработке материалов
  • Новые идеи

Последняя версия

Исходный код находится на launchpad.net. Получить последнюю версию при помощи bazaar можно так:

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

bzr branch lp:gcodetools
Последнюю версию можно загрузить через web-интерфейс: http://bazaar.launchpad.net/~gcodetools ... lope/files

Установка

1. Загрузите последнюю ревизию, из указанных выше мест.
2. Выполните "python create_inx.py" в директории с загруженными файлами.
3. Скопируйте все созданные файлы с расширением *.inx и файл gcodetools-dev.py в каталог:
Linux: /usr/share/inkscape/extensions/ и перезапустите inkscape
Windows: Program Files\Inkscape\share\extensions\
4. Перезапустите Inkscape

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

Конвертация в G-код

Сообщение Nick »

Для конвертации кривых в G-код в inkscape есть специальный плагин. К сожалению он написан для inkscape 0.43, и у меня в 0.46-devel не заработал. Также он преобразовывал кривую в ломаную линию, и для того, чтобы получить достаточно плавную линию нужно было добавлять много контрольных точек.

Попробуем переделать этот плагин под новый inkscape и добавить возможность экспорта плавных кривых.

...

Сначала, я думал, что все будет совсем просто, т.к. в inkscape 0.46 - devel и, соответственно, более поздних есть кривые спиро, которые очень похожи на кривые сделанные из окружностей - т.е. необходимых нам G02 и G03. Но, оказалось, что спиро состоит не из окружностей, а из спиралей, что является более высоким классом - окружность это вырожденная спираль.

Погуглив, нашел такую структуру, как biarc. Biarc это фигура составленная, из двух кусков разных окружностей, таким образом, что в точке соединения тангенсальные направления у них совпадают (см рисунок).

Т.к. biarc состоит из 2х отрезков окружности, то он очень просто описывается в G-кодах. Осталось аппроксимировать исходную кривую такими биарками.

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

Конвертация в G-код

Сообщение Nick »

Несколько упростим задачу: будем аппроксимировать кривую заданную n точками, и касательными в этих точках.
Не умаляя общности, как любил говорить мой любимый преподаватель, задача сводится к построению биарки по двум конечным точкам и касательным к ней в этих точках, оптимально аппроксимирующей кусок кривой между этими точками.

Решения этой задачи я не нашел, но есть решение меньшей задачи: построение биарки по двум точкам и касательным в них, с заданным отношением размеров окружностей. Т.е. для решения оптимальности необходимо найти оптимальное соотношение размеров окружностей.
Искать оптимум можно используя методы вычислительной математики, но об этом потом.

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

Re: Inkscape

Сообщение Nick »

Фух.... после двух дней кодинга появляются первые наброски.
Что уже реализовано:
  • Преобразование кривой, ломанной или любого их набора в группу биарок или прямых отрезков.
  • Адаптация коэффициента отношения размеров окружностей биарок в зависимости от длины касательных в крайних точках.
  • Если кривую нельзя привести к виду биарки (когда начало и коне кривой совпадают) кривая автоматически разбивается на две кривые.
  • Реализована возможность автоматической разбивки кривой по заданным условиям.
Что еще надо реализовать
  • интерфейс
  • сохранение в gcode
  • глубину, скорость обработки/холостого перемещения, количество проходов, масштаб, преобразование единиц измерения, добавление хедера/футера
  • возможно, компенсацию диаметра фрезы на уровне inkscape.
  • добавить оценку точности проучившейся кривой. И параметр для автоматического разбиения кривой в случае не достижения нужной точности.
  • пофиксить баги :)

Вопрос: вырожденный случай: начало и конец кривой совпадают, касательные параллельны, нужно ли в этом случае аппроксимировать кривую? В этом случае кривая это плоская петля. Такие кривые возникают при ошибка моделирования.
Добавить параметр максимальной глубины разбиения.
Баги
  • при нулевой длине одной из касательных алгоритм не работает. Вопрос, как это пофиксить, хотя, возможно, при этих условиях кривая точно аппроксимируется одной дугой. Нужно это проверить.
Вложения
extensions.tar.gz
(3.09 КБ) 1869 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape

Сообщение Nick »

Todo: добавить возможность выработки не только кривой, но и ее площади.
Реализовать можно попробовать через штатный офсет. Нжно только придумать как его туда прикрутить. Или через ""оконтурить штрих" и выставлять разную толщину обводки. Кстати второй способ обычно дает более точные результаты, если крива грамотно нарисована, что, к сожалению бывает далеко не всегда. Очень часто шрифты содержат не замкнутые кривые, которые могут приводить к своеобразным глюкам.

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

Re: Inkscape

Сообщение Nick »

Вот первые тесты:
Первая строчка - показаны узлы
Вторая - плагин gcode
Третья - плагин gcode_tools
inkscape_plugin_ex.png (18018 просмотров) <a class='original' href='./download/file.php?id=50&sid=f6822b2f26e2abf01044902d1e7b62c9&mode=view' target=_blank>Загрузить оригинал (76.33 КБ)</a>
Вложения
extensions.tar.gz
(3.17 КБ) 1763 скачивания
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape

Сообщение Nick »

Убраны мелкие баги.
Доработан алгоритм.

Пример работы с текстом:
Текст только переведен в кривые, узлы не добавлялись.
g30880.png (18017 просмотров) <a class='original' href='./download/file.php?id=52&sid=f6822b2f26e2abf01044902d1e7b62c9&mode=view' target=_blank>Загрузить оригинал (190.47 КБ)</a>
rect61754.png (18017 просмотров) <a class='original' href='./download/file.php?id=53&sid=f6822b2f26e2abf01044902d1e7b62c9&mode=view' target=_blank>Загрузить оригинал (123.82 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Новая версия:
  • реализован вывод Gcode
  • реализован интерфейс
  • убраны некоторые баги
Новая картинка текста:
на ней видны неточности, лучше всего видно на гамме, но количество узлов это оправдывает
g58446.png (18015 просмотров) <a class='original' href='./download/file.php?id=55&sid=f6822b2f26e2abf01044902d1e7b62c9&mode=view' target=_blank>Загрузить оригинал (231.59 КБ)</a>
Сейчас начну проверять генерацию Gcode.
Эххх нужно еще emc поставить...
Вложения
extensions.tar.gz
(4.52 КБ) 1665 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Начал разработку модуля обработки площади ...

Исходники инка:
http://inkscape.modevia.com/doxygen/htm ... 9b787442ec
Вложения
extensions.tar.gz
(5.07 КБ) 1747 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Код на половину переписан, для облегчения написания функции offset.
Вложения
extensions.tar.gz
(5.21 КБ) 1630 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Урааа наконец-то оффсет заработал как надо!!!
Вложения
extensions.tar.gz
(7.42 КБ) 1734 скачивания
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

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

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

///
Вложения
extensions.tar.gz
(7.45 КБ) 1556 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Этот clipping меня доканает, сегодня потратил 3 часа, чтобы найти баг - в одном месте вместо "ai" было "a"...
Вложения
extensions.tar.gz
(7.68 КБ) 1609 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Inkscape plug-in для экспорта в Gcode

Сообщение Nick »

Более менее рабочий вариант оффсета с клипингом...
Вложения
extensions.tar.gz
(8.36 КБ) 1723 скачивания
Ответить

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