← Музей потерянных идей

Инженерный инструмент на egui и электротехнический слой в CAD

Практики egui для плотных инженерных интерфейсов, три варианта дизайна аналога Modbus Poll и что делает EPLAN незаменимым — плюс чего в CAD делать не надо · концепт, собрано 2026-10-14

Две связанные темы, обе про то, как превратить уже написанное ядро в продукт: (1) как правильно строить плотный инженерный интерфейс на egui — на примере аналога Modbus Poll, (2) чего не хватает CAD-редактору, чтобы им пользовался электрик, а не только чертёжник. Здесь — практики с источниками, варианты дизайна и честный список того, что делать не надо.


1. egui: правила, которые определяют, будет ли инструмент тормозить

egui — immediate mode: интерфейс строится заново каждый кадр. Из этого следует всё остальное: нельзя строить виджеты, которых не видно, и нельзя делать тяжёлой работы внутри кадра (структура приложения, производительность).

ПрактикаИнженерный смысл
Состояние отдельно от отрисовки (struct App + UI-независимое ядро)ядро тестируется без окна; интерфейс можно менять свободно
Таблицы виртуализируются: egui_extras::TableBuilder + body.rows(h, n, …) (док)окно на 10 000 регистров стоит столько же, сколько на 30
Никаких format! и поисков по хэш-таблицам в горячем циклеформатирование значения — самое частое действие в Modbus-инструменте
Стабильные Id у строк (ui.push_id(addr, …))иначе выделение мыши «переезжает» на чужую строку после прокрутки
Панели, а не одно полотно: egui_dock (вкладки-доки, отрыв в отдельное окно), egui_tilesзамена MDI-окон, но без оконной системы MFC
Графики отдельным крейтом (egui_plot), а не своим циклом рисованиякурсор, комбинированные кривые, экспорт — из коробки
UI-тесты: egui_kittest — Harness::new_ui, клики по AccessKit-узлам, снапшоты (док)UI ломается чаще логики; тестировать надо его, а не только ядро
Тёмная/светлая тема, сохранение геометрии окнамелочи, по которым судят о «взрослости» инструмента

Порядок работ важнее красоты. Сначала кэш строк и виртуализация, потом визуал: обратный порядок даёт красивый интерфейс, который умирает на 500 регистрах.

2. Три варианта дизайна инженерного инструмента

Modbus Poll — не «таблица», а MDI: каждое окно = одно определение опроса (slave ID, функция, диапазон, формат), окон может быть много одновременно, в ячейках можно писать произвольный текст (Alias), F1 даёт справку по любому диалогу (quick start). Именно поэтому её не бросают: пусконаладчик держит рядом два диапазона, трафик и посылку кадра.

ВариантКак выглядитЧем плох
A. Вкладкиодна сетка + переключатели Grid/Scada/Chart/Trafficнельзя посмотреть два диапазона или два slave рядом — главный сценарий пусконаладки
B. Докиegui_dock: панель на каждое определение опроса; любую можно оторвать в отдельное окнонужен крейт и аккуратная модель состояния панелей
C. Дашборд-первымна старте плитки SCADA, таблицы по кнопкепусконаладка идёт по числам; как единственный режим не годится

Рекомендация: B, а C — как равноправный режим, а не замена. Стартовая раскладка — доки с одной панелью таблиц; «Дашборд» открывается на весь экран; Traffic и Test Center — док-панели рядом с сеткой.

3. Электротехнический слой в CAD: что делает EPLAN незаменимым

Чертёжное ядро (геометрия, слои, привязки) — решённая задача, конкурировать там нечем. Незаменимость EPLAN Electric P8 — в данных поверх чертежа: обозначение устройства, кросс-ссылки, нумерация проводов, клеммники, каталог изделий. Список функций, которые и создают эту незаменимость:

  1. Проект = набор страниц с нумерацией, а не один файл. Геометрия — следствие, модель данных — ссылки.
  2. Device tag (-K1, -M1, -X1:3) с правилом автоматической нумерации и привязкой к символу.
  3. Кросс-ссылки катушка ↔ контакты, пересчитываемые при любом переносе, с переходом в один клик.
  4. Автонумерация проводов и адресация цепей с пересчётом при вставке элемента.
  5. Клеммники и кабели: таблица клемм и кабельный журнал генерируются из схемы, а не ведутся отдельно.
  6. Каталог изделий и спецификация (BOM): символ → артикул/производитель, выгрузка в CSV/XLSX.
  7. Экспорт по страницам: PDF/DXF, маркировка клемм под печать.
  8. Проверки проекта (ERC): неподключённые контакты, дубли обозначений, отсутствующие артикулы,

превышение лимита контактов — отчёт, который блокирует выпуск.

Чего делать не надо: управление проектами предприятия (PLM), встраивание в чужие форматы и любую совместимость с проприетарными форматами EPLAN — только clean-room модель данных и открытые обменные форматы. Enterprise-функции — это не продукт для инженера, а отдельный рынок с отдельными продавцами.

4. Что уже проверено на практике

«100 000 строк ⇒ строим меньше 30»; шапка таблицы вынесена из области прокрутки.

отсутствующий файл демо-проекта). Демо теперь воспроизводимо генератором, тесты проходят целиком — то есть «зелёные тесты» в README перестали быть обещанием.

частью сборки: валидный JSON и пустая страница — это один и тот же класс отказа, который не ловится ни компилятором, ни линтером.

Исходный Markdown Репозиторий