Поиск связанных элементов — различия между версиями
Ipe (обсуждение | вклад) |
Ipe (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 21: | Строка 21: | ||
В дополнение к описанному первым элементом этого списка строк можно указать: | В дополнение к описанному первым элементом этого списка строк можно указать: | ||
− | * - выбрать все устройства в графе. | + | # ''' * - выбрать все устройства в графе. ''' |
− | Идентификатор устройства - выбрать устройство по данному идентификатору или несколько устройств по идентификаторам разделенным символом |. | + | # Идентификатор устройства - выбрать устройство по данному идентификатору или несколько устройств по идентификаторам разделенным символом |. |
− | Имя устройства - возможен так же поиск устройства по имени, однако имя устройства в таком случае должно содержать либо пробел, либо дефис, как в идентификаторе. Так же следует помнить о том, что имя устройства не обязательно уникально, и в случае наличия дубликатов будет найден первый попавшийся. | + | # Имя устройства - возможен так же поиск устройства по имени, однако имя устройства в таком случае должно содержать либо пробел, либо дефис, как в идентификаторе. Так же следует помнить о том, что имя устройства не обязательно уникально, и в случае наличия дубликатов будет найден первый попавшийся. |
Так же каждая команда в свою очередь может состоять из нескольких вариантов разделенных символом |. | Так же каждая команда в свою очередь может состоять из нескольких вариантов разделенных символом |. | ||
− | + | ||
− | Примеры использования | + | Примеры использования:<br /> |
+ | |||
Найти все видеокамеры: | Найти все видеокамеры: | ||
− | "*/VideoCamera" | + | <pre>"*/VideoCamera"</pre> |
+ | |||
Найти видеокамеру по идентификатору: | Найти видеокамеру по идентификатору: | ||
− | "2c5a5d58-5d04-4325-81c6-830a0661bb41/VideoCamera" | + | <pre>"2c5a5d58-5d04-4325-81c6-830a0661bb41/VideoCamera"</pre> |
+ | |||
Найти видеокамеру по имени: | Найти видеокамеру по имени: | ||
− | "Какая-то видеокамера/VideoCamera" | + | <pre>"Какая-то видеокамера/VideoCamera"</pre> |
+ | |||
Найти все камеры, соединенные любым способом с двумя пространствами с указанными идентификаторами: | Найти все камеры, соединенные любым способом с двумя пространствами с указанными идентификаторами: | ||
− | "1b63a2bd-733d-4788-9fb1-c987335eafcf|f62fe1da-a563-4c90-b13c-3d9eb95a5573/Space/Pin/VideoCamera" | + | <pre>"1b63a2bd-733d-4788-9fb1-c987335eafcf|f62fe1da-a563-4c90-b13c-3d9eb95a5573/Space/Pin/VideoCamera"</pre> |
+ | |||
Найти все видеокамеры подключенные к разъему logicOutput текущего устройства: | Найти все видеокамеры подключенные к разъему logicOutput текущего устройства: | ||
− | "logicOutput/VideoCamera" | + | <pre>"logicOutput/VideoCamera"</pre> |
+ | |||
Найти все видеокамеры находящиеся с текущим устройством в одном помещении: | Найти все видеокамеры находящиеся с текущим устройством в одном помещении: | ||
− | "Pin/Space/Pin/VideoCamera" | + | <pre>"Pin/Space/Pin/VideoCamera"</pre> |
+ | |||
Найти все видеокамеры соединенные любым способом с зоной, идентификатор которой содержится в параметре owner текущего события: | Найти все видеокамеры соединенные любым способом с зоной, идентификатор которой содержится в параметре owner текущего события: | ||
− | "owner/Zone/Pin/VideoCamera" | + | <pre>"owner/Zone/Pin/VideoCamera"</pre> |
+ | |||
Найти все видеокамеры соединенные любым способом с зонами, идентификаторы которых содержатся в параметре trace_zones текущего подвижного объекта: | Найти все видеокамеры соединенные любым способом с зонами, идентификаторы которых содержатся в параметре trace_zones текущего подвижного объекта: | ||
− | "trace_zones/Zone/Pin/VideoCamera" | + | <pre>"trace_zones/Zone/Pin/VideoCamera"</pre> |
+ | |||
Найти все сирены LowCurrentSirenMeta находящиеся с заданным элементом либо в одной зоне либо в одном пространстве: | Найти все сирены LowCurrentSirenMeta находящиеся с заданным элементом либо в одной зоне либо в одном пространстве: | ||
− | "Link/Space|Zone/Link/LowCurrentSirenMeta" | + | <pre>"Link/Space|Zone/Link/LowCurrentSirenMeta"</pre> |
Текущая версия на 16:14, 20 сентября 2021
Строка поиска связанных элементов состоит из набора команд разделенных символом /.
Механизм поиска связанных элементов по заданному элементу представляет собой конечный автомат, со следующими состояниями:
- Устройство (Item) - принимает следующие команды:
- Имя параметра - считать из параметра идентификатор (или список идентификаторов) устройств и перейти в них.
- Имя разъема - перейти в указаный разъем.
- Тип разъема - перейти в разъемы указанного типа.
- Тип связи - перейти в связи указанного типа.
- Тип устройства - остаться в текущем устройстве, если его тип совместим с указанным, иначе остановить поиск.
- Связь (Link) - принимает следующие команды:
- Имя параметра - считать из параметра идентификатор (или список идентификаторов) устройств и перейти в них.
- Тип разъема - перейти в разъемы указанного типа.
- Тип устройства - перейти в устройство указанного типа соединенного с любым концом данной связи.
- Тип связи - остаться в текущей связи, если ее тип совместим с указанным, иначе остановить поиск.
- Разъем (Pin) - принимает следующие команды:
- Тип устройства - перейти в устройства указанного типа подключенные к текущему разъему на другой стороне.
- Событие (Event) - принимает следующие команды:
- Имя параметра - считать из параметра идентификатор (или список идентификаторов) устройств и перейти в них.
Типом данных для поиска связанных элементов является список строк. Каждая строка из списка является командой для текущего состояния. Если по команде ничего не найдено, поиск по этой ветке останавливается.
В дополнение к описанному первым элементом этого списка строк можно указать:
- * - выбрать все устройства в графе.
- Идентификатор устройства - выбрать устройство по данному идентификатору или несколько устройств по идентификаторам разделенным символом |.
- Имя устройства - возможен так же поиск устройства по имени, однако имя устройства в таком случае должно содержать либо пробел, либо дефис, как в идентификаторе. Так же следует помнить о том, что имя устройства не обязательно уникально, и в случае наличия дубликатов будет найден первый попавшийся.
Так же каждая команда в свою очередь может состоять из нескольких вариантов разделенных символом |.
Примеры использования:
Найти все видеокамеры:
"*/VideoCamera"
Найти видеокамеру по идентификатору:
"2c5a5d58-5d04-4325-81c6-830a0661bb41/VideoCamera"
Найти видеокамеру по имени:
"Какая-то видеокамера/VideoCamera"
Найти все камеры, соединенные любым способом с двумя пространствами с указанными идентификаторами:
"1b63a2bd-733d-4788-9fb1-c987335eafcf|f62fe1da-a563-4c90-b13c-3d9eb95a5573/Space/Pin/VideoCamera"
Найти все видеокамеры подключенные к разъему logicOutput текущего устройства:
"logicOutput/VideoCamera"
Найти все видеокамеры находящиеся с текущим устройством в одном помещении:
"Pin/Space/Pin/VideoCamera"
Найти все видеокамеры соединенные любым способом с зоной, идентификатор которой содержится в параметре owner текущего события:
"owner/Zone/Pin/VideoCamera"
Найти все видеокамеры соединенные любым способом с зонами, идентификаторы которых содержатся в параметре trace_zones текущего подвижного объекта:
"trace_zones/Zone/Pin/VideoCamera"
Найти все сирены LowCurrentSirenMeta находящиеся с заданным элементом либо в одной зоне либо в одном пространстве:
"Link/Space|Zone/Link/LowCurrentSirenMeta"