Программа для лазерных граверов на grbl

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Программа для лазерных граверов на grbl

Сообщение ASPtr »

Решил поделиться с уважаемой публикой своей небольшой программкой для генерации G-кода. Возможно, будет кому-то полезна.
Писалось это исключительно "под себя" и под свои нужды, соответственно проверена в работе только на выжигателе с grbl-контролером.
Выглядит примерно так:
laser.jpg (60972 просмотра) <a class='original' href='./download/file.php?id=104861&sid=9d0f2ba0fc1b0c946290baf3a02cd539&mode=view' target=_blank>Загрузить оригинал (82.41 КБ)</a>
Интерфейс в стиле "аля микшерский пульт", чем больше крутилок на квадратный сантиметр, тем лучше ))

Предназначена, в основном, для выжигания черно-белых рисунков типа логотипов и фотографий точками. Полутоновый режим тоже есть, но особо не тестировался.
Вот пример визуализации кода для выжигания сплошными линиями (включение на черном), движение "змейкой", белые поля по краям пропускаются:
screen.jpg (60972 просмотра) <a class='original' href='./download/file.php?id=104862&sid=9d0f2ba0fc1b0c946290baf3a02cd539&mode=view' target=_blank>Загрузить оригинал (238.27 КБ)</a>
Есть четыре режима:
1. Выжигание сплошными линиями (включение на черном)
2. Выжигание точками. Чтобы работала задержка в точке с включенным лазером, в grbl нужно отключить "laser mode" - $32=0
3. Выжигание с оттенками с помощью изменения мощности.
4. Выжигание с оттенками с помощью изменения скорости.
В каждом режиме есть дополнительные опции. В двух последних доступны профили, что-то типа эквалайзера.
Настройки сохраняются в файлике setting.ini в каталоге с программой. Если "что-то пошло не так", файлик можно снести и должны загрузится настройки по-умолчанию (по идее).
Основным и скорее всего, единственным )) достоинством данной программы является её размер в 100k, ну и то, что она вроде работает.
Недостатков же значительно больше:
1) Отсутствует графический редактор, от слова "совсем". Так исторически сложилось, что исходник всегда готовил в стороннем редакторе. Так и проще, и возможностей гораздо больше.
Впрочем в первых двух режимах есть примитивная постеризация, типа всё что темнее 128, то черное, что сетлее, то белое.
2) Работает только с растровыми рисунками формата "bmp" 24bit.
3) Написано это все на древнючем VB6 (гусары молчать), и поэтому в зависимости от древности вашей ОС и списка установленных программ может ругаться на отсутствие компонента MSCOMCTL.OCX или COMDLG32.OCX или обоих сразу. Почитать про них можно здесь:
http://set-os.ru/mscomctl-ocx-windows/
http://microsin.net/adminstuff/windows/ ... valid.html
Файлики и батник для регистрации в системе приложу в конце. (запускать от имени администратора, для 32 и 64 разрядных систем - разные)
4) Развивать программку не планирую. Исправить критичные баги постараюсь (если кого заинтересует).
Исходники выложить можно, но неудобно - автор "не настоящий сварщик" и последний раз программировал примерно тогда, когда VB6 и вышел ))

Изобразил тут картинку с пояснениями. Хотя, надеюсь, и так должно быть всё понятно.
help.jpg (60972 просмотра) <a class='original' href='./download/file.php?id=104864&sid=9d0f2ba0fc1b0c946290baf3a02cd539&mode=view' target=_blank>Загрузить оригинал (165.86 КБ)</a>
Сама программа:
LaserDot.rar
(25.4 КБ) 7535 скачиваний
Компоненты:
components.rar
(453.59 КБ) 5565 скачиваний
Актуальная версия в посте #19
Последний раз редактировалось ASPtr 06 ноя 2017, 03:43, всего редактировалось 2 раза.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение selenur »

Вчера дописал функцию в своей программе, которая позволяет любой рисунок имеющий 1,4,8,32 бит на пиксель преобразовывать в рисунок с 24 битами, если нужно могу поделиться, правда написано на C#.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение selenur »

ASPtr писал(а):Впрочем в первых двух режимах есть примитивная постеризация, типа всё что темнее 128, то черное, что сетлее, то белое.
Тут тебе стоит применить поле с выбором что относить к черному, а что к белому, вот как тут:
смотреть по времени с 1:04...
https://www.youtube.com/watch?v=lx1xR12CNKA

:-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

selenur писал(а):позволяет любой рисунок имеющий 1,4,8,32 бит на пиксель преобразовывать в рисунок с 24 битами
selenur писал(а):стоит применить поле с выбором что относить к черному, а что к белому
Это понятно )) И спасибо большое за предложение, но я всё-таки останусь при мнении, что это проще и лучше делать в графическом редакторе. Это просто утилитка типа "нажми на кнопку - получишь результат". До Вашего мега-комбайна дотянутся не когда не выйдет, да и не планировалось никогда.
Аватара пользователя
mrKrivedko
Кандидат
Сообщения: 55
Зарегистрирован: 02 апр 2017, 13:00
Репутация: 11
Настоящее имя: Дима Сибиряк
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение mrKrivedko »

надо будет попробовать программу ) напишу как ощущения
dagarho
Новичок
Сообщения: 3
Зарегистрирован: 10 май 2017, 15:10
Репутация: 0
Настоящее имя: Искандер
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение dagarho »

У меня почему - то при открытии большинства изображений происходит ошибка Run-time error 9: Subscript out of range
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

dagarho писал(а):У меня почему - то при открытии большинства изображений происходит ошибка Run-time error 9: Subscript out of range
Рисунок точно BMP 24 бит?
Приложите файлик на котором возникает ошибка. Попробую воспроизвести.
dagarho
Новичок
Сообщения: 3
Зарегистрирован: 10 май 2017, 15:10
Репутация: 0
Настоящее имя: Искандер
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение dagarho »

ASPtr писал(а):Рисунок точно BMP 24 бит?
Точно, пробовал несколько с разным размером и DPI. Очень жаль, программа удобная.
Вложения
rock-solid.zip
(919.66 КБ) 1244 скачивания
Аватара пользователя
Rom327
Почётный участник
Почётный участник
Сообщения: 2948
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 432
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение Rom327 »

dagarho писал(а):
ASPtr писал(а):Рисунок точно BMP 24 бит?
Точно, пробовал несколько с разным размером и DPI. Очень жаль, программа удобная.
А где такие картинки можно взять? :)
Это сугубо мое мнение, могу и ошибаться...
https://vk.com/rom327
GRBL настройки: http://blogandbux.blogspot.com/2018/07/ ... revod.html
G коды: http://3d-stanki.ru/spravochnik/program ... stankov-2/
dagarho
Новичок
Сообщения: 3
Зарегистрирован: 10 май 2017, 15:10
Репутация: 0
Настоящее имя: Искандер
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение dagarho »

Rom327 писал(а):А где такие картинки можно взять?
https://maryrossbuchholz.com/collections/46026
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

Проблема имеет место быть! ((
Насколько я понял проблемные файлы имеют не совсем корректный заголовок (а может и корректный, но другого стандарта, тьма их). Что можно сделать...
1. Можно пересохранить файл через фотошоп (я на него ориентировался, у меня CS3). Файл --> Сохранить как --> BMP и как на картинке
shop.jpg (60412 просмотров) <a class='original' href='./download/file.php?id=112210&sid=9d0f2ba0fc1b0c946290baf3a02cd539&mode=view' target=_blank>Загрузить оригинал (27.61 КБ)</a>
После этого Ваш файлик открылся. Способ, в принципе, универсальный.

2. Или вот, на скорую руку сваял "костыль" к программе. Вроде работает. Но по-хорошему надо бы проверить остальной функционал (немного запутался в исходниках).
horse.jpg (60412 просмотров) <a class='original' href='./download/file.php?id=112211&sid=9d0f2ba0fc1b0c946290baf3a02cd539&mode=view' target=_blank>Загрузить оригинал (119.56 КБ)</a>
dagarho писал(а):Очень жаль, программа удобная.
Спасибо, приятно слышать. ))
Собственно, сама программа:
LaserDot.rar
(25.65 КБ) 1872 скачивания
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

Смотрю, народ качает потихоньку...
Правда молчком, то ли всё нравится, то ли удаляют сразу. ))
В общем, немного допилил "юзабилити", по результатам эксплуатации, и добавил одну настройку.
- запоминаются пути открытия и сохранения файлов (по отдельности)
- возможность "быстрого сохранения" (при отмеченном крыжике "сохранять в файл по умолчанию"). т.е. при нажатии кнопки, без лишних, тупых вопросов сохраняет в определённый файл. По умолчанию test.nc на рабочем столе текущего пользователя. При необходимости - правится "ручками" в ini файле.
Полезно при настройке выжигателя, тестировании различных режимов.
- в режим "включение на черном" добавлена настройка "Возврат по G0".
Поясню... Для себя оптимальным режимом выбрал "включение на черном" - по сравнению с выжиганием точками потеря качества практически не заметна, а время экономится. Движение на рабочей подаче (G1), чтоб станок не дергался от точки к точке, жалко мне его )). Выжигание в одну сторону (не змейкой). Со змейкой всё равно появляется небольшая "лесенка" на вертикальных границах (люфты станка, растяжимость ремня...) небольшая, порядка одной, двух десяток, но тем не менее... (я немного перфекционист, да). Так вот, раньше возврат на начало строки был также по G1, теперь есть возможность делать это намного быстрее. Если есть желание могу выложить видео.

Собственно вот:
LaserDot.rar
(26.51 КБ) 1254 скачивания
sg495
Новичок
Сообщения: 21
Зарегистрирован: 06 окт 2017, 19:52
Репутация: -1
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение sg495 »

Здравствуйте. А как с Вами связаться, обсудить программу?
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

sg495 писал(а):Здравствуйте. А как с Вами связаться, обсудить программу?
А что Вам мешает сделать это здесь?
Спрашивайте.
sg495
Новичок
Сообщения: 21
Зарегистрирован: 06 окт 2017, 19:52
Репутация: -1
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение sg495 »

ОК.
Тогда если позволите пока ряд вопросов по первому варианту формирования кода: "включение на черном"

1. Можно ли сделать отображение размера загружаемой картинки (слева внизу) в мм, а не в пикселях?
2. Почему размер гравируемого изображения после формирования G-кода отличается от исходного в растровой картинке?
3. Какое разрешение растровой картинки должно быть для правильной работы Вашей программы?
4. На что влияет и как правильно выбрать "размер точки" в блоке общих настроек в случае выбора формирования кода пунктом "включение на черном"?
5. Можно ли изменять количество линий, расстояний между ними (разрешение гравировки что ли?), которыми гравируется изображение?
6. В сформированном коде (в режиме M3/M5) после строк начального блока идет указание скорости рабочего перемещения и потом три строки (см. ниже) перед основным кодом прожигания.
G90 G0 Z0
M05
G0 X0 Y0
G1 F3000
M3 S0 ---строка 1
S1000 ---строка 2
M5 ---строка 3
G0 X2.65 Y0.05
M3
...
...
Как я понимаю, таким образом задается мощность лазера для всех последующих вызовов М3 ? Но почему начинается с M3 S0 ?
И самое главное, в момент определения S1000 (строка 2) происходит прожиг точки в нулевой позиции!
Не правильнее бы было сформировывать в каждой точке включения команду M3 S1000 ?
7. Можно ли добавить возможность обработки других форматов картинок (JPG, TIF, PNG....)?
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

1. Можно. На днях сделаю.

2-5. Возможно Вы не до конца поняли логику программы. "Размер точки" одна из ключевых настроек. Именно она определяет размер "пикселя" выжигаемого на дереве, и расстояние между строками, и соответственно, размер получившегося рисунка (размер точки x (ширину/высоту) в пикселях). Допустим размер рисунка 200x300 пикселей, размер точки 0.2мм - на дереве получим картинку 40x60 мм (5 линий на мм). Разрешение исходной картинки вообще не имеет никакого значения. Я его даже не парсю.

6. Честно говоря, не помню почему выводится именно такая связка M3 S0 ... S1000, может лень было писать лишнюю проверку ))
sg495 писал(а):Как я понимаю, таким образом задается мощность лазера для всех последующих вызовов М3 ?
Именно так. Команда "S" модальна (запоминается последнее значение). Поэтому нет смысла писать каждый раз M3 S1000. Размер файла опять же сокращается.
sg495 писал(а):И самое главное, в момент определения S1000 (строка 2) происходит прожиг точки в нулевой позиции!
По идее, не должно. Там же M5 идет без задержки. У меня на grbl лазер не включается.
Если это действительно так - постараюсь исправить.

7. А вот этого, скорее всего, не будет. Почему - объяснил в первом посте.
sg495
Новичок
Сообщения: 21
Зарегистрирован: 06 окт 2017, 19:52
Репутация: -1
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение sg495 »

Действительно, что-то никак не могу с логикой программы разобраться...
Если Вас не затруднит, более подробно пожалуйста проясните "формулу" расчета
Например, надо мне сделать, скажем, полностью залитый объект размером 10х10мм.
И надо сделать в двух вариантах:
- с "разрешением" (или как правильно назвать этот параметр применительно к гравировке?) 5 линий на миллиметр (т.е. 50 линий на объект)
- с "разрешением" 10 линий на мм (т.е. 100 линий на объект)
Причем за "линию", как я понимаю, мы принимаем некую константу по ширине, выжигаемую лазером при минимальном размере точки фокуса (кстати, а если чуть расфокус, но мощности достаточно для прожига, тогда как?....)

Какой в этих случаях должен быть "размер точки", устанавливаемый в Вашей программе, и какого размера исходная картинка?
Что-то запутался я.....
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

sg495 писал(а):Действительно, что-то никак не могу с логикой программы разобраться...
Ну вот смотрите... Настройка аналогичная "размеру точки" (или пикселя) есть во всех подобных программах, просто где-то она задается как число линий на мм. Это вещи взаимно обратные и отвечают, по сути, за одну сущность - за то с какой плотностью станок будет выжигать растровый рисунок (аналог dpi в принтерах).
1/"размер точки"="количество линий на мм"
1/"количество линий на мм"="размер точки"
Как сопротивление и проводимость в электротехнике.
sg495 писал(а):Например, надо мне сделать, скажем, полностью залитый объект размером 10х10мм.
И надо сделать в двух вариантах:
- с "разрешением" (или как правильно назвать этот параметр применительно к гравировке?) 5 линий на миллиметр (т.е. 50 линий на объект)
"размер точки"=1/(5 линий на миллиметр)=0.2мм В Ваши 10мм влезет 10/0.2=50 точек. Аналогично по вертикали. Итого, Вам нужно подготовить исходное изображение размером 50х50 пикселей. В программе, естественно, указываете размер точки "0.2"
sg495 писал(а):- с "разрешением" 10 линий на мм (т.е. 100 линий на объект)
"размер точки"=1/10=0.1мм 10/0.1=100 точек. Исходное изображение размером 100х100 пикселей . размер точки "0.1"
ASPtr
Кандидат
Сообщения: 47
Зарегистрирован: 19 янв 2017, 08:31
Репутация: 49
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение ASPtr »

Версия показывающая также размер в миллиметрах, при данном размере точки.
LaserDot.rar
(27.18 КБ) 1867 скачиваний
sg495
Новичок
Сообщения: 21
Зарегистрирован: 06 окт 2017, 19:52
Репутация: -1
Контактная информация:

Re: Программа для лазерных граверов на grbl

Сообщение sg495 »

Ага, значит здесь надо как бы "от обратного" исходить: вначале нужно определиться с количеством линий (точек), которыми я хочу гравировать, а уже потом под это количество подгонять размер (и именно в пикселях) исходной картинки?
Просто это некая (для меня, конечно!) новая "логика", если сравнивать с, например, с печатью, скажем, градиентных полос каким-нибудь сольвентным принтером Обычно ведь делается как:
в редакторе рисуется картинка в нужном размере -> делается заливка картой градента -> выводится на печать -> оценивается результат -> корректируется параметры градиента
А здесь алгоритм, видимо, иной:
принимается некое стартовое количество линий -> делается расчет нужного размера картинки -> рисуется картинка в нужных пиксельных размерах -> гравируется -> оценивается результат -> и всё с начала....
А как оценить, какое количество линий (точек) будет правильно выбрать в каждом конкретном случае? Или только методом проб и ошибок? Опять же по аналогии с печатью: например понятно, что 600 dpi даст "фотографический" результат (если печатаем обложку книги), а 25dpi - страшную пикселизацию (но вполне допустимую для 6-и метрового баннера на крыше). Или здесь как-то по другому?
Ответить

Вернуться в «Windows / Mach»