В Dynamo можно создать массив элементов Revit с полным параметрическим управлением. Узлы Revit в Dynamo позволяют импортировать элементы из типовых геометрических объектов в категории определенных типов (например, стены и перекрытия). В этом разделе рассматривается импорт параметрически гибких элементов с адаптивными компонентами.
Адаптивный компонент — это гибкая категория семейства, которая хорошо подходит для генеративных приложений. После создания экземпляра можно построить сложный геометрический элемент, который определяется исходным положением адаптивных точек.
Ниже приведен пример адаптивного компонента на основе трех точек в редакторе семейств. Создается ферма, определяемая положением каждой адаптивной точки. В упражнении ниже с помощью этого компонента будет создана серия ферм по ширине фасада.
Адаптивный компонент — хороший пример применения взаимодействия. Задав опорные адаптивные точки, можно создать массив адаптивных компонентов. В свою очередь, при переносе этих данных в другие программы есть возможность свести геометрию к простым данным. Примерно такая же логическая схема используется при импорте и экспорте в программе Excel.
Предположим, что консультант по фасадным работам хочет узнать местоположение элементов фермы без разбиения готовой геометрии. При подготовке к производству консультант может указать местоположение адаптивных точек для регенерации геометрии в такой программе, как Inventor.
Рабочий процесс, который будет рассмотрен в упражнении ниже, позволяет получить доступ ко всем этим данным во время создания определения формирования элементов Revit. Благодаря этому можно объединить этапы создания концепции, разработки документации и производства в единый рабочий процесс. В результате формируется более интеллектуальный и эффективный механизм взаимодействия.
В первом упражнении ниже описывается то, как в Dynamo используются ссылки на данные для создания элементов Revit. Для формирования нескольких адаптивных компонентов необходимо создать список списков, в каждом из которых будет три точки, соответствующие трем точкам адаптивного компонента. Это будет необходимо учитывать при управлении структурами данных в Dynamo.
Еще одним способом импорта параметрической геометрии Dynamo в Revit является DirectShape. В целом элемент DirectShape и связанные классы отвечают за хранение созданных во внешних программах геометрических форм в документах Revit. Геометрия может включать в себя замкнутые тела или сети. Основной задачей DirectShape является импорт форм из других форматов данных, например IFC или STEP, когда недостаточно информации для создания реального элемента Revit. Как и при работе с форматами IFC и STEP, функция DirectShape подходит для импорта созданных в Dynamo геометрических объектов в проекты Revit в качестве реальных элементов.
Во втором упражнении рассматривается использование DirectShape для импорта геометрии Dynamo в проект Revit. С помощью этого метода можно назначить категорию, материал и имя импортированной геометрии, сохранив при этом параметрическую связь с графиком Dynamo.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Возьмите файл примеров из этого раздела (или продолжите работу с файлом Revit из предыдущего сеанса), содержащий уже знакомый вам формообразующий элемент Revit.
После открытия файл выглядит следующим образом.
Видна система ферм, созданная при помощи Dynamo и интеллектуально связанная с формообразующим элементом Revit.
Теперь, когда мы применили узлы Select Model Element и Select Face, опустимся на одну ступень вниз по иерархии геометрии и воспользуемся узлом Select Edge. Если решатель Dynamo находится в автоматическом режиме, то при внесении изменений в файл Revit график будет постоянно обновляться. Ребро, которое необходимо выбрать, динамически привязано к топологии элементов Revit. Пока топология* остается неизменной, связь между Revit и Dynamo не прерывается.
Выберите самую верхнюю кривую остекленного фасада. Она проходит по всей длине здания. Если выбрать ребро не удается, в Revit можно навести на него указатель и нажимать клавишу TAB до тех пор, пока этот объект не будет выделен.
С помощью двух узлов Select Edge выберите ребра, представляющие скос в центре фасада.
Проделайте то же самое с нижними ребрами фасада в Revit.
Узлы Watch теперь демонстрируют наличие линий в Dynamo. Данные автоматически преобразуются в геометрию Dynamo, так как сами ребра не являются элементами Revit. Эти кривые будут использоваться в качестве опорных элементов для создания экземпляров адаптивных ферм по ширине фасада.
* Чтобы сохранить единообразную топологию, используется модель, в которую не были включены дополнительные грани или ребра. Параметры могут изменять ее форму, однако способ ее построения остается неизменным.
Сначала нужно соединить кривые и объединить их в общем списке. Это позволит «сгруппировать» кривые для выполнения операций с геометрией.
Создайте список для двух кривых по центру фасада.
Объедините эти две кривые в сложную кривую, подключив компонент List.Create к узлу Polycurve.ByJoinedCurves.
Создайте список для двух кривых в нижней части фасада.
Объедините эти две кривые в сложную кривую, подключив компонент List.Create к узлу Polycurve.ByJoinedCurves.
Наконец, объедините три основные кривые (одну линию и две сложные кривые) в один список.
Воспользуйтесь верхней кривой, которая представляет собой линию, расположенную по всей ширине фасада. Создайте плоскости вдоль этой линии для пересечения с набором кривых, которые были сгруппированы в списке.
С помощью узла Code Block задайте диапазон, используя синтаксис
0..1..#numberOfTrusses;
.Соедините узел Integer Slider с портом ввода узла Code Block. Как можно догадаться, он будет задавать количество ферм. Обратите внимание, что регулятор контролирует количество объектов в диапазоне от 0 до 1.
Соедините узел Code Block с портом ввода param узла Curve.PlaneAtParameter, а верхнее ребро — с портом ввода curve. Будет создано десять плоскостей, равномерно распределенных по ширине фасада.
Плоскость — это абстрактный элемент геометрии, представляющий собой бесконечное двумерное пространство. Плоскости отлично подходят для создания контуров и пересечений, что и требуется на данном этапе.
Используя узел Geometry.Intersect (задайте режим переплетения «Векторное произведение»), соедините компонент Curve.PlaneAtParameter с портом ввода entity узла Geometry.Intersect. Соедините основной узел List.Create с портом ввода geometry. Теперь на видовом экране Dynamo можно увидеть точки, обозначающие пересечение кривых с заданными плоскостями.
Обратите внимание, что выходные данные содержат список, в который вложен список с еще одним вложенным списком. Слишком большое число списков для решаемой задачи. Необходимо частично выровнять их. Спустимся на шаг вниз по списку и применим к результату функцию выравнивания. Для этого используем операцию List.Map, описанную в главе руководства, посвященной спискам.
Соедините узел Geometry.Intersect с портом ввода list узла List.Map.
Соедините узел Flatten с портом ввода f(x) узла List.Map. В результате получится 3 списка с количеством элементов, соответствующим количеству ферм.
Необходимо изменить эти данные. Для создания экземпляра фермы следует использовать такое же количество адаптивных точек, какое определено в семействе. Так как адаптивный компонент состоит из трех точек, вместо трех списков, содержащих по 10 элементов (numberOfTrusses), необходимо получить 10 списков с тремя элементами в каждом. Так можно создать 10 адаптивных компонентов.
Соедините узел List.Map с портом ввода узла List.Transpose. Теперь у вас есть нужные выходные данные.
Чтобы убедиться в правильности данных, добавьте узел Polygon.ByPoints в рабочую область и проверьте результат в области предварительного просмотра Dynamo.
Массив адаптивных компонентов создается так же, как полигоны.
Добавьте узел AdaptiveComponent.ByPoints в рабочую область и соедините узел List.Transpose с портом ввода points.
С помощью узла Family Types выберите семейство AdaptiveTruss и соедините его с портом ввода FamilyType узла AdaptiveComponent.ByPoints.
В Revit можно увидеть десять ферм, равномерно размещенных по ширине фасада.
Для «зондирования» графика увеличьте значение numberOfTrusses до 30 с помощью регулятора. В итоге получилось слишком большое и нереальное количество ферм, но при этом параметрическая связь действует. После проверки задайте для параметра numberOfTrusses значение 15.
В качестве финальной проверки выберите формообразующий элемент в Revit и отредактируйте параметры экземпляра. После изменения формы здания ферма тоже должна измениться. Обратите внимание, что это изменение можно наблюдать, только если график Dynamo открыт. Сразу после закрытия связь будет разорвана.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Сначала откройте файл примеров для этого урока: ARCH-DirectShape-BaseFile.rvt.
На 3D-виде отображается формообразующий элемент здания из предыдущего урока.
Вдоль кромки атриума имеется одна базовая кривая. Она будет использоваться в Dynamo в качестве опорной.
Вдоль противоположной кромки атриума проходит еще одна базовая кривая. Она также будет использоваться в Dynamo в качестве опорной.
Чтобы установить связь с геометрией в Dynamo, используйте узел Select Model Element для каждого элемента в Revit. Выберите формообразующий элемент в Revit и импортируйте геометрию в Dynamo с помощью Element.Faces. Формообразующий элемент должен отображаться в области предварительного просмотра Dynamo.
Импортируйте первую базовую кривую в Dynamo с помощью Select Model Element и CurveElement.Curve.
Импортируйте вторую базовую кривую в Dynamo с помощью Select Model Element и CurveElement.Curve.
Если уменьшить масштаб графика и панорамировать его вправо, можно увидеть большую группу узлов. Это геометрические операции, которые создают решетчатую конструкцию на крыше, отображаемую в области предварительного просмотра Dynamo. Эти узлы генерируются с помощью функции Node to Code, описанной в разделе данного руководства, посвященного блокам кода.
Конструкция определяется тремя основными параметрами: Diagonal Shift, Camber и Radius.
Увеличьте масштаб отображения параметров этого графика. Можно выполнить их зондирование, чтобы получить другие выходные данные геометрии.
Если поместить узел DirectShape.ByGeometry в рабочую область, можно увидеть, что у него есть четыре порта ввода: geometry, category, material и name.
Геометрия представляет собой твердое тело, созданное на основе той части графика, с помощью которой формируется геометрия.
Входные параметры категории выбираются с помощью узла Categories. В данном случае используется параметр Structural Framing.
Входные данные материала выбираются с помощью вышеупомянутого массива узлов, хотя в данном случае проще задать значение по умолчанию.
Вернитесь в Revit после выполнения сценария Dynamo. Импортированную геометрию можно видеть на крыше в проекте. Это скорее не обобщенная модель, а элемент несущего каркаса. Параметрическая связь с Dynamo сохраняется.