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

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

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

Разработка Gcodetools

Screenshot-output.ngc - AXIS-4.png (183769 просмотров) <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 или загрузите предыдущие ревизии.

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

Добавлено: 16 июл 2010, 13:27
Nick
Или лучше сделать пост процессор... с простой заменой re.sub("([XYZIJKRxyzijkr]\s*\d+\.\d{4})\d+", "\1",g) перед return g или перед выводом... Или написать класс post_processing ...

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

Добавлено: 19 июл 2010, 16:28
dormouse
В любом случае какой-то пост-процессинг желателен. Хотя бы в варианте синтаксиса вида "количество знаков после запятой" и выбор из дроп-даун списка конфигураций

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

Добавлено: 22 июл 2010, 17:26
Nick
Есть предложения по интерфейсу? Куда лучше этот пост постпроцессинг запихать?

ЗЫ Помимо всего прочего добавил новую фишку, теперь когда отрисовывается кривая из бирок, у каждой прямой и арки рисуется стрелка :). Сразу видно в каком направлении будет рез.

А все прочее это: улучшенный офсет, функция проверки ориентации контура и расширение для токарного станка уже вроде по чуть-чуть работает :).

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

Добавлено: 22 июл 2010, 18:02
dormouse
очевидно в options/preferences в виде дроп-даун списка. Суть проблем в том что это надо городить целый класс, который по-разному всё выводит, что весьма ёмко и сложно. Типа процедуры, принимающей на вход нашу "каноническую g-code инструкцию-сообщение " [g01 XYZ/F/G02 ijk/G03 ijk/P/G00/e.t.c.]" и форматирующей вывод согласно всей совокупности критериев.
Иными словами - выкинуть все print'ы из кода и оставить только в footer/header/tool_changer/measurer кусках и этой процедуре.

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

Добавлено: 22 июл 2010, 21:34
Nick
Можно заменить запись в файл на передачу текста постпроцессору.

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

Добавлено: 23 июл 2010, 11:36
dormouse
Я про это и говорю. Только у нас пост-процессор должен быть внутри скрипта. Без этого никак, похоже. Отдельно же никто ничего запускать не будет...
Держать весь массив в памяти чтобы после скормить разом может быть накладно.

Я предпочёл бы сделать пост-процессинг уже имеющегося g-кода. Для меня это самое очевидное. Т.е. чтобы output.ngc файл в самом конце начал читаться и обрабатываться с учётом какой-то другой специфики. Т.е. gcodetools работает на пространстве emc-g-code, а после отдельное преобразование запускается. Причина такого подхода - слишком дофига ньюансов. В итоге получится что число вызовов по сложности сравнится с обычной обработкой .ngc файла в виде фильтра-постпроцессора.

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

Добавлено: 23 июл 2010, 13:12
Nick
Кстати, а ведь его можно вообще отдельным сделать. Т.е. выполняем gcodetools как есть, а потом, в самом конце, выполняем из gcodetools python postprocess.py --file=input.file --options...
Но все же, наверно лучше в gcode tools отдельную процедурку сделать...

Итак какие нам нужны постпроцессоры?
1. Уменьшение длины чисел.
2. ???

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

Добавлено: 23 июл 2010, 15:54
dormouse
1. округление всех цифр
2. (возможно) тут сделать свой препроцессор для замены #-значений вместо корявых кусков в каждом месте основного кода как сейчас
3. точно специфика дуг для некоторых g-code станков (по g04 ijk делается переход к диаметру и ещё чему-то)
4. (пока) не знаю

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

Добавлено: 23 июл 2010, 21:01
Nick
А как их миксовать? Т.е. если мы например хотим 1 и 2. как это задавать в интерфейсе?

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

Добавлено: 24 июл 2010, 13:09
dormouse
Я предполагаю, что надо сделать незатейливый дроп-даун для разных g-code интерпретаторов, а опцию параметрический/не параметрический g-code трактовать как пост-процессор пересчитывающий #-арифметику в константы

вполне адекватный вариант. Плюсы - уйдут сложные IF из кода, все print'ы станут очевидными.

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

Добавлено: 26 июл 2010, 10:22
Nick
Согласен. Кстати можно сделать автоматическую параметризацию:
Ко всем координатам автоматом приписываем смещение и множитель. И создаем таблицу из всех найденных feed. И вообще убрать параметризацию из функции генерации Gкода.
Еще нужно будет добавить отражение оси как пост процессор. Для токарки нужно, там точки ориентации не совсем помогают.

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

Добавлено: 26 июл 2010, 12:12
dormouse
Тогда принимаем решение о пост-процессоре. Если наши коды генерируются ТОЛЬКО в абсолютных координатах, то можно все повторные операции OR-векторов дать, смещения и т.п. Так же точность, параметризация и какие-то ещё неведомые на данный момент плюшки.

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

Добавлено: 05 авг 2010, 10:12
Nick
Есть вопрос на счет интерфейса:
Куда этот пост процессор запихать?
Отдельная вкладка? Или на страницу с параметрами?

Я более менее созрел, чтобы его написать, благо вроде не так сложно должно быть :).

ЗЫ нужно подумать на счет следующего релиза: появились новые функции (расширение для токарки + возможно расстановку допишу...), изменился интерфейс. Предлагаю назначить приблизительную дату релиза на конец августа.

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

Добавлено: 06 авг 2010, 09:59
dormouse
Логично в options/preferences сделать дроп-даун для "типа станка".
P.S. Надо взять себя в руки и дописать необходимые для меня опции =)

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

Добавлено: 06 авг 2010, 10:24
Nick
Я боюсь что одного дропдауна может нехватить...

Например если у станка нужно сделать флип оси Y или флип оси Z это уже +3 строчки... И станков может быть много ...

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

Добавлено: 06 авг 2010, 12:18
dormouse
для гибкой конфигурации только текстовое поле в котором все параметры вписываем через запятую.
precision=4; flip=z,x; и т.п.

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

Добавлено: 06 авг 2010, 12:44
Nick
Точно, классная идея! :)

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

Добавлено: 06 авг 2010, 15:43
Nick

Ревизия 144

1. Добавил класс постпроцессор.
2. Написал простенький парсер.
3. Написал две функции для постпроцессора remap и remapi.
синтаксис функций remap("что менять"->"на что менять", ... "что менять"->"на что менять");
Самое главное что изменения происходят одновременно, т.е. remap("x"->"y","y"->"z"); заменит "x10 y 20" на "y10 z20" a не на "z10 z20".
remapi - тоже самое, что и remap, только не чувствительно к регистру.

Постпроцессор пока приделал только к path to gcode. К остальным не успел, скоро приделаю.
ЗЫ inx был изменен - нужно выполнить "python create_inx.py".

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

Добавлено: 06 авг 2010, 23:52
Nick
В post-processing добавил функцию scale.
синтаксис: scale(xscale[, yscale [, zscale [, ascale ]]]);

Если scale меняет ориентацию G02 или G03, то выполняется remapi("G02"->"G03", "G03"->"G02").
_____________

И в догонку flip() или flip_axis() можно и так и так. Параметры это просто перечисление осей.
Пример:
flip(xz); flip_axis(z); flip_axis(z y);
Flip(x) просто выполняет scale(-1,1,1,1).

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

Добавлено: 09 авг 2010, 09:34
Nick

Revision 148

Добавил функции round и move в постпроцессор.

Syntax:
round(r int) - округляет до r знаков. Если r<0 то округляет до десятков.
move(x float [, y float[, z float[, a float]]]) - делает сдвиг Gcode на уставновленную величину по осям x,y,z,a.