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

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

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

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

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

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

Сообщение Nick » 07 дек 2009, 11:39

Разработка Gcodetools


Разработка Gcodetools - плагин Inkscape для экспорта в Gкод Screenshot-output.ngc - AXIS-4.png

Эта ветка посвящена разработке 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.team/gcodetools/develope/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 или загрузите предыдущие ревизии.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 07 дек 2009, 17:35

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

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

...

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

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

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

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

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

Сообщение Nick » 07 дек 2009, 18:11

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

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

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

Re: Inkscape

Сообщение Nick » 08 дек 2009, 20:51

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

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


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

Re: Inkscape

Сообщение Nick » 08 дек 2009, 22:25

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

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

Re: Inkscape

Сообщение Nick » 09 дек 2009, 00:26

Вот первые тесты:
Первая строчка - показаны узлы
Вторая - плагин gcode
Третья - плагин gcode_tools
Разработка Gcodetools - плагин Inkscape для экспорта в Gкод inkscape_plugin_ex.png
Вложения
extensions.tar.gz
(3.17 Кб) Скачиваний: 527
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

Re: Inkscape

Сообщение Nick » 09 дек 2009, 11:56

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

Пример работы с текстом:
Текст только переведен в кривые, узлы не добавлялись.
Разработка Gcodetools - плагин Inkscape для экспорта в Gкод g30880.png
Разработка Gcodetools - плагин Inkscape для экспорта в Gкод rect61754.png
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 09 дек 2009, 23:38

Новая версия:
  • реализован вывод Gcode
  • реализован интерфейс
  • убраны некоторые баги

Новая картинка текста:
на ней видны неточности, лучше всего видно на гамме, но количество узлов это оправдывает
Разработка Gcodetools - плагин Inkscape для экспорта в Gкод g58446.png


Сейчас начну проверять генерацию Gcode.
Эххх нужно еще emc поставить...
Вложения
extensions.tar.gz
(4.52 Кб) Скачиваний: 546
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 10 дек 2009, 07:55

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

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

Сообщение Nick » 10 дек 2009, 18:05

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

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

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

Сообщение Nick » 10 дек 2009, 23:39

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

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

Сообщение Nick » 11 дек 2009, 19:12

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

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

Сообщение Nick » 13 дек 2009, 23:47

Продолжение...
Вложения
extensions.tar.gz
(6.26 Кб) Скачиваний: 509
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 14 дек 2009, 18:39

...
Вложения
extensions.tar.gz
(7.02 Кб) Скачиваний: 484
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 15 дек 2009, 00:17

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

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

Сообщение Nick » 15 дек 2009, 23:36

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

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

Сообщение Nick » 16 дек 2009, 19:32

...
Вложения
extensions.tar.gz
(7.33 Кб) Скачиваний: 498
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1315
Заслуга: Developer
Медальки:

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

Сообщение Nick » 17 дек 2009, 16:11

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

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

Сообщение Nick » 17 дек 2009, 23:49

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

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

Сообщение Nick » 18 дек 2009, 19:37

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

След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: 3DPrinter, Alexf2a, arkhnchul, алексей алексей, Bing [Bot], crashzoom, CybSys, dima7411, Ershoff, FLUKE, Google [Bot], LinuxGuru, magnetic, MSNbot Media, PKM, Rediv, Yahoo [Bot], Yandex [bot]

Поделиться

Reputation System ©'