Словари. Примеры использования в Revit

Вам когда-нибудь приходилось искать в Revit информацию по фрагменту данных?

Вы наверняка делали что-то подобное:

ИЗОБРАЖЕНИЕ

Процесс, проиллюстрированный выше, включает следующие этапы: сбор всех помещений в модели Revit, получение индекса нужного помещения (по его номеру) и, наконец, извлечение этого помещения из индекса.

А теперь посмотрите, как тот же процесс выглядит при использовании словарей.

Скачайте файл примера для этого упражнения (щелкните правой кнопкой мыши и выберите «Сохранить ссылку как...»): RoomDictionary.dyn. Полный список файлов примеров можно найти в приложении.

ИЗОБРАЖЕНИЕ Сначала необходимо сгруппировать все помещения в модели Revit.

  • Выберите нужную категорию Revit (в данном случае работа ведется с помещениями).
  • Запрограммируйте сбор всех таких элементов в Dynamo.

ИЗОБРАЖЕНИЕ Затем решите, какие ключи будут использоваться для поиска этих данных. Сведения о ключах см. в разделе 9-1. Что такое словарь.

  • Данные, которые будут использоваться, — это номер помещения.

ИЗОБРАЖЕНИЕ Теперь создайте словарь по заданным ключам и элементам.

  • Узел Dictionary.ByKeysValues создает словарь с соответствующими входными данными.
  • Данные, поступающие в порт кeys, должны быть строковыми. Поле values поддерживает разные типы объектов.

ИЗОБРАЖЕНИЕ Наконец, извлеките помещение из словаря с номером помещения.

  • Порт string выдает ключ, который используется для поиска объекта в словаре.
  • Метод Dictionary.ValueAtKey получает объект из словаря.

Используя аналогичную логику работы со словарями, можно создавать словари, содержащие сгруппированные объекты. Если нужно найти все помещения на конкретном этаже, измените приведенный выше график следующим образом.

ИЗОБРАЖЕНИЕ

  • Вместо того чтобы использовать номер помещения в качестве ключа, можно использовать значение параметра (в данном случае этаж).

ИЗОБРАЖЕНИЕ

  • Теперь можно сгруппировать помещения по этажу, на котором они находятся.

ИЗОБРАЖЕНИЕ

  • Когда элементы сгруппированы по этажам, можно использовать общие (уникальные) ключи в качестве ключей для словаря, а списки помещений — в качестве его элементов.

ИЗОБРАЖЕНИЕ

  • Наконец, используя этажи, заданные в модели Revit, выполните поиск в словаре всех помещений, расположенных на нужном этаже. Метод Dictionary.ValueAtKey использует имя этажа в качестве входных данных и возвращает объекты помещений на этом этаже.

Возможности использования словарей практически безграничны. Сама по себе возможность соотнесения данных BIM в Revit с тем или иным элементом открывает широкий спектр вариантов применения.