Пилю бесплатный параметрический 3D CAD - QymCAD. 0.1.1 Что произошло за 2 месяца
Привет, Пикабу!
Два месяца назад я выкатил сюда пост о том, что в одиночку пишу бесплатный параметрический 3D САПР на Rust и OpenCASCADE. Пост зашел, в ТГ группу пришло пару человек они дали фидбек. И я продолжил в размеренном темпе пилить QymCAD. А поскольку это не единственный мой проект, то ко второму релизу я решил снять видос и на YouTube. Такого хайпа ( в хорошем смысле я конечно не ожидал). Видео залетело в Тг присоединилось куда больше народу чем я мог представить.
Вместе с людьми пришла огромная лавина фидбека и багов. С момента первой статьи это уже 3-й крупный релиз (сейчас вышла версия v0.1.1, до этого было еще несколько промежуточных дев-билдов). В общей сложности по наводкам пользователей мы вместе отловили и исправили около 280 багов.
Ниже подробно рассказываю о главных изменениях, где акцент был сделан на двух самых проблемных местах - Эскизах и интерфейсе.
1. Верстак Эскизы полностью переписан с нуля
Эскизы - это фундамент параметрического САПР, и в первой версии они были довольно топорными. По сути, я переписал скетчер заново, превратив его из базового наброска в нормальный рабочий инструмент (чего мне самому кстати хватало):
Геометрия как примитивы: Появились полноценные, математически точные сплайны со специальными управляющими ручками (handles), а также эллипсы и дуги эллипсов. Всё это теперь полноценно поддерживает геометрические ограничения и зависимости.
Правильный прямоугольник: Раньше он строился костыльно из четырех отдельных линий. Теперь прямоугольник создается как единый объект (примитив) со своим центром, углом поворота и вспомогательными пунктирными диагоналями. Его удобно таскать за центр, а при изменении размеров он ведет себя абсолютно предсказуемо и не ломает эскиз. Ровно так же как и остальные примитивы (круг, многоугольник, паз)
Инструменты правки: Добавлены функции обрезки (Trim), продления линий (Extend) и смещения/эквидистанты (Offset). Они работают прямо на углах и пересечениях линий с интерактивным предпросмотром.
Свой локальный Undo/Redo: Внутри режима редактирования эскиза появилась своя собственная, пошаговая история отмены и возврата действий. Вот тут ведутся споры кто то жаловался что откатывая изменения находясь где то в соседней детали или сборке, он вдруг видел как пропадало то чего он не ожидал. (Потому что правки могли отменяться в соседнем эскизе). После разбиения истории на Эскизы и Детали. Часть народа начала говорить что пропала сквозная история. Мне самому и так и сяк удобно поэтому надо думать как сделать так чтобы вопросов тут не у кого не возникало.
2. Масштабная переработка UI и гибкая кастомизация панелей
Вторая огромная часть работы - это интерфейс. Вместо жесткого лейаута из первой версии, на который справедливо ругались пользователи, теперь у нас полная свобода настройки рабочего пространства:
Свободное расположение панелей: Теперь панели инструментов можно вручную перетаскивать, менять их размер, группировать (стакать в ряд). Панель инструментов выстроить в одну строку над вьюпортом. Всё, что не влезает, аккуратно прячется под кнопку с тремя точками. Инструменты можно рассортировать или скрыть неиспользуемые.
Менеджер иконок и тем: Добавлен встроенный менеджер иконок. Помимо дефолтной темы появился плоский набор (Flat icon set) с возможностью изменения размера значков. Более того, можно создать свою тему и полностью перекрасить интерфейс в любые кастомные цвета.
«Летающие» поп-апы и единый UX: Инструменты «Эскиз», «Деталь» и «Сборка» приведены к единому стандарту (одна панель, общее контекстное окно, применение на Enter, отмена на Esc). Окна параметров теперь плавно следуют за трехмерной геометрией во вьюпорте при вращении сцены, но их можно в один клик открепить, утащить в любой угол экрана и зафиксировать там.
3. Другие важные изменения в моделировании и архитектуре
Чтобы проект было проще масштабировать и развивать, я разбил кодовую базу на изолированные пакеты (крейты Rust): GUI, эскиз (sketch), деталь (part) и сборка (assembly) и так далее. И тут на самом деле с рефакторингом и уменьшением связанности кода далеко не покончено. Хоть и UI слой вынесен, но все равно пока еще верстаки формируют лайауты внутри себя для отображения. Связанность и дублирование кода остаются большой проблемой. Которую придется решить, до появления еще 3х новых верстаков CAM, Чертежи и документация с видами, верстак для 3д печати.
Итог
Самое крутое для меня - видеть, что люди в нашей Telegram-группе уже начали выкладывать реальные модели, спроектированные с нуля в QymCAD. Когда ты сутками переписываешь код и вычищаешь баги, а потом видишь, как с помощью твоей программы создают осязаемые вещи - это дико мотивирует.
Проект по-прежнему полностью бесплатный, с открытым исходным кодом под лицензией AGPL-3.0.
Огромное спасибо всем, кто шлет пул-реквесты на GitHub, тестирует, пишет содержательные ишью и поддерживает проект копейкой на Бусти/Патреоне/ДонатионАлертс. Вы буквально помогаете делать этот САПР лучше.
Качайте новую версию, пробуйте настраивать интерфейс под себя, тестируйте новый верстак эскизов и делитесь впечатлениями!
GitHub / Скачать: github.com
Моя Telegram группа проекта: t.me
Сайт проекта: cad.qymis.tech
Для тех кому интересно видео на ютубе о последнем релизе: https://www.youtube.com/watch?v=oCHsNGgmlxE


















