Страница 18 из 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 для экспорта в
Добавлено: 08 апр 2010, 10:35
dormouse
Начал писать обещанный Inkscape FAQ, gcodetools .
http://kalyaev.com в 20100408 числе (сегодня). Прямая ссылка:
http://kalyaev.com/2010/20100408/inkscape-faq.html
Как всегда, постоянно обновляется. Почаще жмите F5/Ctrl+R =)
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 10:40
Nick
Q: My object is ignored when Area or Path to gcode or I cant even "select it", e.t.c.
A1: Try select object, Path→Dynamic offset (Ctrl+J)
A2: File→save as "temp.ps" (postscript), File→Open "temp.ps", select desired object→copy→paste it back to original document.
Как так "I cant even "select it"?
Как такое получить?
У меня такое не получалось никогда. Пример в студию!
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 11:25
dormouse
Мы уже это обсуждали. Когда делаешь Area с небольшими значениями, то адекватно работать с контурами по отдельности нельзя. Пусть я не понимаю как этим пользоваться, но когда вызываешь Area, она отрисовывает пяток контуров, щёлкаешь по любому и НИЧЕГО не происходит (не подсвечивается, не получается скопировать и т.п.).
Да, я понимаю, что конвертирование в Ctrl+J и т.п. может сработать, но это не дело. Сравнимого результата с экспортом в PS и импортом обратно я не знаю. Пример с "невыбирающимися" оффсетами не сейчас нет времени приводить.
Конкретный пример когда не работает Area:
http://kalyaev.com/2010/20100408/outline.svg
Заработает если экспорт в ps и импорт обратно.
Ревизия 36
Обращение к r ДО считывания из self.options.area_inkscape_radius. Исправлено.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 14:47
Nick
Ревизия 37
Немного улучшил Area, теперь контуры обрабатываются грамотнее.
ЗЫ так и не смог получить это : "I cant even "select it"", есть пример svg где что-то нельзя выделить?
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 15:30
dormouse
http://www.cnc-club.ru/forum/viewtopic. ... rt=60#p177 ... и далее 4 поста. С точки зрения пользователя контур НЕ ВЫДЕЛЯЕТСЯ. Щёлкаешь до потери пульса, но результат - неадекватный ижиданиям при слабом владении Inkscape.
У меня не получалось выделить "третий", скажем, по счёту контур и передать его Path-to-gcode. только после импорта-экспорта. я не самый тупой, но мучился более часа "и так и сяк" тогда.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 15:46
Nick
http://www.cnc-club.ru/forum/viewtopic. ... rt=60#p177 ... и далее 4 поста. С точки зрения пользователя контур НЕ ВЫДЕЛЯЕТСЯ. Щёлкаешь до потери пульса, но результат - неадекватный ижиданиям при слабом владении Inkscape.
У меня не получалось выделить "третий", скажем, по счёту контур и передать его Path-to-gcode. только после импорта-экспорта. я не самый тупой, но мучился более часа "и так и сяк" тогда.
Все это я помню, но я так и не увидел svg, в котором нельзя что-то выделить.
dormouse писал(а):Резвизия 37, кажется, не push'нулась. В хранилище её не видно.
Точно, commit сделал, а push забыл

.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 20:21
Nick
Хмммм... Есть небольшая проблемка с порядком обработки...
В self.selected.iteritems() контуры находятся в том порядке, в котором они выбирались а не в порядке убывания/увеличения z.
Можно сделать поиск с расстановкой координаты z, если не найдем более хорошего решения.
Ревизия 38
Добавлена функция help - открывает русскую или английскую версию топика о Gcode tools.
+ Небольшой багфикс.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 08 апр 2010, 23:33
dormouse
Другой взгляд
Поскольку концептуально мы не рассчитываем на склеивание G-кодов для отдельных инструментов (т.е. в результате получается один файл для одного инструмента. После надо какие-то другие действия совершать и получать другой файл), можно посмотреть со стороны:
1. N контуров в порядке следования (1,2...N)
2. У каждого OR-вектор+инструмент+path-to-gcode/engraving. Других параметров, влияющих на результат, я сейчас не вспомню.
Я пытаюсь обсудить как выстроить список из п.1 и как каждому элементу из него задать п.2. Конкретное предложение:
1. в пределах слоя по Z
2. слои в порядке следования
3. у каждого слоя свой OR-вектор
Т.к. задаёмся только одним инструментом, случай одного и того же инструмента для path-to-gcode и engraving рассматривать не будем => можно принять решение, что "либо/либо" - т.е. "оставить как есть сейчас".
Итого "метод работы": задали слои, на каждом OR-вектор (если нет в данном слое, то каскадно, берётся с выше/нижележащего - надо определить "старшинство"), инструмент задавать в закладке Path-to-gcode/Engraving. На самих страницах только "элементы библиотеки хранить" (при запуске Apply пробегаем по всему xml дереву, и выбираем указанный на вкладке). Выстроили список (как сказано ранее) и для каждого отработали по нужному алгоритму с закладки и указанным на закладке инструментом.
всё. спать.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 09:02
Nick
dormouse писал(а):
Другой взгляд
Поскольку концептуально мы не рассчитываем на склеивание G-кодов для отдельных инструментов (т.е. в результате получается один файл для одного инструмента. После надо какие-то другие действия совершать и получать другой файл), можно посмотреть со стороны:
Ну почему же, в будущем я планировал это сделать, имхо будет не очень сложно, а выгода от этого будет. Тем более за "Обработка со сменой инструмента" проголосовало 2 человека, т.е. большинство

.
Кстати, наш плагин это ремейк старого (
http://wiki.linuxcnc.org/cgi-bin/emcinf ... scapeHowto), так там была возможность обработки со сменой инструмента, там просто все слои обрабатывались отдельно и для каждого слоя использовался инструмент = названию слоя.
dormouse писал(а):
1. N контуров в порядке следования (1,2...N)
2. У каждого OR-вектор+инструмент+path-to-gcode/engraving. Других параметров, влияющих на результат, я сейчас не вспомню.
Скорее всего в скором будущем появится токарка и, возможно, плазма (если для нее не хватит обычного path to gcode).
2. Не думаю, что _каждому_ контуру нужен _свой_ OR и инструмент, но несколько OR и инструментов для одновременной обработки нужны.
3. Нужно определится с направлением поиска инструмента/OR вверх или вниз? Есть ли какие-нибудь схожие программы где это реализовано? Плюсы/минусы?
4. Если находим несколько OR и инструментов в слое делать warning или нет?
5. ИМХО задавать инструмент в форме нецелесообразно, т.к.
а. "Я всегда за "единственный" подход."
б. Это лишает возможности делать автоматическую смену инструмента.
Что нужно доделать до релиза
- Проверить грамотность английского. (Постараюсь подтянуть коллег из английских форумов)
- Решить вопрос с точками ориентации. Готово.
- Добавить "ругалки" на пользователя если нет инструмента, точек ориентации или если повторно выполняется процедура добавления инструмента, ОП. Готово
- Сделать порядок обработки по слоям.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 09:55
dormouse
>3. Нужно определится с направлением поиска инструмента/OR вверх или вниз?
Предлагаю первым считать самый верхний слой. [убраны неправильные слова]
>2. Не думаю, что _каждому_ контуру нужен _свой_ OR и инструмент, но несколько OR и инструментов для одновременной обработки нужны.
Я другой смысл вкладывал! имелось в виду: у каждого слоя на стадии обработки должен быть известен OR-вектор и номер инструмента.
Номер инструмента на данном этапе мне кажется логичным задавать в форме, т.к. он СКВОЗНОЙ, т.е. одинаковый для всех слоёв (поскольку 1 выходной файл с одним инструментом). OR-вектор наследуется от слоя-к-слою.[Далее можно вставлять смену инструмента, но тогда придётся дублировать многократно слои либо писать свой скриптовый язык, что будет не очень легко воспринято массами]
Получается, что у каждого слоя известна пара (OR,имя инструмента).
>4. Если находим несколько OR и инструментов в слое делать warning или нет?
Есть предложение выводить Error а не warning, поскольку мы работаем с реальными предметами и это может сорвать целый рабочий день. Это очень расстраивает.
>5. ИМХО задавать инструмент в форме нецелесообразно, т.к...
не инструмент, а НОМЕР(имя) инструмента. сами инструменты раскиданы по слоям.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 10:24
Nick
Предлагаю первым считать самый верхний слой, т.к. он последним делается.
Почему верхний делается последним? Верхний должен делаться первым. Т.е. сначала вырезаем то, что на первом плане, а затем то, что на заднем. По идее если контурам добавить заливку, то все контуры должно быть видно - это будет гарантировать обработку детали, а затем ее вырезку из листа.
Я проиллюстрировал возможные варианты поиска инструментов (для инструмента и OR процедура должна быть одна, но с инструментами это нагляднее).
Какой вариант поиска предпочтительнее.
Кстати, можно будет потом реализовать функцию отрисовки подобной картинки. Для проверки принадлежности инструментов. И порядка обработки.
Далее можно вставлять смену инструмента, но тогда придётся дублировать многократно слои либо писать свой скриптовый язык, что будет не очень легко воспринято массами
На сколько я понимаю, у каждого инструмента своя траектория = свой контур, ничего дублировать не придется.
Есть предложение выводить Error а не warning, поскольку мы работаем с реальными предметами и это может сорвать целый рабочий день. Это очень расстраивает.
Ага и хорошо если испортится делать, а не станок

... Error! Хотя, если напишем отрисовку стилями инструмента, то можно делать просто warning на всю страницу, но при этом Gcode генерить.
не инструмент, а НОМЕР(имя) инструмента. сами инструменты раскиданы по слоям.
инструмент <=> номер инструмента, нужно либо делать авто поиск, либо задавать на форме. ИМХО поиск более гибкий - дает больше возможностей.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 12:28
dormouse
предыдущее сообщение отцензурировал.
OR-вектор принципиально привязан к изображению, поэтому делать его в окне формы нельзя. первым обрабатывать будем верхний по списку слой. внутри слоя - самый "положительный по Z".
Смена инструмента - это вставка пользовательского кода (или changer(value1,value2) - процедура вставки в текст из файла changer.txt как header, footer). в том числе я писал процедуру (есть измеритель длины инструмента), которая ходит по g38.2 несколько раз, усредняет и вносит как коррекцию по оси, либо сдвигает g10l2p1 на эту разницу.
Поиск инструмента из всего дерева - это правильно если закладываться на единственный инструмент. Если инструментов предполагается много - возможно, лучше сразу оставить "почти как есть", только для задания номера инструмента сделать табличку, на которой его имя. а по этому имени ищется по всему xml сам инструмент. Если такого не нашлось, или нет в самом верхнем слое этой таблички - выкатывать warning и автоматом добавлять и сам инструмент (если ещё ни одного не было) и ссылку-табличку с его номером в верхний слой. Так же с OR-вектором поступать (автодобавление при первом вызове).
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 13:16
Nick
Предлагаю сделать возможность использовать как сам инструмент так и ссылку на него, т.е. нужно просто добавить объект ссылка на инструмент.
Нужно проработать процедуру создания ссылки.
Почему нельзя просто копировать инструмент?
Где будем производить поиск инструмента? Просто верхний в том же слое или более высоких слоях или будем смотреть внутри слоя где находится инструмент?
Я так понял, что в слое, в котором находится верхний контур обязательнодолжен быть инструмент.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 09 апр 2010, 13:55
dormouse
>Почему нельзя просто копировать инструмент?
Можно, поскольку от слоя к слою порой надо менять параметр "глубина съёма по Z" у одного и того же инструмента вместе с скоростями. Получается, что идейно надо разбить свойства инструмента на 2 группы: geometry и usage... Если мы определились, что только 2 алгоритма делают g-код (p-t-g и engraving), то:
1. p-t-g берёт только usage
2. engraving требует оба.
Фактически процедура смены инструмента между слоями должна запускаться только при смене geometry части, а usage может оставаться тем же. Самое главное - не запутаться при любом подходе, т.е. чтобы "случайно" не начать работать другим инструментом.
>Я так понял, что в слое, в котором находится верхний контур обязательно должен быть инструмент.
Я полагаю, что в самом верхнем слое обязательно должен быть OR-вектор И инструмент. Если любого из них нет - сразу же выдать ошибку и автоматом их добавить со значениями "по умолчанию". Эта пара нисходящим образом распространится на все низлежащие слои.
>Где будем производить поиск инструмента? Просто верхний в том же слое или более высоких слоях или будем смотреть внутри слоя где находится инструмент?
Внутри одного слоя только 1 инструмент, если два, то выкатывать Error (альтернатива - можно сделать 2 слота: первый для p-t-g, второй для engraving и ошибку выкатывать при двух инструментах с одним и тем же значением в поле "предназначение"). Это предложение актуально ТОЛЬКО если в одном слое будут контура для p-t-g и engraving одновременно.
Если в одном слое не сочетать их (чтобы путаницы не было), то можно сами слои называть с префиксами eng и ptg и брать восходящим методом только среди слоёв, начинающихся с такого же префикса...
день спустя
Можно всех этих сложностей не делать. Остановиться только на видимости/невидимости слоёв и каждый раз вручную эти слои прятать или показывать. Чуть ручной работы, зато всё предельно понятно. Полагаю, что у большинства будет 1..4 слоя и пару кликов мышкой они вполне смогут себе позволить =)
Так же важно заметить, что сортировка по глубине и "ресортинг порядка выполнения" должны делаться раздельно по каждому слою, иначе смысл слоёв пропадёт....
два дня спустя
Проверил на engraving.svg. По третьему объекту в верхнем ряду не строится Area. Не строится даже после Ctrl+J. После экспорта в .ps и импорта обратно - всё "на ура". Мораль: перед тем как начать работать сделай экспорт-импорт и облегчишь себе жизнь многократно.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 12 апр 2010, 16:59
Nick
Возвращаюсь в строй, после двух дней безумства - отмечали дни рождения двух одноклассников и еще одного друга, плюс у одного из одноклассников родился сын

...
Я еще в пятницу начал писать функцию, которая будет собирать всю информацию из рисунка, инструменты, ОР, порядок кривых... Наверное сегодня доделаю и выложу...
Проверил на engraving.svg. По третьему объекту в верхнем ряду не строится Area.
Я тоже проверил, у меня по нему построилось, но не построилось по некоторым другим

. При этом помогло Ctrl+J или Контур-Развернуть.
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 12 апр 2010, 17:48
mr.Iceman
root писал(а):[Что делать с полями во вкладке orientation?
- убрать
- оставить
- оставить только для оси z
Imho, оставить. Не напрягает.
Главное - есть значения по умолчанию.
Я их не трогаю, но знаю, что их можно изменить при необходимости.
Кстати, можно-ли проверять перед генерацией G-кодов, что эти самые точки для ориентации присутствуют на рисунке, и предупреждать юзера в случае их отсутствия?
Я несколько раз в творческом экстазе забывал их выставлять, и соответственно, получал файлы c G-кодами с неверными пропорциями.
Обнаруживалось это, естественно, только в процессе фрезеровки...
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 12 апр 2010, 22:23
Nick
mr.Iceman писал(а):...
Кстати, можно-ли проверять перед генерацией G-кодов, что эти самые точки для ориентации присутствуют на рисунке, и предупреждать юзера в случае их отсутствия?
Я несколько раз в творческом экстазе забывал их выставлять, и соответственно, получал файлы c G-кодами с неверными пропорциями.
Обнаруживалось это, естественно, только в процессе фрезеровки...
Это уже сделали. Сейчас вообще пишем много предупреждений/ошибок если что-то не так (например, если нет точек ориентации или не задан инструмент).
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 13 апр 2010, 09:41
dormouse
Насчёт ошибок мне кажется, что надо лепить Warning ("Defaul scale vector added", "Default tools added") и добавлять их на верхний слой, если в нём нет. В случае, если в третьем слое есть, а в 4-ом нет и 4-ый последний, то поиск "с верхнего слоя и ниже" можно заменить на "ищем сверху вниз, находим.да - распространяем вверх (ничего не копируем, но считаем, будто tool,OR расположен в верхнем слое); находим.нет - лепим warning и добавляем в самый верхний слой"
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 13 апр 2010, 13:04
Nick
Я еще в пятницу начал писать функцию, которая будет собирать всю информацию из рисунка, инструменты, ОР, порядок кривых... Наверное сегодня доделаю и выложу..
Мда....... это оказалось не так просто... Уже почти половину кода перелопатил... Отлаживать дохрена придется

.....
Добавил функцию обработки ошибок(self.error), передаем ей месагу и тип ошибки, а она решает что делать. Есть три варианта:
- Ошибку в лог и продолжаем выполнение (Note)
- Ошибку в лог и на экран и продолжаем выполнение (Warning)
- Ошибку в лог и на экран и прекращаем выполнение (Error)
PS постараюсь к вечеру доделать и нужно будет усиленно тестить...
Re: Разработка Gcode tools - плагин Inkscape для экспорта в
Добавлено: 13 апр 2010, 14:39
Nick
Исходя из возможности мультитула, придется убрать feed и penetration feed из параметров в готовом Gкоде...