Пишем приложение на Mi Band 7 с сервисной частью
Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документацию по Zepp OS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений.
Сразу скажу, что я уже публиковал эту статью на Хабр. Но хочу теперь попробовать начать писать статьи на Пикабу, так что я буду очень рад любым комментариям и отзывам. Надеюсь пользователям Пикабу эта статья тоже зайдет)
Эта статья написана чисто в ознакомительных целях. Я не призываю никого к переработке кода для добавления новых функций с целью использования и распространения переделанного ПО.
Почему приложения официально не поддерживаются?
Мне интересен этот вопрос, но к сожалению я не знаю причин. Похоже что Xiaomi Band 7 сделала для xiaomi компания zepp. И им было проще не поддерживать другую операционную систему, а использовать уже имеющиеся наработки для часов zepp. Поэтому на этих часах стоит система ZeppOS. Вероятно Xiaomi решила не платить за все фишки системы и поэтому функционал часов программно ограничен.
Начало
Для начала, чтобы разобраться как работает система, я попробовал поставить пару приложений от MelianMiko. Ставил самым простым способом, через приложение для установки циферблатов, подробности можете почитать на 4PDA. Я немного поразбирался в структуре приложений и вот что я понял: приложение это bin файл, который является простым zip архивом с, как минимум, несколькими файлами: app.json(Manifest), app.js(Код инициализации и деинициализации приложения при запуске), index.js(Код страницы),icon.png. Далее я пошел на сайт официальной документации по ZeppOS, там описано как включать режим отладки через приложение ZeppApp. Но попробовав подключить часы через это приложения я получил ошибку:
Я решил на этом не останавливаться, скачал это приложение версии 7.0.1, декомпилировал через apktool в байткод и через jadx в java код:
apktool d com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk jadx com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk -d com.huami.watch.hmwatchmanager_7.0.1-play_100802_JADX
Далее для исследование кода проще использовать результат jadx, но скомпилировать обратно получится только результат apktool, поэтому изменения придется делать в байткоде.
Для начала я убедился что это приложение поддерживает ну или когда-то поддерживало MiBand. Для этого я нашел несколько упоминаний MiBand 7 (Официально он называется Xiaomi Smart Band 7). Его кодовое название в приложении “MILI_L66”.
Далее я решил обмануть приложение(пока без его изменения) и попробовал подключить свои часы к приложению, притворившись другими часами. Для этого я отсканировал qr для сетапа на своих часах я получил такую ссылку:
В ней указан мак адресс, pnpNumber, pnpVersion - это похоже какие-то идентификаторы устройства. Я пробовал их заменить, но это не помогло, поэтому я решил посмотреть, какие qr коды у других устройств zepp при сетапе. В гугл я нашел видео в привязкой Amazfit Band 7, отсканировал код, получил такую ссылку:
Эта ссылка ссылается совсем на другое доменное имя. Далее я решил попробовать просто подставить в этот URL macAddress из своего qr кода и сделать с этого url qr код. И это помогло, мои часы подключились, приложение засетапило их как Amazfit Band 7.
Я обнаружил что весь функционал из приложения Xiaomi здесь есть и я могу полноценно настраивать свои часы. Но после сетапа приложения понимало что у меня не Amazfit а Mi Band и не давало возможности ставить никакие приложения и циферблаты для Amazfit. Поэтому дальше я решил переделать приложение.
Перекомпиляция приложения
Чтобы приложение дало мне возможность ставить mini apps на часы, я решил заставить его думать что у меня не Xiaomi Smart Band 7, а Amazfit Band 7. Для этого таже как и для Mi Band 7, нашел кодовое название для Amazfit Band 7 - “MiliBari”:
Далее нашел все упоминания MILI_L66 и MILI_BARI. Самым интересным показался класс HMDeviceSource:
Вы можете в нем увидеть коды соответствующие разным типам устройств - их идентификаторы.
Далее необходимо переключиться на байткод, который нам выдал apktools.
Здесь я тоже нашел байткод класса HMDeviceSource$a.smali и изменил в нем 3 строки как на скриншотах:
Теперь можно собрать его обратно, подписать, установить. Оригинальное приложение придется сначала удалить, так как подпись теперь не оригинальная.
apktool b com.huami.watch.hmwatchmanager_7.0.1-play_100802 --use-aapt2 apksigner sign --ks-key-alias alias_name --ks-pass pass:123456 --ks release-key.keystore com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk adb install com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk
Теперь можно снова логиниться в приложении и подключать Mi Band как я описывал выше, изменяя qr код.
Работа перекомпилированного приложения
После этих манипуляций приложение начало отображать функционал как для amazfit band 7! Ура! На изображении сначала будет Mi Band 7, но если поменять циферблат, то оно сменится на amazfit band 7. У меня циферблат от Аmazfit встал как родной.
Также теперь появилась кнопка App Store, там можно поставить приложения из магазина для amazfit band 7. Не все заработали идеально, но большинство. Их почему-то в магазине пока только 5. Видимо пока весьма маленькое сообщество разработчиков)
Далее я уже пытался поставить свое приложение, с сервисной частью, сначала я пошел по сложному пути, подменяя файлы приложения. Позже понял, что можно воспользоваться мостом в режиме разработчика на приложении, что гораздо проще и позволяет выводить логи. Вероятно разработчики могут прекратить поддерживать отладку через мост, когда эта версия приложения устареет. Но в этой статье я опишу только путь попроще, через мост. Если вам будет интересно, могу потом описать второй путь.
Создание проекта
На 4PDA я нашел проекты пользователя MelianMiko. Он сделал и симулятор mi band, и множество приложений, и утилиту для сборки проектов - zmake. Можете ими воспользоваться для создания простых приложений, но как я понял zmake создает проекты только без сервисной части, выполняемой на телефоне. Еще в отличии от официального сборщика он, не сжимает код в bin файл, а оставляет в формате js(Тут может ошибаюсь, поправьте если не так). Симулятор к сожалению не работает под Linux и MacOS, поэтому я им не пользовался, вместо него использовал официальный симулятор Amazfit band 7.
Для создания проекта я использовал официальную утилиту zeus для ZeppOS. Новый проект можно создать командой zeus create project-name. Необходимо выбрать “1.0 API”, апи второй версии MiBand 7 не поддерживает.
Далее опишу содержимое собранного приложения, это не очень нужная информация, просто для общего ознакомления.
Когда проект будет готов, его можно собрать командой zeus build. В папке dist появится архив в формате zab, его можно открыть как простой zip архив. В нем манифест с описанием приложения и архив common.zpk, который тоже открывается как zip архив. В нем уже можно увидите основные составляющие приложения:
Файл device.zip содержит код выполняемый на часах, ему можно сменить формат на bin и поставить даже через приложение для установки циферблатов.
Файл app-side.zip сожержит код выполняемый на стороне телефона.
Вроде еще может быть файл, описывающий настройку mini app с помощью приложения телефона.
Отличный набор примеров приложений, в том числе с сервисной частью, есть на github. Я, как основу, взял пример “fetch-api”.
Настройка моста
Тут нет ничего особенного, все из документации ZeppOS. Необходимо залогиниться в один аккаунт в приложении на телефоне и в приложении симуляторе. Включить режим разработчика в приложении и потом выбрать часы в списке устройств, открыть внизу настройки разработчика и в выпадающем списка нажать кнопку включения моста. После подключиться к мосту надо и в приложении симуляторе, нажав кнопку Bridge.
Теперь можно пользоваться консольной утилитой zeus для отладки проекта:
zeus bridge
сonnect
install
Запрос в интернет по кнопке на часах.
Как я уже писал выше, я взял за основу пример проекта с официального гитхаб аккаунта zepp os, “fetch-api”. Изменив код в app-side, я сделал запрос с телефона на домен ident.me, чтобы получить мой текущий внешний ip, ради примера.
Вывод
В итоге я получил небольшое приложение на часах, которое может когда угодно выводить мне мой внешний ip. Это конечно не та цель, к которой я стремился. Моей целью было продемонстрировать, то что на самом деле у часов Mi Band 7 есть скрытый, программно ограниченный функционал. Эти часы могут не просто менять циферблаты, но и работать с приложениями. И даже отправлять данные через телефон в интернет и получать ответ. Такие приложения можно использовать например для управления умным домом) Вероятно в будущих версиях часов об этом официально заявят, но пока такого нет. Даже на Band 7 Pro официально не стоит zepp os.
P.S. Это была моя первая статья. Надеюсь вам было интересно, пишите комментарии, буду рад любой критике!
Недавно я создал телеграм канал. Там я планирую регулярно делиться интересными мыслями по темам информационной безопасности, программирования и нейросетей. Если вам интересны такие темы, присоединяйтесь) буду делиться там подобным контентом.
Аддитивные технологии и автозвук
Этой весной у нас было несколько интересных заказов по работе с автозвуком. Немного расскажем про один из них.
Автолюбитель из Мурманска захотел улучшить аудио систему в своем VW Transporter и установить в передние стойки ВЧД и СЧД. С этой идеей он обратился в местную студию автозвука и компанию 3D Печать Мурманск VN, которая попросила нас посодействовать в разработке модели подиума. Что мы с удовольствием и сделали.
Для разработки CAD модели подиума нужен 3D скан стойки. Сканирование стойки выполнили 3D Печать Мурманск VN и прислали его нам.
Получив скан и ТЗ мы приступили к работе. Согласовали необходимые изменения в модели и после кропотливой работы получили CAD модель подиума, готовую к печати.
После производства коллегами из Мурманска подиумы были установлены в стойки автомобиля. Затем стойки перетянули алькантарой.
В итоге заказчик получил качественный автозвук c красивым и качественным исполнением.
Различные полезные ссылки по теме КОМПАС-3D (Текстовые, графические материалы и книги)
Статьи с текстом и картинками, учебные модели и книги. Для тех кому неудобно все время останавливать видеоуроки для повторения. Опять же не утверждаю, что это все материалы, наверняка я многое не нашёл.
Традиционный дисклеймер:
Самое главное, если вы только осваиваете КОМПАС - сперва пройдите встроенную азбуку, она лежит в самой программе в меню Справка - Обучающие материалы. В тексте азбуке есть кнопочки, которые можно нажать, и они подсветят команду на панели. Для новичка - это сильно ускоряет изучение интерфейса программы.
Можно подписаться
Сначала коротко крупные "хранилища", на которые можно подписаться или добавить в закладки (там могут появится новые интересные материалы):
https://habr.com/ru/users/kompas_3d/publications/articles/ - тут много статей на разные темы
https://dzen.ru/surface_modeling - тут достаточно редкие материалы по поверхностному моделированию, чувствуется какой-то системный подход. Довольно уникальный ресурс, учитывая что материалов по поверхностному моделированию на русском языке практически нет не только для КОМПАСа, но и для всех остальных САПР, поэтому на этот блог стоит подписаться, даже если вы не используете КОМПАС.
https://3dtoday.ru/blogs/kompas-3d - тут моделирование для 3D-печати.
https://vmasshtabe.ru/category/dopolnitelno/lessons - тут есть немного текстовых уроков, но в основном примеры в виде чертежей и моделей.
Книги
Современных книг (по новому интерфейсу) всего три:
https://kompas.ru/publications/books/items/?bid=81 - книга заточена на моделирование для 3D-печати. Скорее напоминает практическое пособие. Во многом повторяет блог на 3DToday, хотя есть и дополнительные материалы, скорее всего у блога и книги один автор. Можете сэкономить на книге и читать блог, можете читать книгу вместо блога - как вам удобнее. В печатном виде в продаже уже не найти, либо электронный вариант, либо надеяться на переиздание. Книга в классификации из прошлого поста среднего уровня, т.е. требует наличия у читателя первичных знаний о компасе.
https://kompas.ru/publications/books/items/?bid=83 - самоучитель, подходит для изучения компас с нуля, классическая книга с теорией и практикой.
https://kompas.ru/publications/books/items/?bid=84 - вузовский учебник, также подходит для изучения компас с нуля.
Остальные книги можно найти здесь (информация в них не устарела, просто чуть сложнее будет разобраться с ней в новом интерфейсе):
https://kompas.ru/kompas-3d/publications/books/
Статьи общим списком по темам
Здесь будут статьи как из источников выше, так и из других ресурсов, но разбивка будет по темам, поэтому статьи могут повторяться в разных темах, зато можно сразу изучать все статьи из требуемой подборки, не отвлекаясь на лишнее. Для этой подборки будут наиболее редкие темы: поверхностное моделирование, моделирование для 3D-печати и запуск и работа на линуксе. Уже и так слишком большой пост получается...
Поверхностное моделирование:
Теория и около теории:
Общие сведения о создании поверхностей https://help.kompas.ru/884_glava103_poverkhnosti.html
Что такое поверхность в САПР? https://dzen.ru/a/XoxoGF_epSaBjDvj
Отличие твердотельной модели от поверхностной в САПР https://dzen.ru/a/YozyJEAabh5ecyDL
Где применять поверхностное моделирование в САПР? https://dzen.ru/a/Yo0NXi1IaXK9nZPj
Поверхностное моделирование: Теория. https://3dtoday.ru/blogs/kompas-3d/kompas3d-home-for-dummies-the-basics-of-3d-design-part-101-surface-mod
Скругление поверхностей https://dzen.ru/a/Y0nfUjcZkH6OhYCp
Как поменять цвет поверхности https://dzen.ru/a/Y1AGFzFrXmGawrCq
Сшивка в тело полигональной поверхности https://dzen.ru/a/Y1AK2d0HdRz7Ji4X
Диагностика проблем в построении поверхностей. Поиск узлов. https://dzen.ru/a/Y5ZfwGbzmzpod8Rg
Измерение объёма бутылки или другой ёмкости в САПР https://dzen.ru/a/Y-Ee-6bNGWOM3ulM
Измерение вместимости тары в САПР. Альтернативный способ https://dzen.ru/a/Y-VOH9cUDSzF3hoo
Диагностика проблем в построении поверхностей. Поиск выбросов границы https://dzen.ru/a/Y-y97lqKxVqeZDpw
Почему в САПР лучше применять команду «Оболочка» вместо "Придания толщины". https://dzen.ru/a/Y_QDWLy49GCr9Tuj
Моделируем эргономичную рукоятку с тактильным покрытием https://dzen.ru/a/ZHh5ItCTnDsi305g
Диагностика проблем в построении поверхностей. Диагностика сшивки https://dzen.ru/a/ZIHCAGWovlSxVYIA
Практические уроки:
Создание поверхностной модели корпуса пульта https://dzen.ru/a/YqMH_4bd4FuH4KB_
Поверхностная модель бутылки от сока https://dzen.ru/a/YztwfsZXCUF534af
Создание модели термопистолета (строительного фена) https://dzen.ru/a/Y3ZdkHBWwx7Fa_1u
Ёмкость для жидкостей. https://3dtoday.ru/blogs/kompas-3d/fourteen
Поверхностное моделирование в САПР. Простая бутылка. https://dzen.ru/a/Y9rqvNXY9zACxjW4
Поверхностное моделирование в КОМПАС-3D. Доработка бутылки. https://dzen.ru/a/Y9zHUNe3w0y_ZUd3
Реверс-инжиниринг крыльчатки турбины (импеллера). Создание опорной геометрии. https://dzen.ru/a/Y__arvRwOxXKMCOO
Реверс-инжиниринг крыльчатки турбины (импеллера). Моделирование на опорной геометрии https://dzen.ru/a/ZAs1Ahg4XSLmrNKt
Поверхностное моделирование в САПР. Необычная бутылка моющего средства. https://dzen.ru/a/ZDBD9h8adQ11SYVw
Моделирование бутылочки для детского питания https://dzen.ru/a/ZEMLv_aEAWj_zoOv
Моделируем корпус компьютерной мыши. Способ первый. https://dzen.ru/a/ZEmNwWXIo339fgAg
Моделируем корпус компьютерной мыши. Способ второй. https://dzen.ru/a/ZFVHLfXUcSbhWxPs
Моделируем корпус компьютерной мыши. Способ третий. https://dzen.ru/a/ZFujcKf2vj3h0Iko
Поверхностное моделирование резиновой уточки. https://dzen.ru/a/ZGdr5FeJqT4DNPju
Поверхностное моделирование корпуса бритвы https://dzen.ru/a/ZJ1I8jbeGS4sX__C
Корпус сложной формы. https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v17-home-osnovy-3d-proektirovaniya-chast-2-korpus-slozhnoy-formy
Создание скребка для очистки стекол. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-5-creating-a-scraper
Эргономичный маркер. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-9-the-ergonomic-handle
Создание макета канистры. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-15-the-layout-of-the-ca
Модель переходника https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-sozdanie-modeli-perekhodnika-s-maski-dlya-snorklinga-na-klapan-ivl
Создание крюка:
https://sapr-journal.ru/uroki-kompas-3d/poverxnostnoe-modelirovanie-gruzovogo-kryuka-v-kompas-3d/
Создание корпуса автомобиля:
https://sapr-journal.ru/uroki-kompas-3d/sozdanie-avtomobilya-slozhnyx-form-v-kompas-3d/
Гоночный КАМАЗ https://sapr.ru/article/23739
Поверхность соединения: https://veselowa.ru/urok-22-poverhnosti-v-kompas-3d-poverhnost-soedineniya/
3D-печать и реверс
Часть статей входят в предыдущую подборку, но для упрощения поиска они включены и сюда. Реверса совсем чуть-чуть, включил его в смежную тему.
https://habr.com/ru/companies/ascon/articles/491754/ Мини-курс проектирования под 3D-печать. От основ моделирования к 3D-проектированию сверху вниз
Сшивка в тело полигональной поверхности https://dzen.ru/a/Y1AK2d0HdRz7Ji4X
Крючок для полотенец https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v17-home-osnovy-3d-proektirovaniya-chast-1-kryuchok-dlya-odezhdy
Корпус сложной формы https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v17-home-osnovy-3d-proektirovaniya-chast-2-korpus-slozhnoy-formy
Создание колеса https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-3-housing-of-complex-sh
Создание мыльницы https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-4-creating-soap-dishes
Создание скребка для очистки стекол. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-5-creating-a-scraper
Создание переходника https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-6-creating-adapter
Работа с Stl. Часть 1. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-the-basics-of-3d-design-part-2
Работа с Stl. Часть 2. Распознавание Stl. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-work-with-stl-part-2
Реверс-инжиниринг крыльчатки турбины (импеллера). Создание опорной геометрии. https://dzen.ru/a/Y__arvRwOxXKMCOO
Реверс-инжиниринг крыльчатки турбины (импеллера). Моделирование на опорной геометрии https://dzen.ru/a/ZAs1Ahg4XSLmrNKt
Создание модели на основе картинки. https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-7-creating-models-based
Создание шаблона для измерения радиусов скруглений https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-8-create-a-template-for
Эргономичный маркер https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-9-the-ergonomic-handle
Держатель для бумажных полотенец https://3dtoday.ru/blogs/kompas-3d/_1213
Ёмкость для жидкостей. https://3dtoday.ru/blogs/kompas-3d/fourteen
Карман для пульта https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-12-pocket-for-remote-co
Матрица для отливки https://3dtoday.ru/blogs/kompas-3d/christmas-article
Создание макета канистры https://3dtoday.ru/blogs/kompas-3d/kompas3d-v17-home-the-basics-of-3d-design-part-15-the-layout-of-the-ca
Создание модели переходника https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-sozdanie-modeli-perekhodnika-s-maski-dlya-snorklinga-na-klapan-ivl
Моделирование паровоза уже было в более удобном виде единой статьи на хабре, здесь интереснее комментарии:
Анонс. Создание игрушечного паровоза. https://3dtoday.ru/blogs/kompas-3d/osnovy-3d-proektirovaniya-chast-16-anons-sozdanie-igrushechnogo-parovoza
Создание игрушечного паровоза. Котёл и будка паровоза https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-osnovy-3d-proektirovaniya-chast-161-sozdanie-igrushechnogo-parovoza-kotel-i-budka-parovoza
Создание игрушечного паровоза. Отбойник паровоза https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-osnovy-3d-proektirovaniya-chast-162-sozdanie-igrushechnogo-parovoza-perednyaya-chast-parovoza
Создание игрушечного паровоза. Крыша и тележка паровоза https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-osnovy-3d-proektirovaniya-chast-163-sozdanie-igrushechnogo-parovoza-krysha-i-telezhka-parovoza
Создание игрушечного паровоза. Колёса и дышло паровоза https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-osnovy-3d-proektirovaniya-chast-164-sozdanie-igrushechnogo-parovoza-kolesa-i-dyshlo-parovoza
Создание игрушечного паровоза. Сборка паровоза https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-osnovy-3d-proektirovaniya-chast-165-sozdanie-igrushechnogo-parovoza-sborka-parovoza
Создание игрушечного паровоза. Создание компоновочной геометрии. https://3dtoday.ru/blogs/kompas-3d/kompas-3d-v18-home-chast-166-sozdanie-igrushechnogo-parovoza-sekrety-proektirovaniya-sozdanie-komponovochnoy-geometrii
Linux
Запуск на разных Unix-системах.
https://habr.com/ru/companies/ascon/articles/572196/ КОМПАС на Ubuntu (Wine х86)
https://habr.com/ru/articles/578660/ КОМПАС-3D под FreeBSD в среде Wine
https://habr.com/ru/companies/ascon/articles/588665/ КОМПАС на Astra Linux и Альт
https://habr.com/ru/companies/ascon/articles/589259/ КОМПАС на ROSA и РЕД ОС
https://habr.com/ru/companies/ascon/articles/715710/ КОМПАС-3D x64 и Linux на базовом Wine 8.0
https://habr.com/ru/companies/ascon/articles/715268/ КОМПАС-3D на Linux с помощью WINE@Etersoft (единственный способ, сохраняющий техподдержку)
Сканирование боковой части багажника LADA GRANTA
Всем привет. Вчера отсканили бочок лады для производителей автозвука из Уфы.
Производитель автозвука из Уфы разрабатывает боковые сабвуферы для экономии места в багажнике.
Были проблемные места с войлоком.
До нас ребята сканировали на CR-Scan Lizard. Результат этого сканера их не устроил.
https://www.creality.com/products/creality-cr-scan-lizard-3d-scanner
Это фото первого раскроя.
Ждем рабочий прототип )
МЫ В ВК
Импортозамещаем деталь от Toyota bB. Экскурс в чудесный мир реверс-инжиниринга
Дисклеймер: статья развлекательно-познавательного характера получилась чуть больше, чем планировалось. Внутри много текста, картинок и щепотка тупых шуток. Излишнюю терминологию и узкоспециализированные моменты убрал под спойлер.
Всем привет.
Завязка данной истории поразительно проста: у коллеги на Toyota bB сломалась ручка задней двери, вот такая вот штука:
Судя по всему, распространённая проблема:
Казалось бы, купить на разборе за 5т.р и забыть, но нет. Мы легких путей не ищем. Было принято решение - реверс-инжиниринить и печатать на 3D принтере. Отсутствие опыта в моделировании не останавливает.
Для успешного импортозамещения нужно пройти несколько этапов:
Сканирование. Поскольку она треснула пополам, нужно её склеить с минимальной потерей геометрии. Задействуем сканер Scanform.
Обработка полученного скана до удобоваримого результата: почистить от мусора, сгладить поверхности, дыры зашить, и прочее. В этом нам поможет установленное по параллельному импорту ПО Geomagic Design X. Медведев разрешил.
Реверс-инжиниринг с контролем отклонений: получаем на выходе твердотельную модель. Всё тот же Geomagic.
Отрицание, гнев, торг, депрессия, принятие.
Печать модели. В этом нам поможет Picaso XL aka "проскальзывание пластика". Филамент - угленаполненный полиамид ePA-CF от братьев китайцев из ESUN.
План надёжный, как швейцарские часы. Приступаем.
Часть 1: Сканирование
Упрощая, процесс выглядит так: вокруг объекта и на нём самом расклеиваем метки, считываем их расположение в ПО сканера. На основе собранных меток сканер двумя камерами считывает отклонения проецируемой лазерной сетки и собирает облако точек. Чем больше точек - тем выше итоговая детализация скана. После, по полученному облаку строятся полигоны, и мы получаем так называемый меш, т.е. пустотелую полигональную модель.
Склеиваем деталь.
Поскольку деталь тёмная и бликует, задуваем матирующим спреем, что бы сканеру было проще было её захватить. Сканируем.
На компе можно заметить количество собираемого "шума" вокруг основной модели.
Моток скотча под деталью - это так задумано.
Далее идёт процесс очищения сканов от крупного мусора, поверхности стола и меток. Когда всё почистили - совмещаем сканы разных сторон между собой и строим полигональную модель. В ней больше 1.3 млн полигонов. Многовато!
Есть труднодоступные места, куда сканер физически не может "засветить" - это отверстия, поднутрения и прочие неприятные штуки. С этим ничего не поделать, только страдать.
Часть 2: Обработка скана
Загружаем полученный меш в geomagic.
Тут уже доступен более солидный по сравлению с ПО сканера, набор инструментов. Чистием, сглаживаем, зашиваем дыры, по возможности удаляем ненужные артефакты литья, косяки сканирования, круги от меток и прочий мусор.
Задача на данном этапе - получить красивый меш, по которому нам будет комфортно строить твердотельную модель. В итоге получаем более-менее гладкую, закрытую модель. При желании, уже на данном этапе её можно на 3Д принтер отправить, но нам нужно восстановить сломанное крепление слева. И желательно бы отверстия для крепежей получить. А тут без моделирования не обойтись.
Процесс обработки: мастером лечения healing wizard в автоматическом режиме исправляем имеющиеся ошибки, инструментом Fill holes- закрываем дыры. Убираем выступающие и ненужные части поверхности кнопкой defeature, после чего сглаживаем инструментом smooth. Инструментом decimate режем неприлично высокое количество полигонов. В итоге их стало около 700к, приемлемо.
А далее следует шаг в неизвестность.
Часть 3. Реверс-инжиниринг
Изучаем тонны материалов на ютубе, робко тыкаемся в интерфейсе геомэджика, попутно понимая, в какую жопу мы сами себя загнали. Но делать то надо, поэтому приступаем.
Если описать процесс реверса кратко, то он таков:
Выровнять модель в плоскостях
2Д и 3Д эскизами (ситуативно) отрисовать нужные нам формы и мелкие детали
Выдавить полученные эскизы в твёрдое тело
????
Profit!
В самом процессе нам нужно понимать, каким методом изготавливалась деталь, и чем мы можем принебречь, что бы не заниматься отрисовкой ненужных мелочей. Реверс осложняется тем, что деталь от времени повело, она не симметричная, и на поверхности есть артефакты литья:
Основная форма поверхности была построена, как потом оказалось, неправильным методом. Потому и получилась кривой. Но ценим что имеем:
Метод, которым делать не стоило: извлекаем автоповерхность с внешней и внутренней стороны, выдавливаем заготовку, обрезаем двумя поверхностями эту заготовку, и получаем кривые края заготовки. Ну и дрянь. Сеткой из сплайнов по контуру поверхности было бы лучше. Или обрезка поверхности эскизом общей формы. Кто ж знал.
Строим основание модели, извлекая эскиз из среза низа. Выглядит это примерно так. Красные линии на картинке - референс с оригинала, синие - построенные нами:
Извлекаем и перерисовываем эскизы из крепёжных элементов. Они зеркально отражены в оригинале, поэтому нам в 2 раза легче, достаточно их просто размножить и отзеркалить.
Добавляем скругления, фаски и прочие красивости.
Проверяем отклонения от оригинала. Максимальное отклонение около 1мм. От такой расцветки у профессионалов вытекают глаза и начнется неконтролируемая агрессия. А нам норм:
Преобразуем набор твёрдых тел обратно в полигональную модель для отправки на печать. Результат:
Часть 4. 3Д Печать
Тут каких то особенных хитростей не было, кроме расположения. Чтобы впилить деталь в стол XL, поворачиваем её на 45 градусов. Для минимизации поддержек кладём её на кромку, поворачивая на 15-20 градусов. Получаем вот такое:
Сушим композитный пластик, печатаем:
Снимаем, убираем поддержки и мусор с модели. Жалкий оригинал и неповторимая пародия:
Примеряемся и офигеваем, как точно всё садится на свои места. Удивительно!
Ставим на авто. Почти как влитой. Остается загерметизировать края и помыть машину. Но это на совести автовладельца уже.
Резюме:
Делалось всё, в первую очередь, ради собственного любопытства и получения нового опыта. Деталь требует перерисовки, желательна постобработка, покраска и лакировка. Но даже в таком виде, как временное решение, вполне себе вариант.
Уверен, что профи сделали бы всё быстрее, красивее и лучше. На то они и профи. На реверс у меня ушло примерно 3 дня неспешного моделирования и тонна времени на попытки вникнуть в суть происходящего.
Спасибо за внимание.
Русский перевод
Казалось бы, прошли те времена, когда руссификация игр и программ была делом самих пользователей, ну и конечно веселых ребят из «Фаргуса» или «7 Wolf».
Тем не менее, даже сегодня существует большое количество популярных програм, не имеющих в своей языковой обойме как «великого и могучего...», так и любого другого наречия стран СНГ.
Одной из таких программ является CIMCO Edit, которая является одним из самых известных во всём мире пакетов для создания и редактирования управляющих программ для станков с ЧПУ (Числовым Программным Управлением) на протяжении уже многих лет.
В течение короткого времени, когда программа продавалась на территории России, одна из фирм выполнила перевод для старых версий, однако с выходом новейшей версии 2022 русский язык так и не был официально добавлен.
Для кардинального исправления ситуации был отреверсен алгоритм загрузки языковых файлов (.bin и .xmlz), которые расположены в папке /Msg - это привело к созданию специальной утилиты CTranslate
После публикации утилиты CTranslate в свободном доступе, несколько человек, на абсолютно безвозмездной основе, сделали переводы самых новых версий программы CIMCO Edit (2022 и 8) и выложили их в общественное пользование для всех желающих (на одном из популярных торрент-трекеров). Одним из них является дядюшка Fiks, профессионально занимающейся фрезерными станками с ЧПУ, микроконтроллерами, а также руссификацией. Несмотря на довольно большой объем (более 27000 строк), были также учтены ошибки из предыдущей работы целой фирмы - в результате получился действительно качественный перевод (с учётом специфики механообработки на высокоточном оборудовании) и возможность комфортно пользоваться интерфейсом на родном языке:
Данным постом хотелось выразить благодарность всем тем, кто выполнял и выполняет качественные переводы на родной язык: самых маленьких программкок, ОГРОМНЫХ проектов, а также всем известных игрушек.
Мимезис как подражание природе по Демокриту
Данная статья относится к Категории ✨ Качественные уровни творчества
Демокрит из Абдеры — древнегреческий учёный, основоположник атомистического учения
Демокрит рассматривал подражание (мимезис) как основу всякой деятельности человека.
Сохранился следующий фрагмент его изречений:
«От животных мы путём подражания научились важнейшим делам: [а именно, мы ученики] паука в ткацком и портняжном ремёслах, ласточек в построении жилищ и [ученики] певчих птиц, лебедей и соловья в пении».
История эстетики. Памятники мировой эстетической мысли в 5-ти томах, Том 1, М. «Искусство», 1962-1970 гг. с. 86.
Комментарий И.Л. Викентьева:
Я должен заметить, что позже о подражании говорили и писали многие: Сократ, Платон (Приём подражания по Платону), Аристотель, Николай Кузанский и т.д.
Постепенно в европейской культуре вызрело понимание, что «подражание» / «копирование» будь то объектов природы или творений другого человека – не более, чем начальная ступень творчества… И есть другие – более высокие.
Фрагмент текста цитируется согласно ГК РФ, Статья 1274. Свободное использование произведения в информационных, научных, учебных или культурных целях.
Если публикация Вас заинтересовала – поставьте лайк или напишите об этом комментарий внизу страницы.
Дополнительные материалы
Подражание известным решениям — около 90 материалов по теме
см. термин «Решение» как подражание в 🔖 Словаре проекта VIKENT. RU
+ Плейлист из 11-ти видео: ТВОРЧЕСКИЕ ОШИБКИ / БАРЬЕРЫ / ГЛУПОСТИ
+ Ваши дополнительные возможности:
Идёт приём Ваших новых вопросов по более чем 400-м направлениям творческой деятельности – на онлайн-консультации третье воскресенье каждого месяца в 19:59 (мск). Это принципиально бесплатный формат.
Задать вопросы Вы свободно можете здесь:
Изображения в статье
Демокрит из Абдеры — древнегреческий учёный, основоположник атомистического учения / Public Domain
























































