Revit Lookup — полный обзор функционала


Я уже писал о Revit Lookup и Addin Manager — двух важнейших инструментах разработчика плагинов. Но сегодня хочу очень подробно рассказать только о Revit Lookup, благо этот инструмент очень сильно изменился за последнее время и есть, о чём рассказать.

Написанное в статье актуально для версии 2025.0.7, если выйдет ещё что-то новое и интересное — обновлю статью.

Введение

Revit Lookup предназначен для просмотра элементов Ревита, их свойств и методов, а также результатов всего того, что получается при просмотре этих свойств и методов. Как правило, при написании плагина для Revit сначала находят, что именно нужно поменять, используя Lookup, а потом уже пишут код.

Просмотр элементов

Откроем базу данных командой Snoop Database и посмотрим, какие фичи там есть: Команды Revit Lookup

1. Поиск

Пишем в окне поиска фразу, среди выбранных элементов моментально происходит фильтрация по принципу “содержит”. Не важно, смотрим мы всю БД, один элемент или несколько элементов:

Поиск

2. Настройка таблицы с данными

Мы можем очень гибко настраивать таблицу с данными, которые мы отображаем, увеличивая или уменьшая количество строк и столбцов. Для этого щёлкнем правой кнопкой мыши на заголовок таблицы: Настрйока свойств Какие тут есть настройки:

2.1 Время (Time) и память (Memory) для каждого свойства, поля или метода

Включаю их, таблица приобретает следующий вид: Время и память Появились колонки, показывающие, сколько времени или памяти тратится на каждую строку. Для примера я обвёл 3 строки, которые разным образом дают нам коллекцию параметров. Как видите, GetOrderedParameters() самый выгодный.

Эти данные могут быть полезны для оптимизации плагинов. Например, можно заметить, что у вас в цикле вызывается невыгодная по времени инструкция — можно вынести её в переменную или заменит на аналог.

2.2 Неподдерживаемые (Unsupported) Revit Lookup поля, свойства, события и методы

Включение этой опции добавляет в таблицу строки Unsupported method overload: Unsupported

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

Благодаря этой фиче можно не смотреть каждый раз в RevitApiDocs в поисках не поддерживаемого RevitLookup метода. Кроме того, мы можем увидеть, какие методы не поддерживаются, и написать код для их поддержки.

2.3 Статические (Static) методы классы

Тут всё просто, будут показаны статические методы этого класса. Их можно отличить от нестатических с помощью картинки в левой части строки: Static Если вы не знаете, что такое статические методы, вот вам моя статья про них.

2.4 Методы класса Object (Root Hierarchy)

Все объекты в C# являются наследниками класса Object и имеют его методы. Включив настройку Root Hierarchy, мы можем посмотреть, что они дают: Object methods Из того, что точно может быть полезно: сразу видно, что возвращает метод ToString().

2.5 Приватные члены класса (Non-public) и поля (Fields)

Private members Я на практике обычно не пользуюсь этим, но в принципе покопаться в этом может быть интересно.

2.6. События (Events)

Events

2.7. Расширения (Extensions)

Extensions Это методы, которых нет у класса непосредственно, но мы можем ими воспользоваться, использовав экземпляр класса каким либо образом. Я советую держать эту галочку включённой, мало ли, чего интересного увидите и воспользуетесь.

3. Просмотр иерархии классов

У любых классов есть классы-родители. Мы можем это увидеть и в Revit Lookup. Сначала мы видим свойства всех базовых классов, а только в конце (при наличии) — конкретного класса-наследника: Hierarchy

Дополнительные модули

1. Event Monitor

С помощью монитора событий мы можем посмотреть, какие событие произошли после его запуска, а также проанализировать аргументы этих событий: Event Monitor Допустим, очень удобно понять, какой был DialogId у события DialogBoxShowing.

2. Dashboard

Тут мы можем перейти практически в любой режим Revit Lookup, посмотреть неочевидно получаемые классы верхнего уровня типа Application, выбрать объект в любом режиме, а также перейти в ещё более интересные инструменты (вкладки Maintenance, Registry, Performance и Tools): Dashboard Рассмотрим эти инструменты подробнее:

3.1 Component Manager

Этот инструмент позволяет выполнить Snoop по ленте Ревита или даже по всему окну Ревита. Ленту или окно можно модифицировать на свой вкус, используя библиотеку AdWindows, не тратя время на то, что бы понять значение свойств в режиме отладки. Component Manager

3.2 Performance adviser

Performance adviser Довольно интересная штука, которую можно получить статическим методом GetPerformanceAdviser. Если почитать предлагаемые им правила, можно узнать интересные вещи: Performance adviser

3.3 Updaters

Можно посмотреть все зарегистрированные в открытой модели IUpdaters, в том числе, возможно, и созданный вами. Updaters

3.4 Schemas

Можно посмотреть все зарегистрированные в текущем сеансе Revit схемы расширенных хранилищ. Если их настройки позволяют, то можно посмотреть и более подробную информацию о них. Schemas

3.5 Services

Можно посмотреть используемые в документе внешние службы. Да, вы тоже можете настроить свою (но если про апдейтеры я могу рассказать, как это сделать, то про ExternalService — нет). Services

3.6 Units

Тут я объединю просмотр BuiltInParameters, BuiltInCategories и ForgeSchemas. При нажатии на любую из этих кнопок вы увидите диалоговое окно с информацией соответственно о параметрах, категориях или схемах Forge: Units

3.7 Tools

В этой группе вы имеем 3 команды:

  • Поиск элементов (при нажатии на кнопку появляется подсказка, как он работает): Search
  • Уже знакомый нам Event Monitor
  • Блок Modules, который показывает все подгруженные в Revit внешние библиотеки с указанием их версии: Modules
Настройки

В этой вкладке мы можем менять внешний вид Revit Lookup: Settings Можно поменять тему на тёмную, добавить эффект на задний фон, а так же настроить, будет ли у вас кнопка Snoop Selection в раскрывающемся списке Revit Lookup, или она будет вынесена на панель Изменить (Modify).

Дополнительные фичи

А теперь рассмотрим недавние новинки. Рассмотрим по возрастанию.

1. Просмотр цветов

Если свойство представляет собой цвет, то мы можем сразу увидеть этот цвет прямо в таблице: Colors

2. Контекстные команды из дерева объектов

Мы можем щёлкнуть правой кнопкой мыши на выделенный объект, и увидеть контекстные команды. Например, элемент можно выделить, удалить, или сфокусировать активный вид на него: Context commands Значение параметра можно редактировать: Context commands

3. Просмотр таблиц выбора в табличной форме и их экспорт

Мы можем получить таблицу выбора любого семейства из проекта, или таблицу выбора открытого семейства, и просмотреть её в удобном формате. Для этого нужно:

  • Нажать Snoop Document, находясь в документе семейства
  • ИЛИ выбрать класс Family, находясь внутри проекта
  • Включить отображение Extensions
  • Внизу нажать на GetFamilySizeTableManager Далее для экспорта нужно нажать правой кнопкой на FamilySizeTableManager и выбрать Export table: Export table А для просмотра нажать GetSizeTable, и нажать правой кнопкой на интересующую таблицу: Show table Результат: Show table
4. Просмотр геометрии

А теперь самое крышесносное: начиная с версии 2025.0.5 доступна визуализация элементов геометрии. Поддерживаются классы Mesh, Face, Solid, Curve, Edge, BoundingBox, XYZ.

Для просмотра нужно выбрать соответствующий класс и вызвать контекстную команду Visualise: Visualise Параметры отображения визуализации можно менять: Visualise Результаты получаются такими: Visualise Visualise Больше подробностей об этом функционале — в описании к релизам Revit Lookup:

Заключение

Я довольно смело назвал статью “Полный обзор Revit Lookup”. Я постарался максимально полно осветить то, что есть в новых версиях, чтобы ваше взаимодействие с этой программой было наиболее полным и эффективным. Но я мог что-нибудь забыть. Обязательно пишите в комментарии, если увидите какие-то упущения в статье, и я дополню её. А также делитесь вашим мнением по поводу ваших любимых функций Revit Lookup.

Не забывайте подписываться на мой телеграм-канал о Revit API и до новых встреч!