Сложное изменение цвета со скриптами

<< Click to Display Table of Contents >>

Навигация  Примеры > Изменение цвета объекта >

Сложное изменение цвета со скриптами

Previous pageReturn to chapter overviewNext page

Предположим, у Вас есть множество однотипных объектов (мотор), у каждого из которых есть 2 параметра (состояние и скорость). Вам требуется изменять цвет объекта в зависимости от состояния и скорости.

Мы уже знаем, что если цвет менятся в зависимости от значений нескольких тегов, то нам необходимо использовать скрипты; а если мы используем однотипные объекты -  для того чтобы упростить привязку продублированых объектов к тегам, нужно использовать косвенные имена, основанные на пользовательстких свойствах.

Посмотрим на примере.

1. Создадим для каждого объекта Мотор - 2 тега (State и Speed). Для удобства сделаем это ввиде группы, а затем скопируем группу по количеству объектов в проекте:

 

complexwithscriptstags

 

2. Создадим для нашего примера графический объект Motor:

 

clip0030

 

Откроем окно свойств объекта, создадим пользовательское свойство - Number  со значение "1", т.к. данный объект мы будем привязывать к тегам State1 Speed1:

 

motorpropertieswindow

complexudp

 

3. Теперь нам нужно создать скрипт для объекта на языке ST с типом выполнения - OnDataChange:

 

stscriptforcomplexscript

 

В зависимости от значений тега для каждого объекта Мотор будем использовать цвет заливки:

 

State

Speed

Цвет

0

Любая

RED

1

0...500

GREEN

1

500...1000

YELLOW

1

>1000

BLUE

 

Напишем наш скрипт:

 

scripttextexampleforcomplexexample

После того как записали скрипт обязательно запустим его путем нажатия кнопки на панели инструментов: clip0048

 

4. Привяжем наш скрипт к объекту: откроем свойства объекта Мотор, далее - Скрипты/Коллекция и привяжем наш скрипт:

 

clip0031

stcollection

 

Теперь у нас есть Мотор с настройкой свойства Цвет заполнения, прописанный в скрипте.

5. Теперь продублируем объект столько раз, сколько нужно для проекта. Т.к. мы использовали пользовательское свойство, нам не нужно настраивать скрипт для каждого Мотора. Нам нужно только продублировать Мотор и изменить значение пользовательского свойства:

 

complexduplicate2

 

 

complexpropertysheet

 

6. Запустим имитацию, чтобы проверить настройки:

 

complexrunsimscript1

 

Вы можете скачать проект из примера здесь.