Страница 15 из 39
Разработка Gcodetools - плагин Inkscape для экспорта в Gкод
Добавлено: 07 дек 2009, 11:39
Nick
Разработка Gcodetools
Эта ветка посвящена разработке
Gcodetools, плагина для векторного редактора
Inkscape, позволяющего конвертировать кривые из Inkscape в Gкод, используя круговую и линейную интерполяцию.
Описание работы, установка, помошь и уроки по плагину можно найти в теме:
Gcodetools - plug-in Inkscape для экспорта в Gcode
На данный момент ведется работа над Gcodetools 1.7
Что мы хотим увидеть в новой версии:
- Улучшение расширения для плазменной резки
- Добавление дополнительных опций экспорта:
- Улучшение функции обработки площади
- Угол заглубления
- Расширение для сверловки
Требуются
- Тестеры
- Разработчики
- Помощь в технических аспектах по работе станков и обработке материалов
- Новые идеи
Последняя версия
Исходный код находится на launchpad.net. Получить последнюю версию при помощи bazaar можно так:
Последнюю версию можно загрузить через 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 или загрузите предыдущие ревизии.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 13:14
Nick
Упссс... случайно нажал на правка вместо цитаты... Извиняюсь, что похерил твой пост ...

Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 22:35
dormouse
Тестирование проведено.
Вывод 1: инструменты N1, N2 отработали адекватно, результат - хороший.
Вывод 2: я ошибочно (для Ubuntu/rus) и верно для Windows исправил дефолтное значение "Orientation point" 3.5433070660 на "точку". Это зависит от локали - в зависимости от системы либо точка либо запятая. В языках программирования, excel/calc и т.п. эту проблему можно решить как 3.14 или 3.14 = "3+14/100"

Как это решить в .inx надо изучать.
Вывод 3: С профилями фрезы что-то неладное. Имеющаяся фреза имеет прямой угол конуса. Подошло значение Z(w)=w/4.
Вывод 4: Engraving делает много артефактов. Для примера: при глубине 10 (максимальной) оказывается несколько дуг, уходящих в -15мм и несколько трактуемых EMC как "нулевые".
Фотоотчёт и подробные логи, места ошибок будут завтра.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 23:01
Nick
dormouse писал(а):Тестирование проведено.
Вывод 1: инструменты N1, N2 отработали адекватно, результат - хороший.
Вывод 2: я ошибочно (для Ubuntu/rus) и верно для Windows исправил дефолтное значение "Orientation point" 3.5433070660 на "точку". Это зависит от локали - в зависимости от системы либо точка либо запятая. В языках программирования, excel/calc и т.п. эту проблему можно решить как 3.14 или 3.14 = "3+14/100"

Как это решить в .inx надо изучать.
Вывод 3: С профилями фрезы что-то неладное. Имеющаяся фреза имеет прямой угол конуса. Подошло значение Z(w)=w/4.
Вывод 4: Engraving делает много артефактов. Для примера: при глубине 10 (максимальной) оказывается несколько дуг, уходящих в -15мм и несколько трактуемых EMC как "нулевые".
Фотоотчёт и подробные логи, места ошибок будут завтра.
1. ура
2. Это не совсем ошибочно, это вопрос локалей. С другой стороны это не критично, когда человек введет значения один раз они сохранятся для последующих запусков.
3. Прямой угол... Какой из них прямой? Который в основании?
4. "нулевые" это с нулевым радиусом? ошибки нужно будет рассмотреть по-подробнее...
С нетерпением жду фотоотчет!
ЗЫ написал первую версию интерфейса библиотеки инструментов... Завтра дошлифую, и попробую выложить в общую ветку, пока здесь: lp:~xepecine/+junk/gcodetools-1.5 .
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 23:10
mr.Iceman
dormouse писал(а):Начал писать туториал.
Первая-же попавшаяся на глаза фраза резанула глаз.
We should create "Area offset" as we have done earlier.
Прошу прощения, но вынужден заметить, что "as" в данной фразе смотрится как седло на корове. Лучше было-бы сказать "the way we have done it earlier", "in the same manner" или что-то типа того.
Может быть, имеет смысл написать мануал на языке предков и соплеменников, а не на языке потенциального противника?
Еще раз sorry за offtopic.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 23:26
Nick
Не стоит так нападать на Dormousa, он проделал большую работу. Ошибки? Чтож, никто от них не застрахован. Это очень хорошо, что Вы их заметили, мы постараемся их исправить

.
Кстати, у меня во время разработки библиотеки инструментов возникли сложности с переводом названий характеристик инструментов. Например, как правильно перевести угол заглубления?
Если не сложно предложите варианты перевода, для всего списка параметров. (список есть на предыдущей странице).
Зы нужно будет кого-нибудь из английской ветки привлечь для корректировки наших переводов...
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 04 апр 2010, 23:46
dormouse
Я не англо-говорящий, но вынужден признать, что с китайцами, итальянцами, французами, немцами, пуэрто-риканцами (сам понял, что пора прекращать писать, хотя лица так и всплывают) с которыми приходится общаться.... вынужден (и они, кстати тоже) общаться на корявом английском. Я не считаю что это хорошо или плохо.
Если вы готовы все мои материалы в данной теме своевременно переводить на враждебный язык - я двумя руками "за". Готов завтра же перебить весь туториал на родном языке (включая фотоотчёт с комментариями, соображения, выводы и т.п.) и дать для перевода.
На тему многоязычности: гугл-переводчик и т.п. достаточно хорошо на данный момент переводят. Я пробую потихоньку следующий подход: пишешь по-русски с терминами на английском, переводишь автопереводчиком и смотришь на результат. После первой же правки на другие речевые конструкции результат становится ничуть не хуже "изначально коряво написанного". Возможно, даже лучше.
Помню, что гугл-переводчик только половину страницы переводит. babelfish.altavista.com - всю.
P.S. Фреза N3 имела угол конуса 90° (т.е. угол поверхности конуса от вертикали 45°)
http://kalyaev.com/2010/20100402/tut01/ph-n1-n2-n3.png
Вылеты Engraving "вверх":
http://kalyaev.com/2010/20100402/tut01/ ... ing-up.png
и "вниз":
http://kalyaev.com/2010/20100402/tut01/ ... g-down.png
P.P.S. Немного фото добавлено в туториал:
http://kalyaev.com/2010/20100402/tut01/tut01.html
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 08:52
Nick
На счет нулевых дуг, что за нулевые дуги такие?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 09:30
Nick
Нашел ошибку в процедуре biarc. Из-за нее скорее всего вместо w пришлось использовать 4*w и, возможно, появлялись другие ошибки:
Код: Выделить всё
строка 453:
return biarc(sp1,sp2,z1,zm,depth+1)+biarc(sp2,sp3,z1,zm,depth+1)
Должно быть:
return biarc(sp1,sp2,z1,zm,depth+1)+biarc(sp2,sp3,zm,z2,depth+1)
Dormouse, если не сложно исправь в основной ветке, и выложи на форуме архив с исправленной версией. Мне это сделать сложнее, т.к. у меня сейчас другая ветка, с библиотекой инструментов.
---------------
Появился вопрос, если мы сделаем библиотеку инструментов, нужно ли оставлять определения инструмента в плагине?
1. Плюсы всегда явно и в одном месте будет задан инструмент. Если инструмент не задан будет выводиться предупреждение => пользователь не сможет не заметить настройки которые находятся на скрытых табах.
2. Минусы каждый раз придется создавать инструмент. В файлах, где инструментов нет, придется заново забивать инструмент. Однако, если сделать импорт библиотеки из внешних файлов, то этого можно будет избежать.
---------------
Еще вопрос, как быть со скоростью заглубления при гравировке? При генерации Gкода можно просто при заглублении вставлять "F %f" % self.tool['penetration feed'], но нужно ли вычислять скорость заглубления при гравировке или пока можно забить?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 10:37
dormouse
Ветку исправлю. Для Engraving скорость заглубления - сложное понятие, (пока) предлагаю не делать.
Для обычного:
Код: Выделить всё
1: #11 = 5.000000 (Safe distanse)
2: G00 Z[5.000000*#7+#10]
3: G00 X[160.998958*#5+#8] Y[39.341143*#5+#9]
4: G01 Z[-1.000000*#7+#10]F#4
5: G03 (...)F#4
A) Строка 2 предположительно должна выглядеть как G00 Z[#11*#7+#10] (если так, исправлю)
B) Строка 4: вместо F#4 надо написать F#13 (или какой-там последний номер свободного параметра)
Следующая строка 5 после заглубления всегда продублирована скоростью, так что ничего менять не надо.
C) Для значения в .inx коэффициента "по умолчанию" я предлагаю сделать "-1" для мм, чтобы она сама подставляла 3.5....
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 10:44
Nick
dormouse писал(а):Ветку исправлю. Для Engraving скорость заглубления - сложное понятие, (пока) предлагаю не делать.
Для обычного:
Код: Выделить всё
1: #11 = 5.000000 (Safe distanse)
2: G00 Z[5.000000*#7+#10]
3: G00 X[160.998958*#5+#8] Y[39.341143*#5+#9]
4: G01 Z[-1.000000*#7+#10]F#4
5: G03 (...)F#4
A) Строка 2 предположительно должна выглядеть как G00 Z[#11*#7+#10] (если так, исправлю)
B) Строка 4: вместо F#4 надо написать F#13 (или какой-там последний номер свободного параметра)
Следующая строка 5 после заглубления всегда продублирована скоростью, так что ничего менять не надо.
C) Для значения в .inx коэффициента "по умолчанию" я предлагаю сделать "-1" для мм, чтобы она сама подставляла 3.5....
А) да, спасибо

.
Чтобы исправить, Должно быть так:
Код: Выделить всё
g, lg, zs, f = '', 'G00', self.options.Zsafe if self.options.generate_not_parametric_code else " F#11" , " F%f"%self.tool['feed'] if self.options.generate_not_parametric_code else " F#4"
Хотя, я не прав, не только это ...
--------
Чтобы это исправить нужно добавить:
Код: Выделить всё
go_to_safe_distance = "G00" + c([None,None,zs]) + "\n" if self.options.generate_not_parametric_code else 'G00 Z[#11*#7+#10]\n'
после
И заменить 6 строчек определяющих move и end на эти:
Код: Выделить всё
if s[1] == 'move':
g += go_to_safe_distance + "G00" + c(si[0]) + "\n"
lg = 'G00'
elif s[1] == 'end':
g += go_to_safe_distance
lg = 'G00'
В) уже почти сделал, в библиотеке инструментов у инструмента будет параметр penetration feed (интерессно, я правильно перевел или нет

) он и будет туда подставляться.
С) Тут возникает вопрос, если задан инструмент из библиотеки, то какое значение берем из инструмента или из формы inx? Может ну их нах все эти определения в форме, пусть все задается в библиотеке или я слишком категоричен

?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 12:02
dormouse
Я синхронно тоже самое исправлял.
первая строка - байт-в-байт, исключая того что я написал self.options.feed
6-ть строк Move-end - тут я закопался и как-то не так написал
-----
Первую при таком подходе исправлять вовсе не надо! иначе zs получает "#11".
------------------------
Ревизия 25
- добавлена Zspeed (#12), исправлена параметризация.
Код: Выделить всё
%
(Generated by gcode_tools from inkscape.)
M3
G21 (All units in mm)
#4 = 4.000000 (Feed)
#5 = 1 (Scale xy)
#7 = 1.000000 (Scale z)
#8 = 0 (Offset x)
#9 = 0 (Offset y)
#10 = 0.000000 (Offset z)
#11 = 4.800000 (Safe distanse)
#12 = 1.000000 (Zspeed)
G00 Z[#11*#7+#10]
G00 X[291.428560*#5+#8] Y[309.505040*#5+#9]
G01 Z[-1.000000*#7+#10]F#12
G01 X[600.000000*#5+#8] Y[309.505040*#5+#9] Z[-1.000000*#7+#10]F#4
G01 X[600.000000*#5+#8] Y[706.647890*#5+#9] Z[-1.000000*#7+#10]
G01 X[291.428560*#5+#8] Y[706.647890*#5+#9] Z[-1.000000*#7+#10]
G01 X[291.428560*#5+#8] Y[309.505040*#5+#9] Z[-1.000000*#7+#10]
G01 X[291.428560*#5+#8] Y[309.505040*#5+#9] Z[-1.000000*#7+#10]
G00 Z[4.800000*#7+#10]
M5
G00 X0.0000 Y0.0000
M2
(end)
%
Код: Выделить всё
%
(Generated by gcode_tools from inkscape.)
M3
G21 (All units in mm)
G00 Z4.800000
G00 X291.428560 Y309.505040
G01 Z-1.0000001.000000
G01 X600.000000 Y309.505040 Z-1.000000 F4.000000
G01 X600.000000 Y706.647890 Z-1.000000
G01 X291.428560 Y706.647890 Z-1.000000
G01 X291.428560 Y309.505040 Z-1.000000
G01 X291.428560 Y309.505040 Z-1.000000
G00 Z4.800000
M5
G00 X0.0000 Y0.0000
M2
(end)
%
P.S. так же исправлена ошибка, была "G21 (All units in mm)G00 Z4.800000" - добавлен отдельно
Код: Выделить всё
self.header += self.options.unit + "\n" + ( """#4 = %f (Feed)
Ревизия 26
Отрицательные значения в поле Orientation: Initial scale переключают в миллиметры
Ревизия 27
Исправлен biarc. Надо оттестировать на отрицательные вылеты в Engraving. Метод тестирования: загружаем engraving.svg, запускаем Engraving (скажем 10мм макс.глубины), полученный код открываем в EMC², щёлкаем по ориентации оси "X" или "Y" - смотрим на пики ниже указанных 10мм. Явно есть по-прежнему проблемы. Такие три строки подряд (по оси Z движение должно быть в пределах -10..0 для рабочего цикла):
Код: Выделить всё
G03 X10.231968 Y95.929868 Z-82.943503 I119.058593 J-40.828977
G02 X10.000000 Y95.243751 Z0.000000 I-244.537397 J82.293060
G02 X11.000124 Y103.040438 Z234.105062 I6087.605181 J-776.927934
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 14:30
Nick
Фух... Кажется написал библиотеку инструментов....
Сейчас попробую сделать merge с основной веткой...
P.S. так же исправлена ошибка, была "G21 (All units in mm)G00 Z4.800000" - добавлен отдельно
Блин, сколько раз мы эту ошибку уже исправляли, а она все время заново вылазит...

Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 15:03
Nick
Ревизия почему-то тоже 27
Добавлена функция tools library.
Убрал zspeed вместо него используется penetration speed инструмента.
Кстати, пока не реализована альтернатива использования значений в форме плагина. Т.е. либо используется значение из default_tool либо из tool который определяется формой на рисунке.
Как работает библиотека инструментов:
- Открываем вкладку, выбираем тип инструмента, нажимаем ок.
- Создается группа с описанием инструмента.
- Тип инструмента влияет только на начальные поля которые будут добавлены в форму инструмента.
Т.е. если поле не определено в форме инструмента, то оно в случае надобности возьмется из self.default_tool.
- Поля (название и значение) можно редактировать при помощи инструмента текст. Значения параметров могут быть многострочными, названия нет.
Пока реализованы обработки полей:
diameter, shape, feed, penetration feed... остальные буду дописывать.
Инструмент выбирается следующим образом: сначала ищутся инструменты в активном слое, причем сперва берутся те, которые на переднем плане, затем ищется во всей сцене. Потом в инструменте происходит поиск полей key => value, которые изменяют стандартные параметры инструмента self.tool=self.default_tool.
Ревизия 28
Внесены небольшие корректировки.
Ревизия 30
Добавлена обработка gcode before/after path.
Ревизия 31
Исправлена работа с точками ориентации, теперь поиск идет сверху вниз по оси z. (в стандартном алгоритме получалось наоборот, т.к. в svg сверху оказываются те элементы, которые стоят снизу в xml дереве)
----------------------------------
Я предлагаю немного притормозить с разработкой, поработать над ошибками и сделать релиз. С момента последнего релиза уже достаточно много нововведений нужно выдвинуть их в массы

.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 16:16
dormouse
Все X,Y scale/offset теперь заменены на orientation points?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 16:24
Nick
dormouse писал(а):Все X,Y scale/offset теперь заменены на orientation points?
ага... и многие параметры инструментов тоже ...
Забыл написать, что главная прелесть библиотеки инструментов, что инструменты можно копировать стандартными методами inkscape (Ctrl+D). И изменять в копиях необходимые параметры.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 17:22
dormouse
Странным образом влияют настройки Z(w) вкладки engraving на tool-на-рабочем-листе.
По-прежнему совсем некорректное что-то.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 17:42
Nick
dormouse писал(а):Странным образом влияют настройки Z(w) вкладки engraving на tool-на-рабочем-листе.
По-прежнему совсем некорректное что-то.
По-моему сейчас настройка Z(w) уже не должна влиять на engraving - сейчас должна влиять только форма заданная в библиотеке инструментов.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 18:14
Nick
Нашел еще один баг, из-за которого плохие значения вылетают:
строка 523 в biarc нужно добавить abs при расчете средней точки заглубления расчет длины дуги не учитывал, что угол может быть отрицательным.
Код: Выделить всё
else : zm = z1 + (z2-z1)*(abs(R1.mag()*a1))/(abs(R2.mag()*a2)+abs(R1.mag()*a1))
Ревизия 32
Исправлен этот баг.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 22:25
dormouse
Для прямоугольника (0,0)-(20,5) в точке (5, 2.5) (на средней линии вдоль длинной стороны) имеем строку
Код: Выделить всё
G03 X[5.002441*#5+#8] Y[2.499195*#5+#9] Z[-8.858300*#7+#10] I[8.252539*#5] J[16.507704*#5]
Иными словами - заглубление Z=9. Для z=w получаем смещение dx=dy=dz=9 от центра. Ожидается значение 2.5=5/2 (короткая сторона пополам). Т.е. примерно старое 9/4

Имеем для w/4:
Код: Выделить всё
G03 X[5.002441*#5+#8] Y[2.499195*#5+#9] Z[-2.214575*#7+#10] I[8.252539*#5] J[16.507704*#5]
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 05 апр 2010, 22:38
Nick
Хммм... у меня получилось:
Код: Выделить всё
G03 X[5.002441*#5+#8] Y[2.499195*#5+#9] Z[-4.429150*#7+#10] I[8.252539*#5] J[16.507704*#5]
А! Я кажется поянл в чем дело! Дело в том, что по оси Х и У но не делаем масштабирования по оси Z. Нужно обдумать как его завязать на растяжения X и Y. Если scaleX==scaleY все в принципе понятно, но если нет, что делать?
Есть предложение: Zscale = self.options.Zscale * (Xscale+Yscale)/2, ну или как-то так?