Страница 13 из 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 для экспорта в
Добавлено: 31 мар 2010, 14:08
Nick
Написал функцию создания контрольных точек с возможностью задания начальных значений.
Изменил интерфейс, как и писал ранее, заменил радио батн выборо функции в зависимости о активной страницы.
Практически написал создание матрицы трансформации.
Контрольные точки сначала ищутся в активном слое, а затем, во всем рисунке.
К вечеру возможно будет готова первая версия...
Re: Gcode tools - plug-in Inkscape для экспорта в Gcode
Добавлено: 31 мар 2010, 14:12
mr.Iceman
root писал(а):Прямо сейчас мы пишем функцию, которая по трем заданным точкам будет автоматически позиционировать вашу деталь.
Ага, ваше с
dormouse обсуждение новой функциональности я отслеживаю.
Если Вы интересуетесь моим мнением, то я считаю , что для подавляющего большинства применений вполне хватит одной заданной точки (0,0).
А вращать и масштабировать объект можно с помощью встроенных средств inkscape.
У меня, конечно, хватает воображения, чтобы представить ситуацию, когда для точной привязки объекта к детали понадобится использование 3-х точек с мастабированием и вращением объекта, но я искренне считаю, что это - голимая экзотика.
Я считаю, что для 99,9% применений достаточно просто обеспечить механизм совмещения заданной точки рисунка inkscape'а и позиции (0,0) станка.
Может, начнем с одной точки, а потом уже в качестве опций добавим остальные две, а также масштабирование и вращение?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 31 мар 2010, 14:34
dormouse
я всё думаю насчёт деления g-кода на фрагменты. все варианты кажутся сырыми. Если делить геометрию, то не будут работать чудо-треугольные-вырезы, если ... если...
Похоже, что (пока) самая удачная идея - написать простенький внешний конвертер для разрезания результирующего g-кода. Это не сложно.
Для примера - та лошадка-единорог с который мы engraving.svg берём - это изделие метр на метр. Рабочий станок сейчас 350х1900 примерно. Итого - минимум на 3 фрагмента резать надо....Можно, конечно, вырезать каждый фрагмент с запасом = 1.5*D1 вокруг. и добавлять внешнюю границу. Тогда внутри области изделие не изменится (по идее). Переработка небольшая, метод очевидный.
Но резать G-код тоже не очень просто.
Будут свежие идеи?
Re: Gcode tools - plug-in Inkscape для экспорта в Gcode
Добавлено: 31 мар 2010, 15:26
Nick
mr.Iceman писал(а):Если Вы интересуетесь моим мнением, то я считаю , что для подавляющего большинства применений вполне хватит одной заданной точки (0,0).
А вращать и масштабировать объект можно с помощью встроенных средств inkscape.
У меня, конечно, хватает воображения, чтобы представить ситуацию, когда для точной привязки объекта к детали понадобится использование 3-х точек с мастабированием и вращением объекта, но я искренне считаю, что это - голимая экзотика.
Я считаю, что для 99,9% применений достаточно просто обеспечить механизм совмещения заданной точки рисунка inkscape'а и позиции (0,0) станка.
Может, начнем с одной точки, а потом уже в качестве опций добавим остальные две, а также масштабирование и вращение?
Дело в том, что я уже почти написал для трех, если Вам нужен будет только перенос, то можно просто сгруппировать все точки вместе и перенести в нужное место.
Тем более, что реализация отличается в несколько строчек.
dormouse писал(а):я всё думаю насчёт деления g-кода на фрагменты. все варианты кажутся сырыми. Если делить геометрию, то не будут работать чудо-треугольные-вырезы, если ... если...
Я подумаю на досуге, что можно с этим сделать... пока сходу решение не приходит.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 31 мар 2010, 15:54
dormouse
Полноценная резка g-кода сложна, но вполне осуществима (если линейный g-код без циклов процедур и т.п.). Окружности несложно порезать.
Удвоенный диаметр оффсета так же даёт рабочее решение (не обязательно все 100% рабочей области станка под изделие занимать - пусть немного "вхолостую" поработает).
По поводу трансформации по трём точкам: есть уверенность, что востребованная задача. Всё, чем мы здесь занимаемся на вполне достаточном уровне решено в любой CAM программе. "Покупай и пользуйся". Есть некоторые вещи, которые с опытом становятся очень востребованы и просто не знаешь, как это преодолеть. Позиционирование, разбиение на фрагменты, "дорезание" уголков и ещё некоторые - как раз из этого числа.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 31 мар 2010, 20:13
Nick
Можно тестировать функцию ориентации!
или
(ревизия 19)
Как с ней работать:
Открываем вкладку Orientation. Вводим параметры точек, по-умолчанию они равны точкам (0;0), (100;0) и (0;100), т.е. начало координат, ось Х и ось У.
Далее устанавливаем их в нужное место. Если Вам не нужен масштаб, то можно эти точки сгруппировать (хммм... надо наверное их изначально группировать, масштаб по осям наверное мало кому нужен).
Далее двигаем их куда хотим, вращаем, изгибаем, в общем развлекаемся по полной. Желаемые значения в этих точках можно менять прямо в рисунке с помощью инструмента текст, главное, соблюсти формат: ( число ; число ), пробелы не считаются.
Потом выбираем другую вкладку и выполняем экспорт.
Да! Изменился интерфейс, теперь функция выбирается в зависимости от выбранной вкладки.
И еще, координатных точек можно делать много, если их разместить в разных слоях. Сначала скрипт будет искать координатные точки в выбранном слое, а затем, если в нем их не найдет, в остальном рисунке.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 09:18
Nick
Новая ревизия
Исправил пару незначительных багов.
+
Теперь все контрольные точки объединены в одну группу.
Добавлен параметр Initial scale, которым можно сразу задать единицы измерения.
или
ревизия 20
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 11:17
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
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 12:28
Nick
Поразмышлял на досуге о разделении рисунка на зоны...
Готовый код, или почти готовый - уже сгенеренные биарки, но не экспортированные в Gcode разбить можно, можно даже с нахлестом. Но тогда не получится реализовать спиральку, она превратится либо в отдельные линии, либо в концетрические буквы П или Г.
Если разбить рисунок до генерации траектории, то появятся новые углы по краю разбиения.
Нужно думать еще...
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 16:14
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
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 16:25
Nick
Нужно разбить задачу:
2. Обработка по спирали, рассчитываем код, раздельно по участкам обработки.
1. Гравировка тонких мест, рассчитываем все сразу и разбиваем уже готовый код.
Так по-идее должно сработать...
ЗЫ как кстати orientation работает, кто-нибудь проверял?
ЗЫЫ А как с помощью базаара на месте разбирать конфликты версий?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 16:42
dormouse
не очень ясны вопросы.
2. Обработка по спирали делается фрезой N1. Эта часть никак не связана с работой фрез N2,N3. Если "раздельные участки обработки" - это порезанный файл, то в этом случае получится только потеря в 2 раза времени на ход фрезы. С другой стороны, если следы от фрезы останутся на изделии, то это ОЧЕНЬ подчеркнёт ощущение, что она "за раз" сделана из цельного куска
1. Разбиение готового кода - очень простая задача. Вернее не простая, а "техническая" - надо реализовать, изобретать там ничего не требуется. Алгоритм такой: берём область, все линейные сегменты либо внутри, либо вырезаем отрезок из него. Для окружностей сложнее, но это техническая задача (сложности, что на 2 сегмента одну дугу может разбить - когда исходная дуга по часовой стрелке от A до B)
P.S. Отличная статья про pipeline:
http://softwaremaniacs.org/blog/2010/02 ... -pipeline/
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 16:52
Nick
Резать очень просто тупо берем и разбиваем каждую кривую четыремя прямыми, которые задают рабочую область. А потом берем только те кривые, которые не вылазят из этой области. Кстати, окружность квадратом можно разбить на 8 частей

.
2 раза ИМХО это расточительство

Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 17:07
dormouse
У Inkscape для этого наверняка встроенные средства. Для ручного метода (когда код с нуля, вообще не в инкскейпе, а по готовому файлу g-кода), то есть прямоугольник и есть g02/03 и отрезки. Надо будет аккуратно все случаи выписать. Я готов буду это написать.
В любом случае - g-код для первой фрезы содержит непрерывную траекторию. если вырезать из него фрагмент, то получится разрывный путь => потеря времени... Обходного метода я вообще придумать при таком раскладе не могу (кроме изначально не змейки, а набора змеек с, возможно, перекрытием). Змейка показана круглой спиралью (квадратную сложнее рисовать) и на стадии g-кода у каждой змейки надо комментарий добавлять, чтоб использовать только нужную на стадии разрезания на куски внешним скриптом.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 18:34
Nick
Я сомневаюсь в целесообразности вынесения этой функции в отдельный скрипт. Придется парсить gкод, а это ого-го , если учитывать только g01 g02 g03 то еще ничего, но там же куча всего еще есть.
Если оочень хочтся можно написать внешний обработчик который будет использоваться из основного скрипта. Плагин к плагину получается

!
Гораздо проще все эти телодвижения сделать внутри пgcode tools.
Алгоритм простой, нужно толко , как обычно, оговорить тонкие места.
1. Как задавать области обработки?
По одиночке? Сеткой? Графически, как координатные привязки?
2. Каким образом совместить обработку с остальными функциями?
Сейчас все контуры которы идут на экспорт проходят функцию parse curve, которая их сортирует, растягиввает, перемещает ... а затем передает в biarc для аппроксимации. Можно туда запихать нужную обработку и возвращать в зависимости от п1 либо одну последовательность, либо набор для сетки.
3. Сохранять, я думаю, нужно в разные файлы. Хотя, могутбыть ньюансы...
4. Наверное нужно для этой функции сделать отдельную вкладку.
5. Что-то еще?
ЗЫ с радостью отдам эту функцию тебе на реализацию! Помогу, чем смогу!
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 21:20
Nick
И еще, нужно придумать интерфейс для создания спирали! Что-то про нее мы совсем забыли!
Предложения:
1. Создать функцию, которая будет рисовать спираль, по заданным параметрам:
а. Ширина / высота (для интеграции с разрезанием кода)
б. Инструмент
в. Заглубления?
2. Нужно придумать что-то с углами, при обычной квадратной спирали в углах останутся треугольнички.
Наверное нужно будет добавить по маленькому отрезку на каждый угол.
3 .....
Гляжу я на это все и понимаю, что нам все больше и больше нужна библиотека инструментов...
Как ее реализовать? Предложения?
Какие параметры вообще могут быть у инструмента?
1. Диаметр
2. Форма
3. Угол заглубления (еще нужно реализовать (наклон траектории заглубления))
4. Стандартное заглубление на проход (возможно состыковать с библиотекой материалов)
5. Скорость подачи (возможно состыковать с библиотекой материалов)
6. Вход/выход (для плазмы)
7. Дополнительный код перед после обработки каждого контура (в том числе для плазмы)
8. СОЖ
9. Обороты шпинделя. (возможно состыковать с библиотекой материалов)
10. Направление реза.
11. Обход углов (для плазмы)
12. Название

, как это я про него забыл.
13. И конечно id.
Еще варианты?
На первых парах можно библиотеку материалов не делать - обойтись несколькими описаниями инструмента для разных материалов.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 21:34
dormouse
root писал(а):Я сомневаюсь в целесообразности вынесения этой функции в отдельный скрипт. Придется парсить g-код, а это ого-го , если учитывать только g01 g02 g03 то еще ничего, но там же куча всего еще есть.
Мне кажется, что для нашего случая можно сделать так: написать функцию "сечения" отрезка отрезком и дуги отрезком.
После последовательно применить отрезок левой стороны ко всему G-коду, к полученному верхний и т.п.
Теперь пробежаться по всем элементам отобрать все, которые внутри прямоугольника.
Плюсы подхода: ничего не надо в основной программе менять. Минусы: (пока) не нашёл.
root писал(а):...внутри gcode tools.
1. Как задавать области обработки?
Квадратно-гнездовым. Шаг X, шаг У. файлы по номерам раскладывать как freza01r01c02.ngc
Сохранять можно в разные файлы. Это не критично.
P.S. Насчёт библиотеки инструментов - надо сделать расширяемую по параметрам. Надо сутки подумать.
PPS Спираль в любом случае с шириной/высотой. Про уголки - своевременная мысль. Думаю делать кусочек дуги в углах. завтра нарисую.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 23:11
Nick
PPS Спираль в любом случае с шириной/высотой. Про уголки - своевременная мысль. Думаю делать кусочек дуги в углах. завтра нарисую.
Тогда радиус дуги будет постоянно увеличиваться, а это не хорошо.
Минусы: (пока) не нашёл.
Главный минус - это нужен хороший парсер! Я об этом думал, когда меня спрашивали как сделать в G02 параметры IJK из абсолютных относительными. Проблема в том, что в каждой строчке G кода нет начального положения, есть только конечное, значит начальное должно постоянно вычисляться. И значит нужно парсить весь код. Причем там могут быть смены рабочей плоскости, локальные координаты, я уже не говорю о переменных, циклах и прочее, прочее, прочее...
Если все это сделать на основе готового плагина, тогда задача точно такая-же, только у тебя будут готовые контуры, с которыми легко и просто работать, и опять же не будет потери точности на излишних вычислениях.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 01 апр 2010, 23:49
dormouse
если закладываться на код, генерируемый gcodetools, то проблем нет - он стабильный и всё в абсолютных координатах. Так задача распадается на две совершенно независимые, что резко упрощает идею + в будущем вполне может быть отдельным средством для, скажем, image-to-gcode стандартного.
Циклов, смен плоскостей и относительных координат в этих двух программах нет.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 02 апр 2010, 08:38
Nick
Кстати, а как осуществляется физическое перемещение детали в станке (станка на детале)?
Как правильно спозиционировать деталь?
Что для этого используется?
Есть фотографии?