Найти тему

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

Оглавление

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

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

Введение

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

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

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

1. Поиск

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

-2

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

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

-3

Какие тут есть настройки:

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

Включаю их, таблица приобретает следующий вид:

-4

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

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

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

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

-5

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

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

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

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

-6

Если вы не знаете, что такое статические методы, вот вам моя статья про них.

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

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

-7

Из того, что точно может быть полезно: сразу видно, что возвращает метод ToString().

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

-8

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

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

-9

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

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

-10

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

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

-11

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

1. Event Monitor

С помощью монитора событий мы можем посмотреть, какие событие произошли после его запуска, а также проанализировать аргументы этих событий:

-12

Допустим, очень удобно понять, какой был DialogId у события DialogBoxShowing.

2. Dashboard

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

-13

Рассмотрим эти инструменты подробнее:

3.1 Component Manager

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

-14

3.2 Performance adviser

-15

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

-16

3.3 Updaters

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

-17

3.4 Schemas

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

-18

3.5 Services

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

-19

3.6 Units

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

-20

3.7 Tools

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

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

Настройки

В этой вкладке мы можем менять внешний вид Revit Lookup:

-23

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

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

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

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

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

-24

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

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

-25

Значение параметра можно редактировать:

-26

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

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

  • Нажать Snoop Document, находясь в документе семейства
  • ИЛИ выбрать класс Family, находясь внутри проекта
  • Включить отображение Extensions
  • Внизу нажать на GetFamilySizeTableManager

Далее для экспорта нужно нажать правой кнопкой на FamilySizeTableManager и выбрать Export table:

-27

А для просмотра нажать GetSizeTable, и нажать правой кнопкой на интересующую таблицу:

-28

Результат:

-29

4. Просмотр геометрии

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

Для просмотра нужно выбрать соответствующий класс и вызвать контекстную команду Visualise:

-30

Параметры отображения визуализации можно менять:

-31

Результаты получаются такими:

-32
-33

Больше подробностей об этом функционале — в описании к релизам Revit Lookup:

Releases · jeremytammik/RevitLookup

Заключение

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

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

-34