2
« : 14 Мая 2024, 09:49:16 »
Есть проект по дозированию по трубопроводам продуктов .
В 9 миксеров будет подаваться продукт по 4 линиям. В каждую линию подключены по 8-12 ёмкостей. Одновременно на линию продукт может подаваться только из одной емкости. От емкости до расходомеров на трубопроводах будет установлено по 3 крана и одному насосу. Плюс после расходомеров будет установлено ещё по 8 кранов. Итого в общей сложности на один миксер получается примерно 40 емкостей, 40 насосов и 130 кранов.
Разместить такое количество элементов на одной мнемосхеме не получится. Поэтому есть идея отображать для каждой из четырех линий только активную емкость с соответствующими кранами и насосами.
Какие были варианты реализации.
1. Сделать шаблон и менять подстановку шаблона. Но менять с помощью скриптов подстановку шаблона нельзя.
2. Сделать "накладные" шаблоны. Наложить шаблоны всех элементов друг на друге и управлять их видимостью. Но у шаблонов к сожалению нет свойства Видимость.
3. Сделать шаблонные окна и открывать их. Но из скриптов открыть шаблонное окно нельзя. Также не очень хорошо будет выглядеть из-за тени окна.
4. Вариант с обычными окнами тоже подошел бы. Вручную создал бы 40 окон. Но из-за тени не очень будет смотреться визуально. Да и заблокировать возможность перемещения окна тоже нельзя. Добавить бы окнам ещё свойства отключения тени и граница, запрет на закрытие крестиком (и скрыть крестик), запрет на перемещение, тогда бы уже получилось не только окно, а область или панель. С помощью такой панели к примеру можно будет создавать окна с вкладками.
5. Сделать в скаде виртуальные краны и насосы. Скриптом "изменились переменные" копировать значения реальных переменны в виртуальные. Но тогда будет 36 скрипта "изменились переменные" и в каждом скрипте будет обрабатываться несколько сотен переменных. Как это скажется на производительности скады неизвестно.
Единственный рабочий вариант номер 5. Пока остановился на нём.
Как ещё можно реализовать данную задачу?
Хотелось чтобы разработчики добавили шаблонам свойства видимость, возможность вызывать шаблонные окна из скриптов (например при вызове события Button1.OnClickEvent) или менять подстановки шаблонов из скриптов.
Как это примерно должно выглядеть на прикрепленном к этому сообщению скриншоте.