Плагин для экспорта в Gкод
Плагин для экспорта в Gкод
Я написал новый плагин 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
Маленький тутор: Примеры работы плагина:
На рисунках красными линиями обозначена прямолинейная интерполяция (G01), синими и зелеными - круговая (G02 и G03), черной линией исходная кривая.
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
Маленький тутор: Примеры работы плагина:
На рисунках красными линиями обозначена прямолинейная интерполяция (G01), синими и зелеными - круговая (G02 и G03), черной линией исходная кривая.
-
- Почётный участник
- Сообщения: 358
- Зарегистрирован: 08 фев 2010, 01:03
- Репутация: 5
- Контактная информация:
Re: Плагин для экспорта в Gкод
Приветствую!
А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?
На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть?
А что имеется ввиду под header и footer? заголовок и концовка УП?
Оптимизация есть?
Здорово!Возможности:
- Экспорт кривых в Gcode с использованием круговой интерполяции (G02 и G03).
- Экспорт ломанных в Gcode с использованием круговой (здесь, видимо, имеется ввиду линейная?) интерполяции (G01).
- Экспорт любого количества кривых
- Добавление собственных header и footer
- Выбор единиц измерения
- Задание масштабирования по двум осям
- Задание заглубления фрезы на проход
- Обработка внутренней части фигуры, вырезка фасок
- Полученный Gкод легко масштабируется и позиционируется (вначале файла задаются переменные масштаба и отступа по всем осям, и еще некоторые параметры)
А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?
На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть?
А что имеется ввиду под header и footer? заголовок и концовка УП?
Оптимизация есть?
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
По-моему, это слишком хорошо, чтобы быть правдой ) Поставил на закачку.
-
- Почётный участник
- Сообщения: 358
- Зарегистрирован: 08 фев 2010, 01:03
- Репутация: 5
- Контактная информация:
Re: Плагин для экспорта в Gкод
Во, ёмоё, там не одна страница, а три! )bk( - нашел ответы на некоторые вопросы и файлик, но:spike писал(а):А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть? А что имеется ввиду под header и footer? заголовок и концовка УП?
Код: Выделить всё
(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]
-
- Почётный участник
- Сообщения: 358
- Зарегистрирован: 08 фев 2010, 01:03
- Репутация: 5
- Контактная информация:
Re: Плагин для экспорта в Gкод
Да уж... читать внимательно надо: здесь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.
Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
Re: Плагин для экспорта в Gкод
Давайте по-порядку:
Примерчик см аттач к этому посту http://www.cnc-club.ru/forum/viewtopic. ... rt=40#p100
Header и footer: в том же посте: Если в директории присутствуют файлы header или footer, то они будут использованы вместо стандартных заголовков.
Заглубление можно увидеть в скринах EMC, но правда там всего два прохода с разницей в 0,5мм. На гербе лучше всего видно, там все линии двойные.
Опитимизация? Как таковой пока нет )ab(. В основном придется оптимизировать погрешность аппроксимации и холостого пробега, если будет надо напишу )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(!
Дуги IJK, дуги более 180 наверное да, но не уверен точно. То-ли я их не видел еще пока, то-ли они в любом случае будут разбиваться на 2. Скорее всего второе, при аппроксимации куска бейзеровой кривой биаркой основное условие, чтобы в точке соприкосновения тангенс совпадал, имхо из этого может следовать, что >180 не будет.spike писал(а):Приветствую!
Здорово!
А дуги (G02, G03) чем описаны IJK или R? Дуги более 180° поддерживаются, или дробятся?
На картинках не увидел заглубления, какой нибудь примерчик программы в Ж-коде можно увидеть?
А что имеется ввиду под header и footer? заголовок и концовка УП?
Оптимизация есть?
Примерчик см аттач к этому посту http://www.cnc-club.ru/forum/viewtopic. ... rt=40#p100
Header и footer: в том же посте: Если в директории присутствуют файлы header или footer, то они будут использованы вместо стандартных заголовков.
Заглубление можно увидеть в скринах EMC, но правда там всего два прохода с разницей в 0,5мм. На гербе лучше всего видно, там все линии двойные.
Опитимизация? Как таковой пока нет )ab(. В основном придется оптимизировать погрешность аппроксимации и холостого пробега, если будет надо напишу )ab(.
Все правда !VShaclein писал(а):По-моему, это слишком хорошо, чтобы быть правдой ) Поставил на закачку.
Во, емое, ты уже все нашел )ab(spike писал(а): Во, ёмоё, там не одна страница, а три! )bk( - нашел ответы на некоторые вопросы и файлик, но:
Стандарт, честно говоря не знаю )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(!
-
- Почётный участник
- Сообщения: 358
- Зарегистрирован: 08 фев 2010, 01:03
- Репутация: 5
- Контактная информация:
Re: Плагин для экспорта в Gкод
Ага, с этим понятно, отлично. Просто не все NC программы понимают дуги с углом >180°, GIGAMESH в их числе.Var писал(а): Дуги IJK, дуги более 180 наверное да, но не уверен точно. То-ли я их не видел еще пока, то-ли они в любом случае будут разбиваться на 2. Скорее всего второе, при аппроксимации куска бейзеровой кривой биаркой основное условие, чтобы в точке соприкосновения тангенс совпадал, имхо из этого может следовать, что >180 не будет.
Ну как сказать, не думаю многие NC-программы понимают параметры. Я на одной из картинок видел программу без параметров, она получена с помощью твоего плагина?Var писал(а):Могу дописать, если нужно. А нужно?Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
А вообще интересная работа )ay( , можешь рассказать про алгоритм аппроксимации, и вот еще не понятно как выбираются параметры?
Re: Плагин для экспорта в Gкод
Аппроксимация биарками:
Сужаем задачу до аппроксимации отрезка кривой между двумя точками
Итого входные данные:
Первая тока, ее координаты, направление касательной в этой точке и длинна касательной
Конечная точка, тоже самое.
Аппроксимируем двумя дугами, у которых в точке пересечения касательные совпадают.
Задача сводится к решению нескольких параметрических квадратных уравнений. Единственное условие, решений будет бесконечное множество, они будут зависеть от подбора соотношения радиусов окружностей.
Вот тут есть ссылка на статью http://axis.unpythonic.net/01171767993
Сужаем задачу до аппроксимации отрезка кривой между двумя точками
Итого входные данные:
Первая тока, ее координаты, направление касательной в этой точке и длинна касательной
Конечная точка, тоже самое.
Аппроксимируем двумя дугами, у которых в точке пересечения касательные совпадают.
Задача сводится к решению нескольких параметрических квадратных уравнений. Единственное условие, решений будет бесконечное множество, они будут зависеть от подбора соотношения радиусов окружностей.
Вот тут есть ссылка на статью http://axis.unpythonic.net/01171767993
Ок сделаю, вообще, в более ранних версиях так и было, это уже новая фича )ad(.Ну как сказать, не думаю многие NC-программы понимают параметры. Я на одной из картинок видел программу без параметров, она получена с помощью твоего плагина?
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
2 Var: опишите, pls, в двух словах, как конвертировать JPG в векторы ? Здравая логика не помогает. Первый раз вообще комп ушел в перезагрузку, дальнейшие просто ноль-эффект. Делаю так: запускаю прогу/файл/импортировать/выбираю файл JPG/выбираю импортированный объект/контур/векторизировать растр/обновить/ок. После чего прога чегой-то зависает-делает, потом отвисает, но окно векторизации не закрывается, как это ожидается. После закрытия окна векторизации крестиком в редакторе ничего не меняется. Пару раз, непонятно как, при работе в окне векторизации, в редакторе появлялись узлы, но после закрытия окна векторизации они исчезали.
Re: Плагин для экспорта в Gкод
1. открываем картинку (я обычно делаю это при помощи драг и дроп)
2. Контуры->векторизовать растр
3. Выделяем картинку (просто тыркнуть на нее)
Вставляем параметры, нажимаем ок (обновить чтобы обновить превью)
Вот пример с картинкой из соседней темы:
Лучше всего на ней получилось с параметрами В цвете, 9 сканирований и убрать все сглаживание.
ЗЫ Чтобы редактировать узлы нужно нажать на клавишу под стрелкой (вторая сверху в левой панеле) или F2. Но акуратнее узлов может быть дохрена (до 4000 и более) и поэтому может тормозить. Можно попробывать поиграть с настройками чтобы узлов стало меньше или попробовать Контур->Упростить.
Да и еще, картинку лучше брать по-больше, тогда может получиться точнее... И еще можно попробывать в Gimp (Тотже фотошоп, только бесплатный и весит 16 Мб (по функциям ниразу не слабее!)) или фотошопе контраст натянуть, тогда контуры могут стать четче. (www.gimp.org)
2. Контуры->векторизовать растр
3. Выделяем картинку (просто тыркнуть на нее)
Вставляем параметры, нажимаем ок (обновить чтобы обновить превью)
Вот пример с картинкой из соседней темы:
Лучше всего на ней получилось с параметрами В цвете, 9 сканирований и убрать все сглаживание.
ЗЫ Чтобы редактировать узлы нужно нажать на клавишу под стрелкой (вторая сверху в левой панеле) или F2. Но акуратнее узлов может быть дохрена (до 4000 и более) и поэтому может тормозить. Можно попробывать поиграть с настройками чтобы узлов стало меньше или попробовать Контур->Упростить.
Да и еще, картинку лучше брать по-больше, тогда может получиться точнее... И еще можно попробывать в Gimp (Тотже фотошоп, только бесплатный и весит 16 Мб (по функциям ниразу не слабее!)) или фотошопе контраст натянуть, тогда контуры могут стать четче. (www.gimp.org)
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
Спасибо, врубился - нужно было просто удалить оригинал после чего нажать F2.
В кореле, кажется, при конверсии есть такая фича, как создание векторизированной линии по середине контура. Есть ли такая фича в Inkscape ? Она, собственно, нужна для возможности создания управляющих программ для быстрой обработки. И мне к такой фиче для полного счастья не хватает преобразования ширины (исходного) контура в высоту инструмента. Вот такая вот интересная хотелка.
В кореле, кажется, при конверсии есть такая фича, как создание векторизированной линии по середине контура. Есть ли такая фича в Inkscape ? Она, собственно, нужна для возможности создания управляющих программ для быстрой обработки. И мне к такой фиче для полного счастья не хватает преобразования ширины (исходного) контура в высоту инструмента. Вот такая вот интересная хотелка.
Re: Плагин для экспорта в Gкод
Это что такое?VShaclein писал(а): В кореле, кажется, при конверсии есть такая фича, как создание векторизированной линии по середине контура.
Это вторая фича которую я хотел сделать... Но там есть свои нюансы... В основнов проблема в способе задания толщины контура. В инкскейпе есть такая фича, но она достаточно хитро реализована... В общем, я пока думаю над этой реализацией.И мне к такой фиче для полного счастья не хватает преобразования ширины (исходного) контура в высоту инструмента. Вот такая вот интересная хотелка.
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
> Это что такое?
Вот есть какой-то полигон или линия переменной ширины (красный). Его нужно заменить на вектор нулевой ширины, точнее отрезок сплайна (черный), который будет проходить через середину заменяемой линии. При этом ширина линии не теряется, а преобразуется в дополнительную координату. Для 2D картинок - высота или, можно, цвет. 3D потенциально может быть, но практически пока не нужно.
Вот есть какой-то полигон или линия переменной ширины (красный). Его нужно заменить на вектор нулевой ширины, точнее отрезок сплайна (черный), который будет проходить через середину заменяемой линии. При этом ширина линии не теряется, а преобразуется в дополнительную координату. Для 2D картинок - высота или, можно, цвет. 3D потенциально может быть, но практически пока не нужно.
Re: Плагин для экспорта в Gкод
Добавил опцию для отрубания параметрического режима.Но вот еще вопрос, а постпроцессирование настраивается? Т.е. без параметров к примеру можно выводить? (понятно что можно, но что для этого надо?)
См : http://www.cnc-club.ru/forum/viewtopic. ... p=112#p112
Понятно. Инкскейп так переводить в вектор имхо не умеет. Однако, есть возможность задания переменной ширины штриха. Например, если выбрать карандаш, то сверху появится выбор формы (нарастание, угасание, произвольная форма из буфера обмена). Но внутренне эта форма задается как изгиб заданной фигуры по контуру.VShaclein писал(а):> Это что такое?
Вот есть какой-то полигон или линия переменной ширины (красный). Его нужно заменить на вектор нулевой ширины, точнее отрезок сплайна (черный), который будет проходить через середину заменяемой линии. При этом ширина линии не теряется, а преобразуется в дополнительную координату. Для 2D картинок - высота или, можно, цвет. 3D потенциально может быть, но практически пока не нужно.
Так о чем я? А, вот: векторизация растра это процесс достаточно сложный сам по себе, а векторизация растра с условиями еще сложнее.
Давайте рассмотрим на конкретном примере, какая есть картинка, и что вы хотите в итоге получить (какую траекторию инструмента)?
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
> Инкскейп так переводить в вектор имхо не умеет.
Но часть необходимой работы делает. Может как-то доработать ?
> Но внутренне эта форма задается как изгиб заданной фигуры по контуру.
Так Z-координату и нужно хранить как изгиб между пары точек и касательных, а не "попиксельно".
> Давайте рассмотрим на конкретном примере, какая есть картинка, и что вы хотите в итоге получить (какую траекторию инструмента)?
Например листочек-лепесточек:
Линия движения инструмента лежит по центру листочка. Глубина фрезеровки соответствует его ширине. Фрезеруем конусной фрезой, фрезеруется за одно движение. Если делать классически, то потребуется тысяча проходов по одному месту.
Но часть необходимой работы делает. Может как-то доработать ?
> Но внутренне эта форма задается как изгиб заданной фигуры по контуру.
Так Z-координату и нужно хранить как изгиб между пары точек и касательных, а не "попиксельно".
> Давайте рассмотрим на конкретном примере, какая есть картинка, и что вы хотите в итоге получить (какую траекторию инструмента)?
Например листочек-лепесточек:
Линия движения инструмента лежит по центру листочка. Глубина фрезеровки соответствует его ширине. Фрезеруем конусной фрезой, фрезеруется за одно движение. Если делать классически, то потребуется тысяча проходов по одному месту.
Re: Плагин для экспорта в Gкод
Хммм... Если корел умеет так трейсить, то это круто! Имхо такую картинку проще руками отрисовать чем оттрейсить.
А по поводу заглубления в зависимости от толщины штриха: я собираюсь эту функцию реализовать... Но на это нужно время.
А по поводу заглубления в зависимости от толщины штриха: я собираюсь эту функцию реализовать... Но на это нужно время.
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
Я собирался оттрейсить корелом, затем загрузить dxf через какую-нибудь либу и преобразовать bmp еще раз, с учетом векторов, добавив к dxf третью координату.
-
- Почётный участник
- Сообщения: 358
- Зарегистрирован: 08 фев 2010, 01:03
- Репутация: 5
- Контактная информация:
Re: Плагин для экспорта в Gкод
А почему без комментариев? )ab(
-
- Опытный
- Сообщения: 183
- Зарегистрирован: 25 авг 2008, 11:36
- Репутация: -47
- Контактная информация:
Re: Плагин для экспорта в Gкод
Такжеж без слов все ясно. Можно и не читать даже.