Image-to-gcode + решение для нежестких станков

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Гармонист
Почётный участник
Почётный участник
Сообщения: 423
Зарегистрирован: 24 апр 2011, 09:14
Репутация: 72
Откуда: планета Земля
Контактная информация:

Image-to-gcode + решение для нежестких станков

Сообщение Гармонист »

Image-to-gcode + решение для нежестких станков

в продолжение этой темы

Кому леньки читать и вникать:тут назначени кратко - представлено на ВИДЕО, в картинках и даже прокоментировано

скачать и попробовать
старые версии (для просмотра содержимого нажмите на ссылку)
image-to-gcode v3.5.zip
(17.54 КБ) 1406 скачиваний
image-to-gcode v3.6.zip
исправил некоторые баги,
убрал режим 2.1. "Окантовка" т.к. он только мешает(его нужно кардинально переделать),
усовершенствовал режим 2.2. "Разница"(теперь дельта может быть <= 0)
(17.29 КБ) 1322 скачивания
image-to-gcode v3.7.zip
исправил некоторые баги, очень сильно переделал, так что сейчас не могу всего припомнить ... одно из:
фреза теперь может подрезать края, но получается более плавный рисунок(см.пост о матрицах фрез ниже)
но главное это то что эта версия прошла рабочую обкатку (опять же -см.пост ниже)
(21.71 КБ) 1199 скачиваний
image-to-gcode v3.8.6.zip
исправил некоторые баги, очень многое переделал - поэтому сменил версию на 8
Переименовал некоторые параметры чтобы было понятнее, вывел расчетные размеры в миллиметрах,...
теперь параметр 'Не обрезать углы' - не доступен и включен поумолчанию, "отвязал" режим 'Optimize path' от режима 'RMF',
объединил функции RMF и Mill_objectiv и весь их функционал в одну: теперь в режимах 'Row/Col objective' - работает сортировка и прочие плюшки...
реализовал возможность через параметр 'mill layer by layer' - настраивать последовательность обхода участков только слой за слоем(если ИСТИНА) или по ветвям деревьев(если ЛОЖЬ)
(24.97 КБ) 2705 скачиваний
image-to-gcode v3.8.7.zip
небольшие усовершенствования...
(25.35 КБ) 1316 скачиваний
image-to-gcode v3.8.8.zip
исправил ошибку с параметром "Инвертировать"(при определенной комбинации других параметров) из-за которой не формировался g-код и вываливалось сообщение об ошибке в сформированном ж-коде...
(25.38 КБ) 1275 скачиваний
image-to-gcode v3.8.9.zip
исправил некоторые ошибки, среди которых ошибка при шаге больше единицы в обычном режиме при особой комбинации других параметров...
доработал интерфейс - в частности сделал чтобы съем за проход не был 0 и не был более общей глубины если включен отступ или режим RMF или...
вобщем - работа над ошибками в версии 3.8.8
(для особо любознательных: распаковываете 2е версии и в терминале командой diff сравниваете 2 файла и читаете что изменилось...)
(25.48 КБ) 3330 скачиваний
как установить написано тут
Лицензия (для просмотра содержимого нажмите на ссылку)
image-to-gcode is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. image-to-gcode is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details. You should have
received a copy of the GNU General Public License along with image-to-gcode;
if not, write to the Free Software Foundation, Inc., 59 Temple Place,
Suite 330, Boston, MA 02111-1307 USA
В теории - любой станок жесткий и безлюфтовый только в какой то степени.
Поэтому эта тема посвящена всем станкам. ;)

Важно: на аналогичном форуме у станкостроителя с аналогичной проблемой недостаточной жесткости станка - было удачно опробовано решение: стачивается напильником боковые лезвия фрезы оставляя их только на конце фрезы около 2-3мм, чтобы при максимальном заглублении фреза НЕ ломалась(боковые лезвия хватают края, зарываются и фреза ломается).


ВНИМАНИЕ: механизм экспериментальный (инновационный :mrgreen: ) и еще допиливается :rasp: - вобщем - тебя предупредили... 8-)
Исправил некоторые ошибки(возможно добавил свои :monkey: ).

Если слишком долго работает - рецепт: в Ubuntu(старой, без Unity) - меню - Система - Администрирование - Системный монитор - Процессы - находим в списке image-to-gcode - жмем ПКМ - Изменить приоритет - ставим -10(пробовал -18 - все виснет). Скорость у меня возрастает примерно в 2 раза.
Принцип действия + теория: (для просмотра содержимого нажмите на ссылку)
В пределе есть 2е стратегии обработки(IRL они комбинируются):
1. Обработка кончиком фрезы
2. Обработка боковой частью фрезы
сравнительный анализ стратегий работы концом и боковой гранью фрезы (52068 просмотров) <a class='original' href='./download/file.php?id=17814&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (168.77 КБ)</a>
сравнительный анализ стратегий работы концом и боковой гранью фрезы
картинку взял отсюда
brochure.pdf
Взято с www.freesteel.co.uk
Буду признателен если кто-то подскажет в каком ПО это реализовано
(4.22 МБ) 1892 скачивания
Обработка боковушкой фрезы при глубоком рельефе - конечно же эффективнее чем кончиком,
т.к. поверхность задействованной площади боковушки, больше поверхности задействованной площади кончика фрезы.

Для нежестких(с небольшей жесткостью) станков - к сожалению обработка боковушкой не получится,
т.к. - опять же - из-за большей площади рабоче поверхности - больше силы трения, фреза больше зарывается в материал(особенно если она спиральная),... и как следствие необходима большая сила удерживающая фрезу в заданных координатах - что для нежестких станков - не возможно.

Но возможна обработка концом фрезы с послойным снятием материала.
Но этот метод менее эффективный т.к. на нижних слоях приходится проходить по тем же частях рельефа, которые уже сняли на предыдущих слоях - работа вхолостую!

Так вот чтобы оптимизировать процесс - убрав холостые проходы - я дописал механизм получения ж-кода,
которые эти места - просто пропускает.

Режим №1 - послойное снятие материала, чистовой фрезой, но с оптимизацией холостого хода предыдущих слоев.

посмотрать описание: (для просмотра содержимого нажмите на ссылку)
Активируется флагом "Optimize roughing".
Примечание: этот режим №1 я разрабатывал как основа для 2го режима - поэтому если вы его реально используете - отпишитесь.
image-to-gcode оптимизированный режим - общий вид (52068 просмотров) <a class='original' href='./download/file.php?id=17818&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (166.31 КБ)</a>
image-to-gcode оптимизированный режим - общий вид
Отверстие в бублике, более редкие линии - не важно, инновация заключается не в этом.
На следующем слайде - послойно и очень наглядно видно а чем заключается оптимизация
image-to-gcode сравнение обычного режима и оптимизированного:<br />слева - обычный, справа - оптимизированный (52068 просмотров) <a class='original' href='./download/file.php?id=17816&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (968.54 КБ)</a>
image-to-gcode сравнение обычного режима и оптимизированного:
слева - обычный, справа - оптимизированный
Обратите внимание, что на 2м и 3м слое фреза не проходит там где уже прошла на предыдущих слоях!

(Почему такие не гладкие линии? Потому что при увеличении/уменьшении рисунка используйте только метод Linear, иначе будет такое с рельефом как на картинке)
Применять этот режим можно для создания сложных глубоких рельефов одной лишь! чистовой фрезой
и при этом не проходить по обработанным местам дважды/трижды/4....
Если фрезы недорогие, а авто-смены инструмента нет и не хочется парится,
то можно сделать в этом режиме УП, "зарядить" станок и идти спать(шучу конечно).


Оптимизированный ж-код с установленным "Roughing is completed".
image-to-gcode оптимизированный режим + флаг  'Roughing is completed' - общий вид (52068 просмотров) <a class='original' href='./download/file.php?id=17819&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (155.63 КБ)</a>
image-to-gcode оптимизированный режим + флаг 'Roughing is completed' - общий вид
image-to-gcode назначение флага 'Roughing is completed' (52068 просмотров) <a class='original' href='./download/file.php?id=17817&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (885.5 КБ)</a>
image-to-gcode назначение флага 'Roughing is completed'

Режим №2 - два в одном: разница между черновой фрезой и чистовой + окантовка.


посмотреть описание: (для просмотра содержимого нажмите на ссылку)
Активируется флагом "Roughing mode minus finishing mode" и параметрами: "min delta rf(units)", "отступ грубого прохода", "съем за проход", "Roughing stepover (pixels)", "Roughing tool Diametr (unts)", "Roughing tool Type", "Roughing tool Diameter 2(units)", "Roughing Angle of tool diametr 2".

Примечание: при большей картинке и большей фрезе - обработка может занять слишком большее время.(Если есть идеи как оптимизировать - я готов выслушать).
Описание:

метод 2.1. "окантовка" этот метод вычисляет места где чистовая фреза при прохождении по краям высота рельефа выше заданной. Другими словами вычисляются границы рельефа, причем крутизна подьема рельефа выше заданной. Т.е. если у тебя плавный рельеф без резких переходов, то этот режим вообще ж-код не создаст.
Для этого режима результаты чернового прохода так же учитываются.
картинку в g-код окантовка.png (52068 просмотров) <a class='original' href='./download/file.php?id=17820&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (194.43 КБ)</a>
картинку в g-код режим 'окантовка'.png (52068 просмотров) <a class='original' href='./download/file.php?id=17824&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (27.19 КБ)</a>
метод 2.2. - собственно "гвоздь программы" - режим "разницы RMF"
- черновая фреза не войдет в узкие и глубокие места из-за своей толщины, а чистовая в этих местах может поломаться(я 4шт сломал) из-за того что много не снятого материала и большое заглубление.
Так вот этот механизм - вычисляет все места где черновая фреза оставила материал более заданной глубины и только по этим местам! делает ж-код.
картинку в g-код 'разница'.png (52068 просмотров) <a class='original' href='./download/file.php?id=17821&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (124.74 КБ)</a>
картинку в g-код режим 'разница'.png (52068 просмотров) <a class='original' href='./download/file.php?id=17823&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (203.82 КБ)</a>
Image-to-gcode режим Roughing mode minus Finishing mode (52068 просмотров) <a class='original' href='./download/file.php?id=17827&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (279.18 КБ)</a>
Image-to-gcode режим Roughing mode minus Finishing mode
Image-to-gcode режим Roughing mode minus Finishing mode (52060 просмотров) <a class='original' href='./download/file.php?id=17842&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (89.5 КБ)</a>
Image-to-gcode режим Roughing mode minus Finishing mode
Примечание: режим №2 - делает сразу двумя методами и 2.1. и 2.2.
Включить только 2.1. или только 2.2. - интерактивно нельзя.
logo cnc-club.ru.png
logo cnc-club.ru.png (2.77 КБ) 52068 просмотров
logo cnc-club.ru окантовка + разница RMF.png (52068 просмотров) <a class='original' href='./download/file.php?id=17822&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (112.16 КБ)</a>
image2gkode logo cnc-club.ru режим разницы RmF.png (52068 просмотров) <a class='original' href='./download/file.php?id=17825&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (152.68 КБ)</a>
Назначение режима №2: Этот ж-код используется как промежуточный проход между черновой и чистовой обработкой - позволяющий сделать отступ между требуемым и текущим рельефом не более заданной величины. По сути "выравнивает отступ" или другими словами - дочищает места где черновая фреза не пролезла, чтоб при финишном режиме в них не сломалась фреза.
Как использовать: (для просмотра содержимого нажмите на ссылку)
1. - обрабатываем заготовку самой большой фрезой, послойно с минимальной глубиной слоя (0.5мм-3мм), с максимальным шагом равным 80%-99% диаметра фрезы. Отступ 1мм-3мм.
Цель: грубо снять максимальное количество материала, для облегчения работы следующего режима.

2. - обрабатываем заготовку средней фрезой
(придется подбирать чтобы она была не слишком большая и не слишком маленька)
(рекомендую: шаровую или прямую-диаметр 5мм, но можно конус со скруглением на конце диаметром 3мм-8мм), послойно с глубиной слоя 3мм-8мм, с шагом равным 30% диаметра фрезы.
Отступ минимальный = 30% от диаметра чистовой фрезы = ~0.5мм.
Цель: снять основную часть материала, оставить минимальный отступ.

3. - обрабатываем заготовку в этом режиме "разницы" между предыдущей фрезой с чистовой "фрезой со шлифовкой":
- выбираем шаблон сканирования: "Cols Object" или "Rows Object"
- ставим флаг "Roughing mode minus finishing mode"
- ставим "min delta rf(units)" - главный параметр - разница в миллиметрах между черновым и чистовым рельефами. Ставим шаг заглубления в миллиметрах(без него - нет смысла) "Съем за проход".
- задаем конфигурацию черновой фрезы(черновая фреза должна быть больше чистовой!)
- задаем параметры предыдущего чернового прохода и следубщего чистового

Цель: сделать равномерный отступ по всему рельефу не более заданного значения.
Я использую двухперую спиральную прямую со скругленным концом диаметром 1.5мм и высотой 12мм, с функцией шлифовки поверхности.

4. - далее - чистовой режим в один проход - без послойного заглубления! - этой же чистовой фрезой с минимальным шагом(0.2мм - 0.8мм).

5. Бывает 4х режимов достаточно. Кому не достаточно - можно 5й - "финишный" режим гравером со скругленным концом. Тогда на 4м этапе - нужно задать отступ.
У меня например после 4го режима - поверхность получается полированой, но рельеф немного смазаный. После гравера - появляется ворс который приходится удалять вручную, но рельеф становится более... "сочным".
А настолько мелкой фрезы с полировкой как гравер - еще не нашел.
Последний раз редактировалось Гармонист 16 янв 2015, 09:42, всего редактировалось 15 раз.
http://cnc-club.ru/forum/viewtopic.php?t=1064 - домашний станок типа "рука"
http://cnc-club.ru/forum/viewtopic.php?t=1107 - быстро создать 3d образ без сканера по фоткам
http://cnc-club.ru/forum/viewtopic.php?t=1073 - прогноз станко-строения
http://livehistory.ru - мозаика складывается
http://www.economics.kiev.ua - почему все так в нашем мире
Аватара пользователя
nebelnoir
Почётный участник
Почётный участник
Сообщения: 65
Зарегистрирован: 24 апр 2014, 20:28
Репутация: 50
Настоящее имя: Ярослав Власов
Откуда: Москва
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение nebelnoir »

selenur писал(а):
nebelnoir писал(а): Ок, спасибо, через пару дней попробую. Предлагаю удалить сообщения не относящиеся к теме))
Да потом можно будет перенести некоторые сообщения если что.....
Немного протестировал контроллер, и я был приятно удивлен, в плане качества сигнала, вот пример с тестовыми настройками, какой получается сигнал:
2018-12-05_170759.jpg
Есть. http://www.cnc-club.ru/forum/viewtopic. ... 76#p477776
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение a321 »

Тем временем, с течением времени, что версия скрипта из шапки темы, что с http://robomechs.com/image-to-gcode/ для начала просто не хочет запускаться (питон повзрослел и на большинстве машинок есть одновременно версии 2.7.х и 3.х - для починки в первой строке надо дописать -
2.7
).

С гномом скрипт, модернизированный, справляется, но уже с картинками из http://robomechs.com/image-to-gcode/, и с моим, нет. Например, картинку -
zagagula.png (8388 просмотров) <a class='original' href='./download/file.php?id=177859&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (607.83 КБ)</a>
скрипт разрывает поплам. Оригинальный же скрипт, идущий в комплекте LinuxCNC, справляется штатно (но также штатно не избегает обработки больших фоновых площадей).

А в это время немного повзрослевший FreeCad умеет нечто подобное - там можно загрузить дополнительный верстак Lithophane, который загружает картинку и делает из нее нечто объемное. Причем может сразу это сделать на круглом основании - см. картинку.
Инструмент (верстак) делался для 3-д принтеров, но и в наших целях годится. Настройка тонкости модели там же. А вот уже управляющую программу делать в верстаке Patch, где можно выбирать для создания программ не модель целиком, а отдельные грани (теоретизирую, поскольку это делается пока только в экспериментальной ветке, которую у себя снес).



Да, не мгновенно и прожорливо до памяти.
Вложения
Снимок экрана от 2020-03-08 23-33-43.png (8389 просмотров) <a class='original' href='./download/file.php?id=177857&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (330.14 КБ)</a>
Снимок экрана от 2020-03-08 23-22-41.png (8389 просмотров) <a class='original' href='./download/file.php?id=177858&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (480.12 КБ)</a>
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение a321 »

Редактировать свое же сообщение не дает, а жаль. Списался с автором Литофана, огорчил он меня - увидеть результат можно, а использовать - нет. В целях и смысле программы для создания управляющей программы. Потому вернулся к вопросу скрипта. Еще раз проверил работу модернизированных скриптов - ломаются, мою картинку превращают в кашу. А стандартный, из состава LinuxCNC, работает без ошибок.
Цели же скрипта, как минимум в части обрезки фона, достигаются достаточно просто (и, как минимум в моем случае, сокращают время исполнения программы раза в 3-4) -

0. при создании кода в скрипте ключевой параметр - направление сканирования = переменный, остальное - адаптивно, под потребности
Снимок экрана от 2020-03-11 23-33-26.png (8348 просмотров) <a class='original' href='./download/file.php?id=178102&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (80.13 КБ)</a>
1. созданный код открываем в LinuxCNC - для проверки на ошибки и визуализации
2. этот же код открываем в текстовом редакторе
3. в LCNC увеличиваем и тыркаем мышью в тректории холостых ходов в сторону краев и находим там строку с командой, направляющие станок к границам. Что-то типа Y0.2827, или Y390.827. Автоазменой в тексте берем это в скобочки - ( Y0.2827), сохраняем и смотрим на результат в LCNC. По существу соотв. прибиваем воманды.
4. смотрим результат. Скорее всего в самом начале, строка 12-14, надо будет поправить команды перехода к началу и в самом конце - последние.

Т.е. вопросы полей решаются парой-тройкой автозамен и правкой вступления и заключения.

Посмотревши на результат может возникнуть желание попробовать и вариант вертикального шаблона сканирования.
В моем случае - две автозамены и одна ручная правка в строке 13 -
Снимок экрана от 2020-03-11 23-41-28.png (8348 просмотров) <a class='original' href='./download/file.php?id=178101&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (51.27 КБ)</a>
Время исполнения снизилось в 3,3 раза.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение a321 »

Для тех, кто разбирался в теме вопрос. По итогам использования цикла программ - Инскейп + гимп + image-to-gcode + linuxCNC на мой взгляд очевиден вывод - Инскейп, как средство формирования градиента цвета, умеренно хорош, на четверочку. Но мировоззрение Инскейпа в части таблицы соответствия Мера черности\глубина явно не соответствует воззрению image-to-gcode. Явно у image-to-gcode зависимость линейная, а Инскейп рисует нелинейную. Отсюда вопрос - я в питоне свои силы еще не пробовал, но уже знаю, что править придется в области 777-804 строки. Скрипт выполняется не быстро и потому по-хорошему надо не каждый раз, для каждой точки поля, вычислять значение высоты (как функция от синуса), а сделать таблицу значений, всего 256 шт.

Я бы попробовал скорректировать функцию, но мне все с нуля (в питоне), а кто-то, возможно, уже там шарит.
Потому как результат чтения одной и той же картинки в том же Литофане FreeCad дает существенно лучший результат в плане рельефа, нежели image-to-gcode.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение a321 »

Я провел испытания (картина и так уже была ясна, но качественно) - в Инкскейпе нарисовал окружность и залил ее радиальным градиентом, скормил эту картинку скрипту и в результате в объеме получил чистой воды конус.
Скрипт создает массив заранее вычисленных значений Чернота\высота, 255 штук. Представляется разумным внедрить в него варианты sin, sin^^2, sin^^3, возможно было бы разумно создавать сразу все 4 варианта итогового файла, чтобы не ждать все разы выполнения.
Вложения
Снимок экрана от 2020-04-10 10-25-13.png (7483 просмотра) <a class='original' href='./download/file.php?id=179812&sid=f558c59d96d1b00499d19f0f7232b775&mode=view' target=_blank>Загрузить оригинал (61.87 КБ)</a>
M_a_x
Новичок
Сообщения: 21
Зарегистрирован: 14 ноя 2019, 21:20
Репутация: 1
Настоящее имя: Максим
Откуда: Московская область
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение M_a_x »

Гармонист писал(а): image-to-gcode v3.8.9.zip
Добрый день!
было бы хорошо знать какие модули и каких версий требуются для работы. Вот сейчас поменял скрипт на версию 3.8.9 и работать перестал - выдаёт при импорте в строке 39
ImportError: No module named numarray

посмотрел в пакеты - там python-numpy стоит, в версии 1:1.12.1-3
Это он виновен? Какой должен быть ?
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение a321 »

a321 писал(а): Скрипт создает массив заранее вычисленных значений Чернота\высота, 255 штук. Представляется разумным внедрить в него варианты sin, sin^^2, sin^^3, возможно было бы разумно создавать сразу все 4 варианта итогового файла, чтобы не ждать все разы выполнения.
Реализовано в viewtopic.php?p=635120#p635120
Anri
Новичок
Сообщения: 34
Зарегистрирован: 22 мар 2017, 11:54
Репутация: 0
Настоящее имя: Андрей
Контактная информация:

Re: Image-to-gcode + решение для нежестких станков

Сообщение Anri »

а зачем ускорение убрали в последней версии?!
Ответить

Вернуться в «LinuxCNC»