ETraceSet.GetMaxLimit (Получить максимальный лимит из набора трасс)

Описание
Возвращает наименьшее и наибольшее максимальное значение лимита для заданного значения координаты X и идентификатора из набора трасс.
Свойства
| Входной аргумент | Тип аргумента | Тип переменной | Описание |
|---|---|---|---|
| traceSet | Константа, Переменная, Выражение | ETraceSet | Набор трасс |
| x | Константа, Переменная, Выражение | Double | Значение координаты X |
| tag | Константа, Переменная, Выражение | String | Идентификатор лимита |
| searchTagPart | Константа, Переменная, Выражение | Boolean | Поиск лимита по частичному совпадению идентификатора |
| Выходной аргумент | Тип аргумента | Тип переменной | Описание |
|---|---|---|---|
| maxLimitStrict | Переменная | Double | Наименьшее максимальное значение |
| maxLimitRelaxed | Переменная | Double | Наибольшее максимальное значение |
| limitsNames | Переменная | String[] | Массив имен лимитов, которые учитывались при расчете |
| limitsTags | Переменная | String[] | Массив идентификаторов лимитов, которые учитывались при расчете |
| maxUnmergedValues | Переменная | Double[] | Массив исходных максимальных значений лимитов для заданного значения координаты X |
Пример
Рассмотрим работу блока на примере простой программы, которая позволяет получить максимальное значение лимита Y для указанной координаты X из объектов типа ELimits с заданным идентификатором, которые хранятся в коллекции трейсов и лимитов ETraceSet.

Создадим глобальные переменные, необходимые для работы программы. Данные переменные мы будем использовать с привязкой к элементам управления интерфейса пользователя. ETraceSet – переменная типа ETraceSet, в которую будет добавляться массив объектов типа ELimits. ELimit – переменная, которая хранит созданный объект типа ELimits, который мы будем добавлять в массив ELimitsArray. ELimitsArray – массив объектов типа ELimits. maxYpoints – переменная типа Double[] для хранения массива максимальных значений лимита. minYpoints – переменная типа Double[] для хранения массива минимальных значений лимита. Xpoints – переменная типа Double[] для хранения массива точек X. MaxLimitStrict – переменная типа Double[] для хранения наименьших максимальных значений лимита. MaxLimitRelaxed – переменная типа Double[] для хранения наибольших максимальных значений лимита. MaxUnmergedValues – переменная типа Double[] для хранения исходных максимальных значений лимитов для заданного X. LimitNames – переменная типа String[] для хранения имен объектов ELimits, которые имеют указанный идентификатор и учитывались при расчете. LimitTags – переменная типа String[] для хранения идентификаторов объектов ELimits, которые имеют указанный идентификатор и учитывались при расчете. ELimitTag – идентификатор лимита, по которому будет выполняться поиск в коллекции трейсов и лимитов ETraceSet.

Создадим интерфейс пользователя. Нажмем правой кнопкой по заголовку программы и выберем пункт меню «Добавить новый элемент».

Выберем элемент «Панель управления» и введем имя элемента. Нажмем кнопку «Создать».

Добавим на панель управления следующие элементы: Интерактивные элементы -> Кнопка; Ввод данных -> Поле ввода; Ввод данных -> Числовой ввод (2 элемента); Пользовательские -> DashBoardETraceSetView.

Последовательно выберем каждый из добавленных элементов, в свойствах элементов введем соответствующие имена и выполним привязку значения к переменным следующим образом: TraceSet: значение -> переменная ETraceSet; Идентификатор: значение -> переменная ELimitTag; Значение X: значение -> переменная X; Значение Y: значение -> переменная MaxLimitStrict; DashBoardETraceSetView: значение -> переменная ETraceSet; Пример привязки элемента панели управления «DashBoardETraceSetView» к переменной ETraceSet показан на следующем рисунке.

Включим событие «Click» и введем имя в свойствах кнопки.

Перейдем на холст выполняемой программы. Действия программы будут происходить по нажатию пользователем на кнопку «Получить максимальное значение лимита». Для этого запуск программы должен начинаться с отображения дашборда. Добавим блок «ShowDashboard» и выберем созданную панель управления в меню настройки.

Блок обработки события свяжем с программным алгоритмом, обеспечивающим соответствующие манипуляции с переменной ETraceSet. Последовательно разберем назначение всех добавленных блоков.

Блок Handler будет срабатывать по событию нажатия кнопки.

Следующий блок - CreateInstance. Данный блок создает новый объект типа ETraceSet, который не содержит никаких данных.

Далее используем блок "If - else" для построения цикла на 11 итераций. Значение переменной i вначале цикла равняется нулю и наращивается на 1 после выполнения каждой итерации. При выполнении условия i<=10 блок принимает значение "True", иначе работа блока завершается через выход "False".

При выполнении каждой итерации цикла будут выполняться следующий действия. Используем блок CreateInstance для создания нового объекта типа ELimits, который передадим в переменную ELimit, как показано на рисунке.

Зададим идентификатор созданного лимита с помощью блока ELimits.SetTag. В качестве идентификатора будем использовать текущее значение номера итерации i, преобразованное в строковый тип данных с помощью функции i.ToString()+"тест".

Зададим имя созданного лимита с помощью блока ELimits.SetName. В качестве имени будем использовать текущее значение номера итерации i, преобразованное в строковый тип данных с помощью функции i.ToString().

Сформируем массив минимальных значений лимита minYpoints с помощью блока RandomArray.

Сформируем массив максимальных значений лимита maxYpoints с помощью блока RandomArray.

Добавим созданные массивы точек в объект типа ELimits с помощью блока ELimits.AddPoints.

Добавим созданный лимит, который хранится в переменной ELimits в массив ELimitsArray с помощью блока AddArrayValue.

Нарастим значение i на 1 с помощью блока SetVariable и функции i=i+1.

По окончании созданного цикла (условие i>10) добавим все объекты типа ELimits из массива ELimitsArray в коллекцию трейсов и лимитов ETraceSet с помощью блока ETraceSet.AddLimits.

Далее используем блок ETraceSet.GetMaxLimit, который вернет максимальное значение лимита Y (по оси ординат) для указанной координаты X (по оси абсцисс) из объектов типа ELimits с заданным идентификатором, которые хранятся в коллекции трейсов и лимитов ETraceSet. В нашем случае функция SearchTagPart включена, соответственно поиск максимальных значений будет выполняться в объектах ELimits даже с неполным совпадением заданного идентификатора.

Добавим полученную точку (X,MaxLimitStrict) в переменную NewTrace, которая хранит объект типа ETrace с помощью блока ETrace.AddPoint.

Добавим объект типа ETrace из переменной NewTrace в переменную ETraceSet c помощью блока ETraceSet.AddTrace.

Посмотрим, как работает пример. Мы можем видеть, что по результатам выполнения программы на графике элемента DashBoardETraceSetView отображаются сгенерированные лимиты, после чего программа выполняет поиск объектов ELimits, которые имеют введенный идентификатор "тест" и возвращает координаты (X,Y) наименьшего значения верхнего предела Y для указанного X, рассчитанного среди всех найденных лимитов.
