Страница 1 из 39

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

Добавлено: 07 дек 2009, 11:39
Nick

Разработка Gcodetools

Screenshot-output.ngc - AXIS-4.png (175019 просмотров) <a class='original' href='./download/file.php?id=348&sid=baa389acbb16fdd10aef31793a4b7229&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 или загрузите предыдущие ревизии.

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

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

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

...

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

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

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

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

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

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

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

Для начала попробуем построить приблизительные аппроксимации.

Re: Inkscape

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

Вопрос: вырожденный случай: начало и конец кривой совпадают, касательные параллельны, нужно ли в этом случае аппроксимировать кривую? В этом случае кривая это плоская петля. Такие кривые возникают при ошибка моделирования.
Добавить параметр максимальной глубины разбиения.
Баги
  • при нулевой длине одной из касательных алгоритм не работает. Вопрос, как это пофиксить, хотя, возможно, при этих условиях кривая точно аппроксимируется одной дугой. Нужно это проверить.

Re: Inkscape

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

Для создания плоскости выработки нужно пошагово:
  • сделать копию кривой увеличить толщину штриха
  • оконтурить штрих
  • сделать вычислить пересечение полученной кривой с начальной
  • выделить внутреннюю часть полученной кривой
  • обработать подученную кривую
  • повторить :)

Re: Inkscape

Добавлено: 09 дек 2009, 00:26
Nick
Вот первые тесты:
Первая строчка - показаны узлы
Вторая - плагин gcode
Третья - плагин gcode_tools
inkscape_plugin_ex.png (18034 просмотра) <a class='original' href='./download/file.php?id=50&sid=baa389acbb16fdd10aef31793a4b7229&mode=view' target=_blank>Загрузить оригинал (76.33 КБ)</a>

Re: Inkscape

Добавлено: 09 дек 2009, 11:56
Nick
Убраны мелкие баги.
Доработан алгоритм.

Пример работы с текстом:
Текст только переведен в кривые, узлы не добавлялись.
g30880.png (18033 просмотра) <a class='original' href='./download/file.php?id=52&sid=baa389acbb16fdd10aef31793a4b7229&mode=view' target=_blank>Загрузить оригинал (190.47 КБ)</a>
rect61754.png (18033 просмотра) <a class='original' href='./download/file.php?id=53&sid=baa389acbb16fdd10aef31793a4b7229&mode=view' target=_blank>Загрузить оригинал (123.82 КБ)</a>

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

Добавлено: 09 дек 2009, 23:38
Nick
Новая версия:
  • реализован вывод Gcode
  • реализован интерфейс
  • убраны некоторые баги
Новая картинка текста:
на ней видны неточности, лучше всего видно на гамме, но количество узлов это оправдывает
g58446.png (18031 просмотр) <a class='original' href='./download/file.php?id=55&sid=baa389acbb16fdd10aef31793a4b7229&mode=view' target=_blank>Загрузить оригинал (231.59 КБ)</a>
Сейчас начну проверять генерацию Gcode.
Эххх нужно еще emc поставить...

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

Добавлено: 10 дек 2009, 07:55
Nick
Забыл написать:
Реализована пошаговая выработка с заданием величины заглубления.
Можно добавлять свои начало и конец скрипта. ( Если в выбранном директории есть файлы "header" или "footer" они используются вместо стандартных.)

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

Добавлено: 10 дек 2009, 18:05
Nick
Начал разработку модуля обработки площади ...

Исходники инка:
http://inkscape.modevia.com/doxygen/htm ... 9b787442ec

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

Добавлено: 10 дек 2009, 23:39
Nick
Для обработки площади придется самому писать offset :(. Во-первых язык скриптов не позволяет пользоваться функциями самого inkscape :(. Во-вторых так будет даже лучше, т.к. у нас кривая состоит из арок и прямых, а это более мелкий класс чем сплайны, то offset написать будет проще, и, возможно, результат будет точнее чем стандартный offset inkscape ;) .
Завтра попробую все дописать.

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

Добавлено: 11 дек 2009, 19:12
Nick
Код на половину переписан, для облегчения написания функции offset.

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

Добавлено: 13 дек 2009, 23:47
Nick
Продолжение...

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

Добавлено: 14 дек 2009, 18:39
Nick
...

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

Добавлено: 15 дек 2009, 00:17
Nick
...

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

Добавлено: 15 дек 2009, 23:36
Nick
Урааа наконец-то оффсет заработал как надо!!!

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

Добавлено: 16 дек 2009, 19:32
Nick
...

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

Добавлено: 17 дек 2009, 16:11
Nick
///

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

Добавлено: 17 дек 2009, 23:49
Nick
Этот clipping меня доканает, сегодня потратил 3 часа, чтобы найти баг - в одном месте вместо "ai" было "a"...

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

Добавлено: 18 дек 2009, 19:37
Nick
Более менее рабочий вариант оффсета с клипингом...