Вектор-Д - Прототип векторного SVG редактора - тестовая альфа-версия 0.2.0
Где-то в районе года назад, как раз в конце февраля 2025 года, я опубликовал предыдущую версию-прототип векторного редактора Вектор-Д 0.1.10 для ОС Аврора.
Это была моя первая проба пера в этом направлении, показавшая ошибочность некоторых идей, а именно - ожидание, что можно создать много qml-компонентов и потом из property этих компонентов построить итоговый svg-файл. Реальность оказалась такова, что при примерно 118 компонентах пользоваться приложением было невозможно - UI подвисал и не справлялся даже на мощных планшетах.
После этого год ушел на некоторые исследования и переписывание кода, работа шла поначалу достаточно тяжело и буксовала, но в итоге на рубеже 2025-2026 удалось добиться некоторого прогресса: для формирования итогового svg-кода в приложении стали использоваться std::unordered_map и много где в С++ части - лямбда-функции для использования многопоточности, а также я стал по возможности использовать стандартную библиотеку совместно с конвертерами в форматы, которые могут передаваться из qml слоя в С++. Это работало (например) для std::string и std::stringstream в несколько раз быстрее, чем сразу работать с QString и QTextStream.
Такой подход сразу же положительно отразился на производительности кода.
Версия, которую я сейчас публикую - это всё тот же тестовый прототип.
Что нового по сравнению с версией 0.1.10:
✔ появились страницы, у них есть свои названия, их можно клонировать, перемещать и удалять (это работа на стороне C++ в std::unordered_map)
✔основные выходные форматы - это всё тот же csv-формат .vectord, но несколько измененный по структуре и содержанию, и .html, открывая который в Аврора-Браузере можно отправить документ впоследствии на печать или преобразовать в pdf (пока это работает так себе по ряду причин)
✔ непосредственно в svg можно сохранять конкретную страницу из раздела SVG
✔ появились новые элементы - полилиния и многоугольник (полигон)
✔ переработана обложка приложения
✔ расширен набор цветов в палитре при выборе цвета (там сейчас две секции - стандартные svg-цвета и безопасные веб-цвета)
Известные баги и ограничения:
✘ элемент "многострочный текст" (ТТ) не отображается в браузере, но отображается после экспорта страницы в SVG и просмотре в Галерее - там придется переписывать этот элемент на tspan из-за ограничений безопасности в браузерах для textArea в SVG
✘ до сих пор сохраняются некоторые проблемы точного преобразования системы координат svg-qml (пока не было времени точно поправить коэффициенты)
✘ не всегда корректно работает добавление файлов в Последние файлы - бывают дублирования
✘ разделы ЧЕРЧ, ДИАГ, ЭЛЕК, ВИДН, HVAC, мкЭЛ не заполнены (там пока пусто - пока идет работа над универсальным групповым элементом)
✘ пока отсутствует проверка полей ввода текста на корректность в связи со сменой разделителя для csv-файла
✘ при генерации выходного html-файла при открытии в Аврора-Браузере не всегда корректно позиционируются элементы, работа над этим моментом будет продолжена при подготовке к выпуску приложения в Рустор, также тут много ещё будет зависеть непосредственно от работы преобразователя html->PDF непосредственно в самом Аврора-Браузере, пока в системе с этим есть некоторые сложности
✘ пока убрал координатную сетку, добавлю возможность ее отображения и настройку шага в следующих релизах
✘ в разделе предпросмотра SVG пока есть баг при зуме изображения - не видно нижнюю часть
✘ убрал пока раздел Трансформации - над поворотами элементов ещё нужно работать
✘ при создании полилиний и многоугольников количество точек ограничено в 102шт. Даже при этом количестве UI уже подтормаживает даже на квадре
✘ сохранение файла на диск происходит только после нажатия на кнопку со стрелкой вниз (Сохранить), никаких автосохранений или сохранений по времени пока нет (но это есть в планах)
✘ в разделе Полилиния и Многоугольник не реализован указатель объект (красная стрелка), планируется выставлять указатель на первую точку
✘ при работе с элементом Линия при движении указателей происходит перерисовка изображения раньше, чем нужно (будет корректировка)
Несмотря на то, что в приложении используется достаточно старый стандарт SVG Tiny 1.2, я считаю, что этого более чем достаточно для нужд создания схем, чертежей, векторных рисунков, то есть практически полностью закрывает лично мои потребности.
Выбор стандарта хранения информации в виде CSV изначально исходил из расчета безопасности - это обычный текстовый файл и его легко можно открыть в любом текстовом редакторе и при необходимости поправить.
Выбор стандарта HTML для вывода многостраничного документа обусловлен тем, что это так же текстовый формат, который открывает Браузер или Аврора Браузер, то есть не нужно устанавливать в систему дополнительный софт и часть работы может быть с разработчика снята по части формирования pdf и последующей отправки документа на печать (это берет на себя браузер).
Очень важной функцией является Клонирование страниц - для нужд схем и планов объектов достаточно создать один раз общий план и на каждой клонированной странице добавлять необходимые объекты - например, на одной странице это план электропитания, на другой - расположение огнетушителей и указание путей эвакуации, а на третьей - схема расположения вентиляционных систем.
Чуть позднее я выложу тестовую схему для тестового здания, которая есть на скриншотах ниже.
Теперь непосредственно пакеты тестовой версии 0.2.0:
Аврора 5, 64bit (aarch64), сборка Аврора IDE 5.1.1.60:
rpm
ru.mastercond.VectorD-0.2-0.aarch64.rpm351.56 Kb
Аврора 5, 32bit (armv7hl), сборка Аврора IDE 5.1.1.60:
rpm
ru.mastercond.VectorD-0.2-0.armv7hl.rpm349.28 Kb
Исходный код (Аврора 5):
zip
исходники-VectorD-0.2.0-Аврора5-альфа.zip9.64 Mb
Аврора 4, 32bit (armv7hl), сборка PSDK 4.0.2.303:
rpm
ru.mastercond.VectorD-0.2-0.armv7hl.rpm320.47 Kb
Исходный код (Аврора 4):
zip
исходники-VectorD-0.2.0-Аврора4-альфа.zip414.08 Kb
Внимание!
В связи со сменой структуры .vectord файла ниже вы можете скачать утилиту-конвертер для приложения QMLпрототип (есть в Рустор) для преобразования .vectord файлов, созданных в версиях до 0.1.10 включительно. Я пока в раздумьях насчет добавления автоматического распознавания старого и нового стандартов в код, потому что полноценного релиза приложения ещё не было. В любом случае - будьте готовы. что позиционирование некоторых элементов после конвертации поплывет и придется править координаты или перемещать объекты.
Утилита-конвертер для QMLпрототип:
qml
Конвертер форматов Вектор-Д из 0-1-10 в 0-2-0.qml3.89 Kb
Ну и традиционная рубрика - скриншоты с Lifetab+ (Аврора 4.0.2.303):