Разработка 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 (181682 просмотра) <a class='original' href='./download/file.php?id=348&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
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Написал функцию создания контрольных точек с возможностью задания начальных значений.
Изменил интерфейс, как и писал ранее, заменил радио батн выборо функции в зависимости о активной страницы.
Практически написал создание матрицы трансформации.
Контрольные точки сначала ищутся в активном слое, а затем, во всем рисунке.
К вечеру возможно будет готова первая версия...
mr.Iceman
Новичок
Сообщения: 10
Зарегистрирован: 14 фев 2010, 13:39
Репутация: 0
Откуда: Москва
Контактная информация:

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

Сообщение mr.Iceman »

root писал(а):Прямо сейчас мы пишем функцию, которая по трем заданным точкам будет автоматически позиционировать вашу деталь.
Ага, ваше с dormouse обсуждение новой функциональности я отслеживаю. 8-)
Если Вы интересуетесь моим мнением, то я считаю , что для подавляющего большинства применений вполне хватит одной заданной точки (0,0).
А вращать и масштабировать объект можно с помощью встроенных средств inkscape.

У меня, конечно, хватает воображения, чтобы представить ситуацию, когда для точной привязки объекта к детали понадобится использование 3-х точек с мастабированием и вращением объекта, но я искренне считаю, что это - голимая экзотика.
Я считаю, что для 99,9% применений достаточно просто обеспечить механизм совмещения заданной точки рисунка inkscape'а и позиции (0,0) станка.

Может, начнем с одной точки, а потом уже в качестве опций добавим остальные две, а также масштабирование и вращение?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

я всё думаю насчёт деления g-кода на фрагменты. все варианты кажутся сырыми. Если делить геометрию, то не будут работать чудо-треугольные-вырезы, если ... если...

Похоже, что (пока) самая удачная идея - написать простенький внешний конвертер для разрезания результирующего g-кода. Это не сложно.

Для примера - та лошадка-единорог с который мы engraving.svg берём - это изделие метр на метр. Рабочий станок сейчас 350х1900 примерно. Итого - минимум на 3 фрагмента резать надо....Можно, конечно, вырезать каждый фрагмент с запасом = 1.5*D1 вокруг. и добавлять внешнюю границу. Тогда внутри области изделие не изменится (по идее). Переработка небольшая, метод очевидный.

Но резать G-код тоже не очень просто.

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

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

Сообщение Nick »

mr.Iceman писал(а):Если Вы интересуетесь моим мнением, то я считаю , что для подавляющего большинства применений вполне хватит одной заданной точки (0,0).
А вращать и масштабировать объект можно с помощью встроенных средств inkscape.

У меня, конечно, хватает воображения, чтобы представить ситуацию, когда для точной привязки объекта к детали понадобится использование 3-х точек с мастабированием и вращением объекта, но я искренне считаю, что это - голимая экзотика.
Я считаю, что для 99,9% применений достаточно просто обеспечить механизм совмещения заданной точки рисунка inkscape'а и позиции (0,0) станка.

Может, начнем с одной точки, а потом уже в качестве опций добавим остальные две, а также масштабирование и вращение?
Дело в том, что я уже почти написал для трех, если Вам нужен будет только перенос, то можно просто сгруппировать все точки вместе и перенести в нужное место.
Тем более, что реализация отличается в несколько строчек.
dormouse писал(а):я всё думаю насчёт деления g-кода на фрагменты. все варианты кажутся сырыми. Если делить геометрию, то не будут работать чудо-треугольные-вырезы, если ... если...
Я подумаю на досуге, что можно с этим сделать... пока сходу решение не приходит.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Полноценная резка g-кода сложна, но вполне осуществима (если линейный g-код без циклов процедур и т.п.). Окружности несложно порезать.

Удвоенный диаметр оффсета так же даёт рабочее решение (не обязательно все 100% рабочей области станка под изделие занимать - пусть немного "вхолостую" поработает).

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Можно тестировать функцию ориентации! :D
extensions.tar.gz
(16.35 КБ) 1203 скачивания
или

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

bzr branch lp:gcodetools 
(ревизия 19)

Как с ней работать:
Открываем вкладку Orientation. Вводим параметры точек, по-умолчанию они равны точкам (0;0), (100;0) и (0;100), т.е. начало координат, ось Х и ось У.
Далее устанавливаем их в нужное место. Если Вам не нужен масштаб, то можно эти точки сгруппировать (хммм... надо наверное их изначально группировать, масштаб по осям наверное мало кому нужен).
Далее двигаем их куда хотим, вращаем, изгибаем, в общем развлекаемся по полной. Желаемые значения в этих точках можно менять прямо в рисунке с помощью инструмента текст, главное, соблюсти формат: ( число ; число ), пробелы не считаются.
Потом выбираем другую вкладку и выполняем экспорт.

Да! Изменился интерфейс, теперь функция выбирается в зависимости от выбранной вкладки.

И еще, координатных точек можно делать много, если их разместить в разных слоях. Сначала скрипт будет искать координатные точки в выбранном слое, а затем, если в нем их не найдет, в остальном рисунке.
Вложения
rect34425.png (5165 просмотров) <a class='original' href='./download/file.php?id=392&mode=view' target=_blank>Загрузить оригинал (38.32 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Новая ревизия

Исправил пару незначительных багов.
+
Теперь все контрольные точки объединены в одну группу.
Добавлен параметр Initial scale, которым можно сразу задать единицы измерения.
gcodetools.tar.gz
(16.49 КБ) 1145 скачиваний
или

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

bzr branch lp:gcodetools 
ревизия 20
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

Краткая инструкция как настроить bzr для Windows:
1. Качаем и устанавливаем по умолчанию "stand alone 2.1 stable": http://wiki.bazaar.canonical.com/WindowsDownloads прямая ссылка http://launchpad.net/bzr/2.1/2.1.0/+dow ... -setup.exe
2. Если прокси-сервер есть то: Пуск→Панель управления→Система→Дополнительно→Переменные среды→Создать (две пары)
Имя переменной: HTTPS_PROXY
Значение переменной: http://ВАШ_ПРОКСИ:ВАШ_ПОРТ

Имя переменной: HTTP_PROXY
Значение переменной: http://ВАШ_ПРОКСИ:ВАШ_ПОРТ

пример строчки с адресом прокси: http://proxy.aaorg.com:3128
3. Создаём gcode.cmd файл для быстрого запуска обновления gcodetools

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

del /s /q gcodetools
rd /s /q gcodetools
bzr branch lp:gcodetools
copy gcodetools\gcode_tools-develope.inx "C:\Program Files\Inkscape\share\extensions\gcode_tools-develope.inx"
copy gcodetools\gcode_tools-develope.py  "C:\Program Files\Inkscape\share\extensions\gcode_tools-develope.py"
4. Запускаем файл gcode.cmd
Последний раз редактировалось dormouse 01 апр 2010, 14:45, всего редактировалось 3 раза.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Поразмышлял на досуге о разделении рисунка на зоны...

Готовый код, или почти готовый - уже сгенеренные биарки, но не экспортированные в Gcode разбить можно, можно даже с нахлестом. Но тогда не получится реализовать спиральку, она превратится либо в отдельные линии, либо в концетрические буквы П или Г.
Если разбить рисунок до генерации траектории, то появятся новые углы по краю разбиения.

Нужно думать еще...
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

(пока) я не смог придумать третьего варианта для разбиения.... либо с расширением на 2 диаметра фрезы рабочей области либо резка результирующего g-кода всего изделия (не даст артефактов вообще!). Надо погуглить, возможно эта задача уже кем-то решена. Как отдельную консольную утилиту это будет просто реализовать. Как "обходной путь" - пока вырезать на 4Dфрезы больший размер (2Dфрезы перекрытия)

Коммиты: на страничке https://code.launchpad.net/~xepecine/gc ... -1.4/+edit заменить Owner с Nick на группу Gcode tools team

P.S. Новое место для "последнего снапшота" http://bazaar.launchpad.net/~gcodetools ... lope/files
Последний раз редактировалось dormouse 01 апр 2010, 16:25, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Нужно разбить задачу:
2. Обработка по спирали, рассчитываем код, раздельно по участкам обработки.
1. Гравировка тонких мест, рассчитываем все сразу и разбиваем уже готовый код.

Так по-идее должно сработать...

ЗЫ как кстати orientation работает, кто-нибудь проверял?


ЗЫЫ А как с помощью базаара на месте разбирать конфликты версий?
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

не очень ясны вопросы.
2. Обработка по спирали делается фрезой N1. Эта часть никак не связана с работой фрез N2,N3. Если "раздельные участки обработки" - это порезанный файл, то в этом случае получится только потеря в 2 раза времени на ход фрезы. С другой стороны, если следы от фрезы останутся на изделии, то это ОЧЕНЬ подчеркнёт ощущение, что она "за раз" сделана из цельного куска :lol:
1. Разбиение готового кода - очень простая задача. Вернее не простая, а "техническая" - надо реализовать, изобретать там ничего не требуется. Алгоритм такой: берём область, все линейные сегменты либо внутри, либо вырезаем отрезок из него. Для окружностей сложнее, но это техническая задача (сложности, что на 2 сегмента одну дугу может разбить - когда исходная дуга по часовой стрелке от A до B)

P.S. Отличная статья про pipeline: http://softwaremaniacs.org/blog/2010/02 ... -pipeline/
Вложения
cropping.png (5146 просмотров) <a class='original' href='./download/file.php?id=396&mode=view' target=_blank>Загрузить оригинал (11.86 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Резать очень просто тупо берем и разбиваем каждую кривую четыремя прямыми, которые задают рабочую область. А потом берем только те кривые, которые не вылазят из этой области. Кстати, окружность квадратом можно разбить на 8 частей ;) .

2 раза ИМХО это расточительство :)
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

У Inkscape для этого наверняка встроенные средства. Для ручного метода (когда код с нуля, вообще не в инкскейпе, а по готовому файлу g-кода), то есть прямоугольник и есть g02/03 и отрезки. Надо будет аккуратно все случаи выписать. Я готов буду это написать.

В любом случае - g-код для первой фрезы содержит непрерывную траекторию. если вырезать из него фрагмент, то получится разрывный путь => потеря времени... Обходного метода я вообще придумать при таком раскладе не могу (кроме изначально не змейки, а набора змеек с, возможно, перекрытием). Змейка показана круглой спиралью (квадратную сложнее рисовать) и на стадии g-кода у каждой змейки надо комментарий добавлять, чтоб использовать только нужную на стадии разрезания на куски внешним скриптом.
Вложения
N1.png (5143 просмотра) <a class='original' href='./download/file.php?id=397&mode=view' target=_blank>Загрузить оригинал (33.65 КБ)</a>
N1_over.png (5143 просмотра) <a class='original' href='./download/file.php?id=398&mode=view' target=_blank>Загрузить оригинал (33.54 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Я сомневаюсь в целесообразности вынесения этой функции в отдельный скрипт. Придется парсить gкод, а это ого-го , если учитывать только g01 g02 g03 то еще ничего, но там же куча всего еще есть.
Если оочень хочтся можно написать внешний обработчик который будет использоваться из основного скрипта. Плагин к плагину получается :D!
Гораздо проще все эти телодвижения сделать внутри пgcode tools.
Алгоритм простой, нужно толко , как обычно, оговорить тонкие места.
1. Как задавать области обработки?
По одиночке? Сеткой? Графически, как координатные привязки?
2. Каким образом совместить обработку с остальными функциями?
Сейчас все контуры которы идут на экспорт проходят функцию parse curve, которая их сортирует, растягиввает, перемещает ... а затем передает в biarc для аппроксимации. Можно туда запихать нужную обработку и возвращать в зависимости от п1 либо одну последовательность, либо набор для сетки.
3. Сохранять, я думаю, нужно в разные файлы. Хотя, могутбыть ньюансы...
4. Наверное нужно для этой функции сделать отдельную вкладку.
5. Что-то еще?

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

И еще, нужно придумать интерфейс для создания спирали! Что-то про нее мы совсем забыли!
Предложения:
1. Создать функцию, которая будет рисовать спираль, по заданным параметрам:
а. Ширина / высота (для интеграции с разрезанием кода)
б. Инструмент
в. Заглубления?
2. Нужно придумать что-то с углами, при обычной квадратной спирали в углах останутся треугольнички.
Наверное нужно будет добавить по маленькому отрезку на каждый угол.
3 .....


Гляжу я на это все и понимаю, что нам все больше и больше нужна библиотека инструментов...
Как ее реализовать? Предложения?
Какие параметры вообще могут быть у инструмента?
1. Диаметр
2. Форма
3. Угол заглубления (еще нужно реализовать (наклон траектории заглубления))
4. Стандартное заглубление на проход (возможно состыковать с библиотекой материалов)
5. Скорость подачи (возможно состыковать с библиотекой материалов)
6. Вход/выход (для плазмы)
7. Дополнительный код перед после обработки каждого контура (в том числе для плазмы)
8. СОЖ
9. Обороты шпинделя. (возможно состыковать с библиотекой материалов)
10. Направление реза.
11. Обход углов (для плазмы)
12. Название :), как это я про него забыл.
13. И конечно id.

Еще варианты?

На первых парах можно библиотеку материалов не делать - обойтись несколькими описаниями инструмента для разных материалов.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

root писал(а):Я сомневаюсь в целесообразности вынесения этой функции в отдельный скрипт. Придется парсить g-код, а это ого-го , если учитывать только g01 g02 g03 то еще ничего, но там же куча всего еще есть.
Мне кажется, что для нашего случая можно сделать так: написать функцию "сечения" отрезка отрезком и дуги отрезком.
После последовательно применить отрезок левой стороны ко всему G-коду, к полученному верхний и т.п.
Теперь пробежаться по всем элементам отобрать все, которые внутри прямоугольника.

Плюсы подхода: ничего не надо в основной программе менять. Минусы: (пока) не нашёл.
root писал(а):...внутри gcode tools.
1. Как задавать области обработки?
Квадратно-гнездовым. Шаг X, шаг У. файлы по номерам раскладывать как freza01r01c02.ngc

Сохранять можно в разные файлы. Это не критично.

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

PPS Спираль в любом случае с шириной/высотой. Про уголки - своевременная мысль. Думаю делать кусочек дуги в углах. завтра нарисую.
Тогда радиус дуги будет постоянно увеличиваться, а это не хорошо.
Минусы: (пока) не нашёл.
Главный минус - это нужен хороший парсер! Я об этом думал, когда меня спрашивали как сделать в G02 параметры IJK из абсолютных относительными. Проблема в том, что в каждой строчке G кода нет начального положения, есть только конечное, значит начальное должно постоянно вычисляться. И значит нужно парсить весь код. Причем там могут быть смены рабочей плоскости, локальные координаты, я уже не говорю о переменных, циклах и прочее, прочее, прочее...

Если все это сделать на основе готового плагина, тогда задача точно такая-же, только у тебя будут готовые контуры, с которыми легко и просто работать, и опять же не будет потери точности на излишних вычислениях.
Аватара пользователя
dormouse
Мастер
Сообщения: 334
Зарегистрирован: 27 фев 2010, 09:55
Репутация: 15
Заслуга: Developer
Контактная информация:

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение dormouse »

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

Re: Разработка Gcode tools - плагин Inkscape для экспорта в

Сообщение Nick »

Кстати, а как осуществляется физическое перемещение детали в станке (станка на детале)?
Как правильно спозиционировать деталь?
Что для этого используется?
Есть фотографии?
Ответить

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