PathMaster — разработка ЧПУ системы

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Самая кроссплатформенная фигня в плане графики и гуя - html/js/css. Примеры софта - Fusion 360, Onshape, небольшие примеры - https://webglsamples.org/, https://threejs.org/.

Самая кроссплатформенная фигня в плане скорости вычислений - обычный С и целочисленная логика.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

MX_Master писал(а): Если есть желание, можно скооперироваться
Не смогу. Во всяком случае на данном этапе.
Я еще программировать то правильно не научился. А совместная работа для меня совсем сложно. Да и денег нет, только долги.
sidor094 писал(а): Я немного занимался системой чпу.Если что могу поделиться кое какими алгоритмами движения.
Спасибо!
У меня пока свои идеи на эту тему. Не уверен, правда, получится ли...
Многие системы рассчитывают траекторию на уровне геометрии, достраивают дуги на стыках линейных сегментов, и рассчитывают допустимые скорости и ускорения для каждой точки траектории. Это не сложно для двухмерных траекторий. Решаемо для трехмерных. Но приводит к проблемам на многоосевых станках.
Я же хочу исключить часть условий из системы уравнений, что приведет к множеству вариантов решения. И выбирать оптимальный, балансируя между допустимым отклонением, временем прохождения и количеством предварительно рассчитанных вариантов.

Грубо говоря, пытаюсь сделать более быструю и точную систему ЧПУ. На многоосевую обработку пока на замахиваюсь. Но хочу оставить возможность для реализации в дальнейшем.

Прошу извинить, что отказываюсь от помощи... В процессе работы у меня наверняка появятся вопросы, и я их напишу, если смогу сформулировать )))
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

selenur писал(а): Использовался c#+WPF
Да, на нем и пишу.
MX_Master писал(а): В текущих условиях ориентир строго на импортный Windows может серьёзно аукнуться в самом недалёком будущем.
Мне бы дожить до этого недалекого будущего для начала... Возможные проблемы с Виндоусом сейчас совсем не беспокоят.

Я ведь рассматривал множество разных вариантов. Даже пытался сам дописать необходимый функционал, для кроссплатформенной работы. Но руки опустились. Linux в плане графического интерфейса слишком сильно отстал, и придется половину графической системы самому писать. На такое я не готов.

Либо, сделать как у всех. Тогда непонятно, зачем вообще делать.
MX_Master писал(а): Разделять проект на модули. Желательно, независимые или малозависимые от платформы.
Это правильный подход, но вносит ряд ограничений. Мне это не нравится.
Для примера - посмотри, как быстро мир перешел на аккумуляторные / беспроводные устройства. Хотя, казалось бы, проводные и дешевле и надежнее, и воткнуть провод совсем не проблема. Хотя, с другой стороны, у электроинструмента аккумулятор сделан как отдельный универсальный модуль.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

MX_Master писал(а): Самая кроссплатформенная фигня в плане скорости вычислений - обычный С и целочисленная логика.
В наше время скорость больше зависит от реализации многопоточных вычислений. И от наличия Java.
Я наверное, зря путаю Java и JavaScript. М.б. с JavaScript все хорошо.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Я, кстати, про деньги ничего не имел ввиду, когда говорил про кооперацию. Чисто доброволие. Что касается совместной работы.. многие аспекты большого проекта можно проработать лучше, когда есть чужой глаз и, соответственно, чужой ум с другим багажом опыта. Добавим сюда ещё и скорость работы при распределении задач.

И немного поясню, что я имел ввиду про JS/HTML/CSS.. JavaScript нужен в интерфейсе только как средство управления элементами этого интерфейса. Со всеми его недостатками и достоинствами, он создавался совсем для других задач и, что-то там считать на этом языке не надо. Пытаются сейчас пропихнуть в массы WebAssembly для вычислений. Но на мой взгляд, всё это слишком игрушечное, и в прямом, и в переносном смысле. Сама же связка JavaScript/HTML/CSS ценна именно как универсальный GUI движок. Неважно какая у пользователя система или устройство, весь интерфейс будет работать как было задумано и нарисовано автором. Если элементы управления браузера пользователю не должны быть видны, всё это можно отключить вплоть до показа голого окна с рамками и без рамок (на весь экран). Вычислениями и другими задачами GUI заниматься, стессна, не должен. Для этих вещей у GUI есть простейшее API для связи с внешним миром - websocket'ы. Весь вычислительный (желательно, нативный) и не графический софт должен работать на другом конце веб-сокета, передавая команды и данные в GUI и обратно. На каком языке и какими инструментами будет реализован вычислительный софт, это уже другой вопрос. На мой взгляд, на голом языке С можно прекрасно делать все вычисления. Весь этот абстрактный вычислительный код прекрасно портируется на любые платформы благодаря компиляторам (в том числе и на микроконтроллеры). Единственная неабстрактная вещь, которую придётся накатать для каждой платформы - это модули связи между компонентами.

Какие плюсы мы имеем при таком подходе?
  1. Не надо перетряхивать GUI под каждую платформу. Код GUI остаётся неизменным.
  2. Внешний вид GUI пользователь может менять под себя, без изменений в вычислительном коде.
  3. Не надо сильно перетряхивать вычислительный код, при переходе на другие платформы. По факту все вычисления могут крутится одинаково хорошо и внутри микроконтроллера, и в качестве консольной программы на ПК под любой ОС.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение sidor094 »

michael-yurov писал(а): Это не сложно для двухмерных траекторий. Решаемо для трехмерных. Но приводит к проблемам на многоосевых станках.
Я как раз не озадачивался сложными расчетами.Алгоритмы позволяют легко увеличивать число осей вплоть до бесконечности.При этом сложность системы практически не увеличивается.То есть просто замедляется пропорционально числу осей.Никаких предпросмотров и предрасчетов ускорений.Существует как бы параллельно два алгоритма.Первый рассчитывает движение при бесконечных усорениях.Другой,как бы имитируя привод параллельно рассчитывает по ним уже траектории с ускорениями.Все это происходит внутри прерывания SysTic.Причем есть алгоритм расчета экспоненциального ускорения и линейного.Линейное конечно лучше,но требует не маленького объема памяти(около (20кб на ось)юПри этом сами расчеты достаточно простые.Экспоненциальный же аналогичен приводному,и простой как пять копеек ,и не жрет память.Все расчеты в целых числах.Круговое движение расчитывается из большого числа прямых хорд.Алгоритмы непосредственного расчета дуг конечно достаточно простые,но не позволяют расчитать движение с постоянной скоростью.
SVP
Мастер
Сообщения: 6135
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение SVP »

michael-yurov писал(а): 18 окт 2022, 14:51
MX_Master писал(а): Самая кроссплатформенная фигня в плане скорости вычислений - обычный С и целочисленная логика.
В наше время скорость больше зависит от реализации многопоточных вычислений. И от наличия Java.
Да не обязательно совсем java для скорости нужен.
Многопоточность - это для мажоров. Камни начального уровня по 4 ядра имеют всего.
И не все задачи могут быть исполнены параллельно.
Профилировать надо. Обычно раз в 10 быстрее можно сделать за несколько дней...
Если до тебя никто ни о чём не думал.

Если у вас прям "вычислительные задачи", то надо в сторону графических ускорителей смотреть...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

SVP писал(а): Да не обязательно совсем java для скорости нужен.
Я скорее говорил наоборот, что программы на моем компьютере, использующие Джаву, заметно подтупливают, и это создает неприятное ощущение какой-то липкости, нестабильности работы.
SVP писал(а): Многопоточность - это для мажоров. Камни начального уровня по 4 ядра имеют всего.
И не все задачи могут быть исполнены параллельно.
А и не надо пытаться разделить все задачи на равные части, для сокращения времени их обработки.
Например, при открытии файла - совсем не обязательно ждать завершения его чтения, чтобы можно было начать использовать и просматривать УП, и не нужно ждать полного отображения траектории для использования станка.
SVP
Мастер
Сообщения: 6135
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение SVP »

michael-yurov писал(а): 19 окт 2022, 15:04
SVP писал(а): Да не обязательно совсем java для скорости нужен.
Я скорее говорил наоборот, что программы на моем компьютере, использующие Джаву, заметно подтупливают, и это создает неприятное ощущение какой-то липкости, нестабильности работы.
Уже много лет как нет большой разницы в производительности. Т.е. нюансы влияют гораздо больше.
Чисто идеологически нет причин, по которым java должна работать медленнее С. (исключая момент запуска)
А дальше начинаются тонкости связанные с средой, ее настройкой, компилятором, его настройкой,
всяческими конструкциями и их использованием итд итп.
Есть бездна возможностей "просрать все полимеры" даже если у вас весьма "быстрый" язык.
И ими как правило все пользуются... возможностями просрать :)
michael-yurov писал(а): 19 окт 2022, 15:04
SVP писал(а): Многопоточность - это для мажоров. Камни начального уровня по 4 ядра имеют всего.
И не все задачи могут быть исполнены параллельно.
А и не надо пытаться разделить все задачи на равные части, для сокращения времени их обработки.
Например, при открытии файла - совсем не обязательно ждать завершения его чтения, чтобы можно было начать использовать и просматривать УП, и не нужно ждать полного отображения траектории для использования станка.
Так это не многопоточность у вас, а асинхронность.
И ее лучше бы... не допускать... при любой.... возможности.
Ну т.е. это потребительски иногда(!) отличная вещь.
Но может вести к такого рода НЕОЧЕВИДНЫМ проблемам, что лучше бы обойтись без нее везде, где можно.

Т.е. яб предпочел софт, который мгновенно сжует и 100гб G-кодов используя графический ускоритель, чем тот,
который будет что-то крутить в фоне во время работы на ЦПУ, и потенциально что-то потом "выдаст".
При этом возникает очень много вопросов про этот "потом". Оно найдет ошибки в коде ?
Уже после того как я его запустил и ушел ? Вот спасибо....

Я, если честно, не верю, что требуется прям что-то такое, что упираетесь в производительность.
Надо скорее не асинхронность внедрять, а узкие места находить. В первую очередь.
А уж потом, если все остальное уже исчерпано, то "вот это вот всё с фоновой загрузкой итп".
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Друзья, по-моему, надо перейти от слов к делу. Давайте совместно хотя б пару алгоритмов накатаем.

На мой взгляд, между G кодом и непосредственно планировщиком должен быть ещё один промежуточный модуль. Который из текста (G код) конвертирует данные в универсальный бинарный формат, удобный для дальнейшей работы и вычислений. Можно начать с этого. Интерфейсом пользователя можно заняться позже.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение selenur »

MX_Master писал(а): 20 окт 2022, 09:39 Друзья, по-моему, надо перейти от слов к делу. Давайте совместно хотя б пару алгоритмов накатаем.

На мой взгляд, между G кодом и непосредственно планировщиком должен быть ещё один промежуточный модуль. Который из текста (G код) конвертирует данные в универсальный бинарный формат, удобный для дальнейшей работы и вычислений. Можно начать с этого. Интерфейсом пользователя можно заняться позже.
Может в начале продумать архитектуру в целом, а потом уже что-то писать, а то можно сейчас чего нибудь написать, а потом окажется что в общую концепцию не попадает.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Не знаю как думает Михаил, но я за модульность по канонам Unix. Один модуль (отдельная программа) должен хорошо делать только одну задачу. Общение между модулями - максимально простыми сообщениями (stdin/stdout). Для удалённого общения - доп. модули (USB, Ethernet, SPI, UART, ..) под каждую платформу по необходимости. По факту надо продумать минимальный список модулей.
Аватара пользователя
Prav
Мастер
Сообщения: 827
Зарегистрирован: 14 июл 2015, 05:10
Репутация: 138
Настоящее имя: Петр Раввинский
Откуда: Москва
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение Prav »

selenur писал(а): 20 окт 2022, 11:14
MX_Master писал(а): 20 окт 2022, 09:39 Друзья, по-моему, надо перейти от слов к делу. Давайте совместно хотя б пару алгоритмов накатаем.

На мой взгляд, между G кодом и непосредственно планировщиком должен быть ещё один промежуточный модуль. Который из текста (G код) конвертирует данные в универсальный бинарный формат, удобный для дальнейшей работы и вычислений. Можно начать с этого. Интерфейсом пользователя можно заняться позже.
Может в начале продумать архитектуру в целом, а потом уже что-то писать, а то можно сейчас чего нибудь написать, а потом окажется что в общую концепцию не попадает.
Короче говоря, если вы, товарищи, реалисты, то с нуля до более-менее чего-то работоспособного, что можно продать, необходимо пару лет, не меньше. За это время в российской экономике может всё перевернуться с ног на голову. Стоит ли того оно?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

SVP писал(а): Чисто идеологически нет причин, по которым java должна работать медленнее С. (исключая момент запуска)
Меня раздражает даже долгий запуск.
У многих Джава приложений еще замечаю переодические подвисания в случайных местах.
SVP писал(а): Так это не многопоточность у вас, а асинхронность.
Виноват. Да, хотел сказать про асинхронность.
SVP писал(а): Но может вести к такого рода НЕОЧЕВИДНЫМ проблемам, что лучше бы обойтись без нее везде, где можно.
Да, я понимаю. И представляю, при каком стечении событий могут быть проблемы.
SVP писал(а): Т.е. яб предпочел софт, который мгновенно сжует и 100гб G-кодов используя графический ускоритель, чем тот,
который будет что-то крутить в фоне во время работы на ЦПУ, и потенциально что-то потом "выдаст".
Согласен.
Но реальность такова, что потенциальные пользователи будут использовать максимально дешевые компьютеры с самыми маленькими экранчиками, минимум оперативки и древним HDD, или, еще лучше, диском на SD-карте. А если смогут, постараются запихнуть все это в Raspberry Pi, или старенький планшет. Ведь там есть сенсорный экран и можно работать через домашний Wi-Fi.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

SVP писал(а): При этом возникает очень много вопросов про этот "потом". Оно найдет ошибки в коде ?
Уже после того как я его запустил и ушел ? Вот спасибо....
Найдет сразу как закончит просмотр файла. Сейчас на приличном ПК файл в 450 МБ просматривается за 12 с. Полагаю, в работоспособной версии программы это будет происходить в 2-3 раза дольше. М.б. не стоит разрешать запуск до полного просмотра файла.

А что может стать проблемой?
Выход за рабочее поле. Нераспознанная команда. Отсутствующий инструмент. Наличие команды, которую нельзя выполнить (например, включить СОЖ, а в настройках не задан выход сигнала для СОЖ).
SVP писал(а): Я, если честно, не верю, что требуется прям что-то такое, что упираетесь в производительность.
Надо скорее не асинхронность внедрять, а узкие места находить. В первую очередь.
А уж потом, если все остальное уже исчерпано, то "вот это вот всё с фоновой загрузкой итп".
Очень не люблю я такой подход — сделать, чтобы хоть что-то работало, а потом из этого делать хороший продукт.
Чудес не бывает. Хотя... У меня сосед недавно фундамент заменил после того как дом построил.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

MX_Master писал(а): промежуточный модуль. Который из текста (G код) конвертирует данные в универсальный бинарный формат, удобный для дальнейшей работы и вычислений. Можно начать с этого.
И куда он потом денет, что насчитал? В оперативку?
selenur писал(а): Может в начале продумать архитектуру в целом, а потом уже что-то писать, а то можно сейчас чего нибудь написать, а потом окажется что в общую концепцию не попадает.
Я то примерно представляю то что я собираюсь сделать.
А меня здесь все склоняют, чтобы я сделал как у большинства других ЧПУ систем. И я не понимаю, чем вам существующие то тогда не угодили?
MX_Master писал(а): Интерфейсом пользователя можно заняться позже.
У меня вот как раз с интерфейсом главные пробелы в концепции. Я не представляю, как решить многие задачи. А вся математика мне кажется так или иначе решаемой.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Никто никого и никуда не склоняет. Те, у кого есть соответствующий опыт, подсказывают как не надо делать, чтобы избежать проблем в будущем.

К примеру, взять строгую привязку к Windows. Это ж потенциальная бомба, особенно, для пользователей из России. Неужели это так незаметно в нынешних условиях? Хобячников мы не имеем ввиду, эти могут ставить пиратку системы и наслаждаться жизнью дальше. А вот официальные компании, компы которых всегда проверяют, купить Windows не могут. А в дальнейшем будет запрещено ставить данный софт на российское оборудование.

Модульность хорошо себя зарекомендовала. Найти ошибку в коде отдельного модуля легче, чем прочёсывать код всего проекта. А если всё свалить в один бинарник, малейшая ошибка может привести к отказу всей системы. А так быть не должно. К примеру, фатальные ошибки в коде GUI не должны влиять на работу планировщика, контроллера и прочих модулей. GUI должен быть перезагружен без потерь и остановок в работе.

ЗЫ какие могут быть проблемы с интерфейсом пользователя?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение michael-yurov »

MX_Master писал(а): Хобячников мы не имеем ввиду, эти могут ставить пиратку системы и наслаждаться жизнью дальше.
Ты серьезно думаешь, что я могу сделать универсальную ЧПУ систему, которую и хобячники будут с радостью использовать и на предприятиях будут ставить?
MX_Master писал(а): GUI должен быть перезагружен без потерь и остановок в работе.
Это уже неработоспособная система, если такое может происходить.
MX_Master писал(а): ЗЫ какие могут быть проблемы с интерфейсом пользователя?
Есть разные сценарии использования, и для них нужен разный интерфейс. Например, работа с центроискателем, или с таблицей смены инструмента. Как это удобно реализовать — я не знаю.

Не сомневаюсь, что большинство программистов сделали бы это просто в отдельном окне, но это плохое решение.
Либо, сделать разные интерфейсы, и переключение, как на промышленных системах, но и с этим есть ряд серьезных проблем.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение MX_Master »

Михаил, для хобячников уже полно всяких хобяческих систем. Ещё одну в список добавлять смысл, канеш, есть, но небольшой. Надо делать с прицелом на средний и крупный бизнес, ну и на гос. заказ тоже пристреливаться.

Посмотрите как работает Linux. Даже, если один из компонентов вышел из строя, система продолжает работать. А в пром. оборудовании важна как раз надёжность и стабильность. Если работа системы продолжается и заготовка не отправилась в мусор, то перезагрузка интерфейса во время работы не будет иметь значения для владельца. Ничего страшного нет, кроме эстетического неудовлетворения, при выключении и включении визуализатора заново при его ошибках.

Центроискатели и прочие подмодули GUI - во вкладках.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: PathMaster — разработка ЧПУ системы

Сообщение sidor094 »

Мне кажется ,графический интерфейс пользователя- второстепенное.Главное движение.GBRL не имеет никакого графического интерфейса,но уже широко используется.Готовый графический интерфейс же ,без наличия движения использовать невозможно.Поэтому ,наверное,надо вначале сделать движение,а ,затем уже расширять интерфейс пользователя,и дорабатывать и развивать все остальное.В этом случае,при открытом исходном коде к проекту может подключиться значительное число энтузиастов,и появится возможность расширять прект в различных направлениях и для различных платформ.
Ответить

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