Подмена объектов
Общая информация
Section titled “Общая информация”Подмена объектов — инструмент пакетной замены графических символов AlphaHMI на выбранных мнемосхемах проекта HMI. Замены задаются шаблонами на специальных мнемосхемах подмен: в шаблоне указано, какие символы (или группы символов) искать и на что их менять.
Функционал должен быть встроен в HMI Менеджер и использовать:
- мнемосхемы подмен — источник шаблонов замены;
- выбранные рабочие мнемосхемы — область поиска и применения подмен;
- таблицу (string grid) — просмотр и выбор предлагаемых замен;
- панель лога — сообщения об объектах, для которых подходящий шаблон не найден или замена не выполнена.
Поддерживается замена как одиночных символов, так и комбинаций (групп символов) в соответствии с правилами из раздела Правила подмены по шаблонам ниже.
Алгоритм работы
Section titled “Алгоритм работы”- Выбор мнемосхем для поиска — пользователь указывает мнемосхемы, на которых нужно искать объекты для подмены.
- Чтение шаблонов замен — модуль считывает все шаблоны с мнемосхем подмен и формирует список символов (или групп символов), которые подлежат поиску.
- Поиск вхождений — на выбранных мнемосхемах находятся все вхождения перечисленных символов (групп).
- Подбор шаблона — для каждого найденного вхождения выполняется попытка подобрать подходящий шаблон замены (с учётом правил подмены: свойства, координаты, вращение и отражение).
- Список предлагаемых замен — сопоставленные пары «найденный объект → шаблон подмены» выводятся в string grid для просмотра и отбора.
- Применение замен — пользователь выполняет подмену выборочно (по отмеченным строкам) или сразу для всех предложенных замен.
- Запись в лог — в лог выводятся все объекты, у которых тип символа совпадает с типом, представленным на мнемосхемах шаблонов подмен, но для которых замена не выполнена (шаблон не подобран, отклонено по свойствам, вращению/отражению и т. п.).
Правила подмены по шаблонам
Section titled “Правила подмены по шаблонам”Цель и мнемосхема подмен
Section titled “Цель и мнемосхема подмен”Замена графических объектов AlphaHMI.
Для определения подмен предлагается использовать мнемосхему подмен — одну или несколько мнемосхем, на которых в графическом виде представлены варианты выполняемых подмен.
Структура на мнемосхеме подмен
Section titled “Структура на мнемосхеме подмен”На мнемосхеме подмен реализуются следующие структуры:
| Элемент | Назначение |
|---|---|
| ReplaceRectangle (общий прямоугольник) | Объединяет пару «подменяемые объекты» и «подменяющие» (шаблон подмены) |
| From (прямоугольник) | Содержит объекты, которые нужно заменить (подменяемые объекты) |
| To (прямоугольник) | Содержит объекты, которые нужно подставить (подменяющие объекты) |

Рис. 1 — Пример шаблона на HMI

Рис. 2 — Пример шаблонов в структуре формы
Общее правило замены
Section titled “Общее правило замены”Если в наборе всех шаблонов подмен некоторый набор типов для замены (один или несколько типовых элементов) встречается однократно, то для каждого свойства исходного и результирующего объекта:
- если значения одинаковы, используется значение свойства из конкретного экземпляра (например, для сохранения надписи экземпляра при подмене
ScreenNavigation); - если значения различны:
- для координат (свойства X и Y) и поворота (Rotation) вычисляется разница, которая затем прибавляется к значениям свойств конкретного экземпляра;
- для прочих свойств поиск экземпляров для замены выполняется с учётом значения данного свойства.
Если же в наборе всех шаблонов подмен некоторый набор типов для замены встречается несколько раз, следует:
- вычленить отличающиеся свойства у типов для замены (кроме координат — свойств X и Y);
- выполнять поиск экземпляров для замены с учётом значений выявленных свойств;
- логировать экземпляры типа, которые не были заменены из‑за поиска с учётом свойств.
Учёт расположения объектов
Section titled “Учёт расположения объектов”Подменяемые объекты могут располагаться по‑разному относительно нулевой точки; это необходимо учитывать при размещении результата. Для механизма подмены требуется вычислять разницу в координатах между подменяющим и подменяемым объектом.

Рис. 3 — Стрелка из библиотеки ГА

Рис. 4 — Стрелка из библиотеки Сатурна
Вращение и отражение
Section titled “Вращение и отражение”Если объект вращается или отражается нестандартным образом (например, при наличии точки трансформации), для каждого варианта размещения в шаблоне задаётся своя подмена; из неё берутся значения соответствующего свойства (поворота или отражения).
Объекты на HMI, у которых вращение или отражение не совпадает с шаблоном, подменять не следует.
Для объектов с «нормальным» вращением указывается один вариант подмены — в этом случае подменяются все объекты данного типа.

Рис. 5 — Стрелки с точкой вращения и ScreenNavigation без неё