Плагин для экспорта в Gкод

Обсуждение аспектов работы с CAМ программами, подготовка моделей, настройка постпроцессоров, настройка параметров инструментов, обсуждение стратегий обработки, симуляция обработки. Вопросы по G-коду.
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Плагин для экспорта в Gкод

Сообщение Var »

Я написал новый плагин Inkscape для экспорта в Gcode.

Inkscape - это очень мощный редактор векторных изображений. При этом дистрибутив занимает всего 37Мб. По возможностям он сравним с Corel Draw и Adobe Illustrator-ом.
Кстати видел у вас тему с вопросом чем переводить растр в вектор - Inkscape это умеет в два клика.
Родной формат inkscape - svg. Это векторный формат который понимают очень многие программы, в т.ч. браузеры, вот пример - герб Москвы. Поэтому в интернете есть очень много готовой графики, которую можно использовать для станка. А векторный формат изображений позволяет масштабировать ее до любого размера без потери качества.

Новый плагин переводит кривые из Inkscape в Gcode. Основное его отличие от уже существующего - это интерполяция кривых биарками (т.е. два куска окружностей (т.е. два кода G02 или G03)).
Такая интерполяция дает гладкие кривые при минимальном количестве опорных точек, что значительно снижает размер готовой управляющей программы и уменьшает время обработки.
В плагине также реализованы функции многозаходной обработки, обработки площади, добавление своих заголовков и т.д.....

Inkscape как и все его расширения распространяется под лицензией GPL, т.е. бесплатно, в том числе доступны исходные коды! Inkscape - это кроссплатформенная программа, работает по Windows, Linux, MacOS.

Плагин и полное описание с примерами перевода в Gкод см здесь: http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=34

Inkscape см официальный сайт http://www.inkscape.org

Маленький тутор:
g83147_004.png (6747 просмотров) <a class='original' href='./download/file.php?id=2712&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (146.6 КБ)</a>
Примеры работы плагина:

На рисунках красными линиями обозначена прямолинейная интерполяция (G01), синими и зелеными - круговая (G02 и G03), черной линией исходная кривая.
g4954_800x700.png (6747 просмотров) <a class='original' href='./download/file.php?id=2713&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (157.57 КБ)</a>
Screenshasdot_800.png (6747 просмотров) <a class='original' href='./download/file.php?id=2714&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (24.99 КБ)</a>
Screqnshot1_800px.png (6747 просмотров) <a class='original' href='./download/file.php?id=2715&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (77.49 КБ)</a>
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение spike »

Приветствую!
Возможности:
  • Экспорт кривых в Gcode с использованием круговой интерполяции (G02 и G03).
  • Экспорт ломанных в Gcode с использованием круговой (здесь, видимо, имеется ввиду линейная?) интерполяции (G01).
  • Экспорт любого количества кривых
  • Добавление собственных header и footer
  • Выбор единиц измерения
  • Задание масштабирования по двум осям
  • Задание заглубления фрезы на проход
  • Обработка внутренней части фигуры, вырезка фасок
  • Полученный Gкод легко масштабируется и позиционируется (вначале файла задаются переменные масштаба и отступа по всем осям, и еще некоторые параметры)
Здорово!
А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?
На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть?
А что имеется ввиду под header и footer? заголовок и концовка УП?
Оптимизация есть?
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

По-моему, это слишком хорошо, чтобы быть правдой ) Поставил на закачку.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение spike »

spike писал(а):А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть? А что имеется ввиду под header и footer? заголовок и концовка УП?
Во, ёмоё, там не одна страница, а три! )bk( - нашел ответы на некоторые вопросы и файлик, но:

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

(Generated by gcode_tools from inkscape.) 
M3 
G21 (All units in mm)
#4  = 400.000000 (Feed)
#5  = 1.000000 (Scale x)
#6  = 1.000000 (Scale y)
#7  = 1.000000 (Scale z)
#8  = 0.000000 (Offset x)
#9  = 0.000000 (Offset y)
#10 = 0.000000 (Offset z)
#11 = 5.000000 (Safe distanse)
			(Found curve path13599)
G00 Z[#11*#7 + #10] 
G00 X[180.839110*#5+#8] Y[32.165756*#6+#9] 
G01 Z[-1.000000*#7+#10] F#4
G02 X[189.405837*#5+#8] Y[30.461433*#6+#9]  I[-0.000154*#5+#8] J[-22.383130*#6+#9] F #4
G02 X[195.321960*#5+#8] Y[26.165756*#6+#9]  I[-6.002196*#5+#8] J[-14.488149*#6+#9] 
G02 X[198.975593*#5+#8] Y[19.656639*#6+#9]  I[-13.400541*#5+#8] J[-11.801827*#6+#9] 
G02 X[200.535790*#5+#8] Y[9.365757*#6+#9]  I[-33.159905*#5+#8] J[-10.291074*#6+#9] 
Это что, стандарт такой есть? )ai( )bw3(
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение spike »

spike писал(а):Это что, стандарт такой есть?
Да уж... читать внимательно надо: здесь
3.3.2.2 Parameter Value
A parameter value is the pound character # followed by a real value. The real value must evaluate to an integer between 1 and 5399. The integer is a parameter number, and the value of the parameter value is whatever number is stored in the numbered parameter.
The # character takes precedence over other operations, so that, for example, "#1+2" means the number found by adding 2 to the value of parameter 1, not the value found in parameter 3. Of course, #[1+2] does mean the value found in parameter 3. The # character may be repeated; for example ##2 means the value of the parameter whose index is the (integer) value of parameter 2.
Ну вот не видел никогда таких файлов... надо промыслить.
Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

Давайте по-порядку:
spike писал(а):Приветствую!
Здорово!
А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?
На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть?
А что имеется ввиду под header и footer? заголовок и концовка УП?
Оптимизация есть?
Дуги IJK, дуги более 180 наверное да, но не уверен точно. То-ли я их не видел еще пока, то-ли они в любом случае будут разбиваться на 2. Скорее всего второе, при аппроксимации куска бейзеровой кривой биаркой основное условие, чтобы в точке соприкосновения тангенс совпадал, имхо из этого может следовать, что >180 не будет.
Примерчик см аттач к этому посту http://www.cnc-club.ru/forum/viewtopic. ... rt=40#p100
Header и footer: в том же посте: Если в директории присутствуют файлы header или footer, то они будут использованы вместо стандартных заголовков.

Заглубление можно увидеть в скринах EMC, но правда там всего два прохода с разницей в 0,5мм. На гербе лучше всего видно, там все линии двойные.

Опитимизация? Как таковой пока нет )ab(. В основном придется оптимизировать погрешность аппроксимации и холостого пробега, если будет надо напишу )ab(.
VShaclein писал(а):По-моему, это слишком хорошо, чтобы быть правдой ) Поставил на закачку.
Все правда :)!
spike писал(а): Во, ёмоё, там не одна страница, а три! )bk( - нашел ответы на некоторые вопросы и файлик, но:
Во, емое, ты уже все нашел )ab(
Стандарт, честно говоря не знаю )ab(. Где я его нашел: есть такая программа для управления различными станками EMC2 см. здесь http://www.linuxcnc.org.
Вкратце: уйма возможностей, GPL, open sourse, 3-5 осей, токарка + много чего, возможность удаленной работы, true real time, работает под Linux, есть возможность запустить с CD не устанавливая!
Так вот у нее есть стандартный темплейт, в нем вырезаются буквы EMC, так вот там все таким же образом написано, оттуда я и стырил )ab(.
А вообще вот их описание Жкода http://www.linuxcnc.org/docview/html//gcode_main.html
Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
Могу дописать, если нужно. А нужно?

ЗЫ спасибо за исправления )ab(!
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение spike »

Var писал(а): Дуги IJK, дуги более 180 наверное да, но не уверен точно. То-ли я их не видел еще пока, то-ли они в любом случае будут разбиваться на 2. Скорее всего второе, при аппроксимации куска бейзеровой кривой биаркой основное условие, чтобы в точке соприкосновения тангенс совпадал, имхо из этого может следовать, что >180 не будет.
Ага, с этим понятно, отлично. Просто не все NC программы понимают дуги с углом >180°, GIGAMESH в их числе.
Var писал(а):
Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
Могу дописать, если нужно. А нужно?
Ну как сказать, не думаю многие NC-программы понимают параметры. Я на одной из картинок видел программу без параметров, она получена с помощью твоего плагина?

А вообще интересная работа )ay( , можешь рассказать про алгоритм аппроксимации, и вот еще не понятно как выбираются параметры?
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

Аппроксимация биарками:
Сужаем задачу до аппроксимации отрезка кривой между двумя точками
Итого входные данные:
Первая тока, ее координаты, направление касательной в этой точке и длинна касательной
Конечная точка, тоже самое.
Аппроксимируем двумя дугами, у которых в точке пересечения касательные совпадают.

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

Вот тут есть ссылка на статью http://axis.unpythonic.net/01171767993
Ну как сказать, не думаю многие NC-программы понимают параметры. Я на одной из картинок видел программу без параметров, она получена с помощью твоего плагина?
Ок сделаю, вообще, в более ранних версиях так и было, это уже новая фича )ad(.
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

2 Var: опишите, pls, в двух словах, как конвертировать JPG в векторы ? Здравая логика не помогает. Первый раз вообще комп ушел в перезагрузку, дальнейшие просто ноль-эффект. Делаю так: запускаю прогу/файл/импортировать/выбираю файл JPG/выбираю импортированный объект/контур/векторизировать растр/обновить/ок. После чего прога чегой-то зависает-делает, потом отвисает, но окно векторизации не закрывается, как это ожидается. После закрытия окна векторизации крестиком в редакторе ничего не меняется. Пару раз, непонятно как, при работе в окне векторизации, в редакторе появлялись узлы, но после закрытия окна векторизации они исчезали.
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

1. открываем картинку (я обычно делаю это при помощи драг и дроп)
2. Контуры->векторизовать растр
3. Выделяем картинку (просто тыркнуть на нее)
Вставляем параметры, нажимаем ок (обновить чтобы обновить превью)

Вот пример с картинкой из соседней темы:
Лучше всего на ней получилось с параметрами В цвете, 9 сканирований и убрать все сглаживание.

ЗЫ Чтобы редактировать узлы нужно нажать на клавишу под стрелкой (вторая сверху в левой панеле) или F2. Но акуратнее узлов может быть дохрена (до 4000 и более) и поэтому может тормозить. Можно попробывать поиграть с настройками чтобы узлов стало меньше или попробовать Контур->Упростить.

Да и еще, картинку лучше брать по-больше, тогда может получиться точнее... И еще можно попробывать в Gimp (Тотже фотошоп, только бесплатный и весит 16 Мб (по функциям ниразу не слабее!)) или фотошопе контраст натянуть, тогда контуры могут стать четче. (www.gimp.org)
Вложения
Снимок-Новый документ 1 — Inkscape.png (6722 просмотра) <a class='original' href='./download/file.php?id=2716&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (118.35 КБ)</a>
Снимок-Векторизовать растр (Shift+Alt+B).png (6722 просмотра) <a class='original' href='./download/file.php?id=2717&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (49.16 КБ)</a>
Снимок-Векторизовать растр (Shift+Alt+B)-1.png (6722 просмотра) <a class='original' href='./download/file.php?id=2718&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (50.7 КБ)</a>
Снимок-Векторизовать растр (Shift+Alt+B)-2.png (6722 просмотра) <a class='original' href='./download/file.php?id=2719&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (63.36 КБ)</a>
Снимок-Новый д1окумент 1 — Inkscape-1.png (6722 просмотра) <a class='original' href='./download/file.php?id=2720&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (704.14 КБ)</a>
Снимок-Новый документ 1 — Inkscape-2.png (6722 просмотра) <a class='original' href='./download/file.php?id=2721&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (778.29 КБ)</a>
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

Спасибо, врубился - нужно было просто удалить оригинал после чего нажать F2.
В кореле, кажется, при конверсии есть такая фича, как создание векторизированной линии по середине контура. Есть ли такая фича в Inkscape ? Она, собственно, нужна для возможности создания управляющих программ для быстрой обработки. И мне к такой фиче для полного счастья не хватает преобразования ширины (исходного) контура в высоту инструмента. Вот такая вот интересная хотелка.
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

VShaclein писал(а): В кореле, кажется, при конверсии есть такая фича, как создание векторизированной линии по середине контура.
Это что такое?

И мне к такой фиче для полного счастья не хватает преобразования ширины (исходного) контура в высоту инструмента. Вот такая вот интересная хотелка.
Это вторая фича которую я хотел сделать... Но там есть свои нюансы... В основнов проблема в способе задания толщины контура. В инкскейпе есть такая фича, но она достаточно хитро реализована... В общем, я пока думаю над этой реализацией.
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

> Это что такое?
Вот есть какой-то полигон или линия переменной ширины (красный). Его нужно заменить на вектор нулевой ширины, точнее отрезок сплайна (черный), который будет проходить через середину заменяемой линии. При этом ширина линии не теряется, а преобразуется в дополнительную координату. Для 2D картинок - высота или, можно, цвет. 3D потенциально может быть, но практически пока не нужно.
172.JPG
172.JPG (5.07 КБ) 6715 просмотров
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
Добавил опцию для отрубания параметрического режима.

См : http://www.cnc-club.ru/forum/viewtopic. ... p=112#p112
VShaclein писал(а):> Это что такое?
Вот есть какой-то полигон или линия переменной ширины (красный). Его нужно заменить на вектор нулевой ширины, точнее отрезок сплайна (черный), который будет проходить через середину заменяемой линии. При этом ширина линии не теряется, а преобразуется в дополнительную координату. Для 2D картинок - высота или, можно, цвет. 3D потенциально может быть, но практически пока не нужно.
172.JPG
Понятно. Инкскейп так переводить в вектор имхо не умеет. Однако, есть возможность задания переменной ширины штриха. Например, если выбрать карандаш, то сверху появится выбор формы (нарастание, угасание, произвольная форма из буфера обмена). Но внутренне эта форма задается как изгиб заданной фигуры по контуру.

Так о чем я? А, вот: векторизация растра это процесс достаточно сложный сам по себе, а векторизация растра с условиями еще сложнее.
Давайте рассмотрим на конкретном примере, какая есть картинка, и что вы хотите в итоге получить (какую траекторию инструмента)?
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

> Инкскейп так переводить в вектор имхо не умеет.

Но часть необходимой работы делает. Может как-то доработать ?

> Но внутренне эта форма задается как изгиб заданной фигуры по контуру.
Так Z-координату и нужно хранить как изгиб между пары точек и касательных, а не "попиксельно".

> Давайте рассмотрим на конкретном примере, какая есть картинка, и что вы хотите в итоге получить (какую траекторию инструмента)?

Например листочек-лепесточек:
174.JPG (6700 просмотров) <a class='original' href='./download/file.php?id=2723&sid=04681c4d5d38c1605896ecd2d91a3620&mode=view' target=_blank>Загрузить оригинал (7.65 КБ)</a>
Линия движения инструмента лежит по центру листочка. Глубина фрезеровки соответствует его ширине. Фрезеруем конусной фрезой, фрезеруется за одно движение. Если делать классически, то потребуется тысяча проходов по одному месту.
Var
Новичок
Сообщения: 14
Зарегистрирован: 04 фев 2010, 20:46
Репутация: 0
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение Var »

Хммм... Если корел умеет так трейсить, то это круто! Имхо такую картинку проще руками отрисовать чем оттрейсить.

А по поводу заглубления в зависимости от толщины штриха: я собираюсь эту функцию реализовать... Но на это нужно время.
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

Я собирался оттрейсить корелом, затем загрузить dxf через какую-нибудь либу и преобразовать bmp еще раз, с учетом векторов, добавив к dxf третью координату.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение spike »

А почему без комментариев? )ab(
VShaclein
Опытный
Сообщения: 183
Зарегистрирован: 25 авг 2008, 11:36
Репутация: -47
Контактная информация:

Re: Плагин для экспорта в Gкод

Сообщение VShaclein »

Такжеж без слов все ясно. Можно и не читать даже.
Ответить

Вернуться в «CAM пакеты»