Revit — это насыщенная данными среда. Она поддерживает самые разные возможности выбора объектов, не ограничиваясь стандартным щелчком кнопкой мыши. Dynamo позволяет опрашивать базу данных Revit и динамически связывать элементы Revit с геометрией Dynamo во время выполнения параметрических операций.
Библиотека Revit, доступная в пользовательском интерфейсе, включает категорию Selection, которая предлагает несколько способов выбора геометрии.
Для использования правильного метода выбора элементов Revit необходимо иметь четкое представление об их иерархии. Необходимо выбрать все стены в проекте? Используйте выбор по категории. Требуется выбрать все кресла фирмы Eames для приемной в стиле 1950-х? Используйте выбор по семейству.
Кратко рассмотрим иерархию Revit.
Помните таксономические ранги, которые проходят на уроках биологии? Согласно им, все организмы в природе делятся на царства, типы, классы, порядки, семейства, рода и виды. Элементы Revit упорядочены аналогичным образом. На базовом уровне иерархию Revit можно разделить на категории, семейства, типы* и экземпляры. Экземпляр представляет собой отдельный элемент модели (с уникальным идентификатором), а категория определяет типовую группу (например, «стены» или «полы»). Такая организация базы данных Revit позволяет выбрать один элемент и все аналогичные ему элементы на основании указанного уровня иерархии.
* Определение типов в Revit отличается от определения типов в программировании. В Revit термин «тип» относится к ветви иерархии, а не к типу данных.
На трех изображениях ниже представлены основные категории выбора элементов Revit в Dynamo. Эти инструменты прекрасно сочетаются друг с другом, в чем вы убедитесь при выполнении последующих упражнений.
Щелчок кнопкой мыши — самый простой способ непосредственного выбора элементов в Revit. Таким образом можно выбрать весь элемент модели или части его топологии (например, грань или ребро). При этом сохраняется динамическая связь с объектом Revit, благодаря чему при обновлении местоположения или параметров файла Revit связанный элемент Dynamo также будет обновлен на графике.
Раскрывающиеся меню отображают список всех доступных элементов в проекте Revit. Их можно использовать для задания ссылок на элементы Revit, которые могут не отображаться на виде. Это удобный инструмент для опроса существующих или создания новых элементов в проекте Revit или редакторе семейств.
![](../.gitbook/assets/selecting _database_navigation_with_dynamo_nodes_02.png)
Кроме того, элементы Revit можно выбирать по определенному уровню в иерархии Revit. Это удобно при адаптации крупных массивов данных для подготовки документации или генеративного создания экземпляров и адаптации.
Теперь, когда вы ознакомились с приведенными выше изображениями, можно переходить к упражнению для выбора элементов базового проекта Revit, чтобы подготовиться к параметрическим операциям, которые вам предстоит создать в последующих разделах этой главы.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Данный файл примеров Revit содержит три типа элементов стандартного здания. Мы используем его в качестве примера для выбора элементов Revit в контексте иерархии Revit.
Формообразующий элемент здания
Балки (несущий каркас)
Фермы (адаптивные компоненты)
Какие выводы можно сделать на основе элементов, отображаемых на виде проекта Revit? Как глубоко в иерархии находятся соответствующие элементы? Чем масштабнее проект, тем сложнее найти ответы на подобные вопросы. Доступно множество вариантов: элементы можно выбирать по категориям, уровням, семействам, экземплярам и т. д.
Так как мы используем базовую настройку, выберите формообразующий элемент здания, щелкнув Mass в раскрывающемся меню узла Categories. Эта функция также доступна на вкладке Revit > «Выбор».
На выходе узла категории Mass мы получаем только саму категорию. Необходимо выбрать элементы. Для этого используйте узел All Elements of Category.
Обратите внимание, что на этом этапе в Dynamo геометрия не отображается. Вы выбрали элемент Revit, но еще не преобразовали его в геометрию Dynamo. Важно различать эти операции. Когда требуется выбрать большое количество элементов, нежелательно отображать их все в Dynamo, так как это замедлит работу программы. Dynamo — это инструмент для управления проектом Revit без обязательного выполнения операций с геометрией. Мы остановимся на этом подробнее в следующем разделе главы.
В данном случае вы работаете с простой геометрией, поэтому ее вполне можно добавить в область предварительного просмотра Dynamo. Рядом с элементом BldgMass узла Watch отображается число, выделенное зеленым цветом. Это идентификатор элемента, который позволяет понять, что вы работаете с элементом Revit, а не геометрией Dynamo. Теперь необходимо преобразовать этот элемент Revit в геометрию Dynamo.
Используя узел Element.Faces, можно получить список поверхностей, представляющий все грани формообразующего элемента. Теперь можно просмотреть геометрию на видовом экране Dynamo и использовать грань как опорный элемент для параметрических операций.
Есть и другой способ. Вместо выбора с помощью иерархии Revit (узел All Elements of Category) можно выбрать геометрию непосредственно в Revit.
В узле Select Model Element щелкните кнопку Select (или Change). На видовом экране Revit выберите нужный элемент. В данном случае следует выбрать формообразующий элемент здания.
Вместо выбора с помощью узла Element.Faces можно выбрать весь формообразующий элемент как единое геометрическое тело, применив Element.Geometry. При этом будет выбрана вся геометрия в пределах формообразующего элемента.
С помощью Geometry.Explode можно снова сформировать список поверхностей. Эти два узла работают аналогично узлу Element.Faces, но содержат дополнительные параметры для изучения геометрии элемента Revit.
Используя базовые операции для списков, можно запросить нужную грань.
Сначала необходимо вывести выбранные элементы из предыдущего узла в узел Element.Faces.
Узел List.Count показывает, что в пределах формообразующего элемента присутствует 23 поверхности.
Учитывая эти сведения, измените максимальное значение узла Integer Slider на 22.
С помощью узла List.GetItemAtIndex задайте списки в качестве входных данных и соедините Integer Slider с портом ввода index. Изменяя положение регулятора с выбранными элементами, остановитесь на индексе 9, когда будет изолирован главный фасад с фермами.
Предыдущий шаг был довольно трудоемким. Его можно выполнить гораздо проще и быстрее с помощью узла Select Face. Он позволяет изолировать в проекте Revit грань, которая не является самостоятельным элементом. Это же действие можно выполнить с помощью Select Model Element, выбрав поверхность вместо целого элемента.
Предположим, нужно изолировать стены главного фасада здания. Для этого можно использовать узел Select Faces. Нажмите кнопку выбора, а затем выберите четыре основных фасада в Revit.
Выбрав четыре стены, нажмите в Revit кнопку «Готово».
Грани импортируются в Dynamo в качестве поверхностей.
Теперь рассмотрим балки над атриумом.
С помощью узла Select Model Element выберите одну из балок.
Соедините элемент балки с портом ввода узла Element.Geometry, после чего балка появится на видовом экране Dynamo.
С помощью узла Watch 3D можно увеличить геометрию (если балка не отображается в Watch 3D, щелкните правой кнопкой мыши и выберите «Вписать»).
При работе в Revit и Dynamo часто возникает вопрос: как, выбрав один элемент, выделить все аналогичные элементы? Так как выбранный элемент Revit содержит всю иерархическую информацию, можно запросить его типоразмер в семействе и выбрать все элементы данного типа.
Соедините элемент балки с портом ввода узла Element.ElementType.
Изображение в узле Watch показывает, что выходные данные теперь являются обозначением семейства, а не элементом Revit.
Element.ElementType — это простой запрос, который можно легко выполнить в узле Code Block с помощью синтаксиса
x.ElementType;
и получить те же результаты.
Для выбора остальных балок используйте узел All Elements of Family Type.
Узел Watch показывает, что выбрано пять элементов Revit.
Эти пять элементов также можно преобразовать в геометрию Dynamo.
Что, если бы в проекте было 500 балок? Преобразование всех этих элементов в геометрию Dynamo заняло бы очень много времени. Если Dynamo требуется много времени для расчета узлов, возможно, следует воспользоваться функцией заморозки, чтобы приостановить выполнение операций Revit во время создания графика. Для получения дополнительных сведений о замораживании узлов см. раздел Замораживание в главе «Тела».
В любом случае, даже если бы мы и хотели импортировать 500 балок, нужны ли нам все поверхности для выполнения задуманной параметрической операции? Или же мы можем извлечь основную информацию из балок и выполнить генеративные задачи с помощью фундаментальной геометрии? Подумайте над этим вопросом, пока мы продолжаем разбирать данную главу. Для примера рассмотрим систему ферм.
С помощью того же графика узлов выберите элемент фермы вместо балки. Перед этим удалите узел Element.Geometry, добавленный на предыдущем шаге.
Теперь можно извлечь основные сведения из типоразмера семейства ферм.
В узле Watch отображается список адаптивных компонентов, выбранных из Revit. Так как необходимо извлечь основную информацию, начните с адаптивных точек.
Соедините узел All Elements of Family Type с узлом AdaptiveComponent.Location. В результате получится список списков, каждый из которых содержит три точки, представляющие местоположения адаптивных точек.
При присоединении узла Polygon.ByPoints образуется сложная кривая. Она отображается на видовом экране Dynamo. Благодаря этому методу вы визуализировали геометрию одного элемента и абстрагировали геометрию оставшегося массива элементов (которых может быть больше, чем в данном примере).
Совет. Если щелкнуть зеленый номер элемента Revit в Dynamo, масштаб этого элемента в видовом экране Revit будет увеличен.