Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo — это гибкая среда, предназначенная для совместного использования с широким спектром программ, однако изначально она разрабатывалась для использования в Revit. Средства визуального программирования обеспечивают мощные дополнительные возможности для информационного моделирования объектов строительства (BIM). Dynamo включает отдельный набор узлов, разработанных специально для Revit, а также библиотеки сторонних разработчиков из числа участников сообщества пользователей в сфере архитектуры и строительства. В этой главе рассматриваются основные принципы работы с Dynamo в Revit.
Надстройка Dynamo для Revit расширяет возможности информационного моделирования зданий за счет среды логики и данных, предоставляемой графическим редактором алгоритмов. Ее гибкие возможности в сочетании с обширной базой данных Revit позволяют перевести BIM на новый уровень.
В этой главе рассматриваются рабочие процессы Dynamo для BIM. Почти каждый раздел включает упражнения, так как знакомство с графическим редактором алгоритмов для BIM эффективнее всего проводится на практике. Но для начала изучите истоки этой программы.
Поскольку Revit и Dynamo постоянно обновляются, в какой-то момент используемая версия Revit может оказаться несовместимой с установленной на компьютере версией Dynamo для Revit. Ниже приведены сведения о том, какие версии надстройки Dynamo для Revit совместимы с программой Revit.
Благодаря упорству разработчиков и активному вкладу сообщества пользователей этот проект прошел большой путь от скромной надстройки до того, чем он является сейчас.
Изначально приложение Dynamo разрабатывалось как средство оптимизации рабочих процессов Revit для сферы архитектуры и строительства. Хотя в Revit для каждого проекта создается обширная база данных, пользователи со средним уровнем подготовки могут столкнуться с проблемами при доступе к информации за пределами интерфейса. Revit располагает полнофункциональным интерфейсом API, благодаря которому сторонние разработчики могут создавать специализированные инструменты. И программисты пользовались этим API на протяжении многих лет, однако стоит признать, что создание текстовых сценариев под силу далеко не всем. Благодаря Dynamo и понятному графическому редактору алгоритмов данные Revit становятся более доступными для пользователей с разными уровнями подготовки.
Используя базовые узлы Dynamo в сочетании со специализированными узлами Revit, пользователи могут существенно расширить параметрические рабочие процессы для обеспечения совместимости, выпуска документации, анализа и генерации объектов. Dynamo позволяет автоматизировать повседневные рабочие процессы и направить все силы проектировщиков на анализ и изучение проектов.
В редакторе проектов или семейств Revit перейдите в раздел «Надстройки» и выберите Dynamo.*
* Программа Dynamo будет выполняться только в том файле, в котором была открыта.
При открытии Dynamo в Revit отображается новая категория с именем Revit. Это мощное дополнение к пользовательскому интерфейсу, включающее узлы, специально предназначенные для использования в рабочих процессах Revit*.
* При использовании семейства узлов, предназначенного для Revit, график Dynamo будет работать только при открытии в Dynamo для Revit. Если график, предназначенный для работы в Dynamo для Revit, открыть в однопользовательской версии Dynamo, то все узлы Revit из него пропадут.
Поскольку Revit является платформой, которая обеспечивает широкие возможности по управлению проектами, параметрические операции в Dynamo могут быть сложными, а их расчет может занимать много времени. Если Dynamo требуется много времени для расчета узлов, возможно, следует воспользоваться функцией заморозки, чтобы приостановить выполнение операций Revit во время создания графика.
Подробные сведения о замораживании узлов см. в разделе Узлы и провода.
Приложение Dynamo изначально разрабатывалось для использования в сфере архитектуры и строительства, и наше постоянно растущее сообщество пользователей — это отличный ресурс для обучения и общения с отраслевыми экспертами. В сообщество пользователей Dynamo входят архитекторы, инженеры, программисты и проектировщики, которые любят изобретать и делиться своими изобретениями.
Dynamo — это проект с открытым исходным кодом, который постоянно развивается, и многие нововведения касаются Revit. Если вы пока что новичок, переходите на форум и начинайте задавать вопросы. Если вы программист и хотите принять участие в разработке Dynamo, посетите страницу репозитория GitHub. Кроме того, если вас интересуют библиотеки сторонних разработчиков, рекомендуем ознакомиться с Dynamo Package Manager. Многие из этих пакетов предназначены для сферы архитектуры и строительства. В этой главе рассматривается использование пакетов сторонних разработчиков для создания дополнительных панелей.
Разработчики Dynamo также ведут активный блог. Ознакомьтесь с последними публикациями, чтобы быть в курсе всех новостей.
В Dynamo можно создать массив элементов Revit с полным параметрическим управлением. Узлы Revit в Dynamo позволяют импортировать элементы из типовых геометрических объектов в категории определенных типов (например, стены и перекрытия). В этом разделе рассматривается импорт параметрически гибких элементов с адаптивными компонентами.
Адаптивный компонент — это гибкая категория семейства, которая хорошо подходит для генеративных приложений. После создания экземпляра можно построить сложный геометрический элемент, который определяется исходным положением адаптивных точек.
Ниже приведен пример адаптивного компонента на основе трех точек в редакторе семейств. Создается ферма, определяемая положением каждой адаптивной точки. В упражнении ниже с помощью этого компонента будет создана серия ферм по ширине фасада.
Адаптивный компонент — хороший пример применения взаимодействия. Задав опорные адаптивные точки, можно создать массив адаптивных компонентов. В свою очередь, при переносе этих данных в другие программы есть возможность свести геометрию к простым данным. Примерно такая же логическая схема используется при импорте и экспорте в программе Excel.
Предположим, что консультант по фасадным работам хочет узнать местоположение элементов фермы без разбиения готовой геометрии. При подготовке к производству консультант может указать местоположение адаптивных точек для регенерации геометрии в такой программе, как Inventor.
Рабочий процесс, который будет рассмотрен в упражнении ниже, позволяет получить доступ ко всем этим данным во время создания определения формирования элементов Revit. Благодаря этому можно объединить этапы создания концепции, разработки документации и производства в единый рабочий процесс. В результате формируется более интеллектуальный и эффективный механизм взаимодействия.
Еще одним способом импорта параметрической геометрии Dynamo в Revit является DirectShape. В целом элемент DirectShape и связанные классы отвечают за хранение созданных во внешних программах геометрических форм в документах Revit. Геометрия может включать в себя замкнутые тела или сети. Основной задачей DirectShape является импорт форм из других форматов данных, например IFC или STEP, когда недостаточно информации для создания реального элемента Revit. Как и при работе с форматами IFC и STEP, функция DirectShape подходит для импорта созданных в Dynamo геометрических объектов в проекты Revit в качестве реальных элементов.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Возьмите файл примеров из этого раздела (или продолжите работу с файлом 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.
Конструкция определяется тремя основными параметрами: Diagonal Shift, Camber и Radius.
Увеличьте масштаб отображения параметров этого графика. Можно выполнить их зондирование, чтобы получить другие выходные данные геометрии.
Если поместить узел DirectShape.ByGeometry в рабочую область, можно увидеть, что у него есть четыре порта ввода: geometry, category, material и name.
Геометрия представляет собой твердое тело, созданное на основе той части графика, с помощью которой формируется геометрия.
Входные параметры категории выбираются с помощью узла Categories. В данном случае используется параметр Structural Framing.
Входные данные материала выбираются с помощью вышеупомянутого массива узлов, хотя в данном случае проще задать значение по умолчанию.
Вернитесь в Revit после выполнения сценария Dynamo. Импортированную геометрию можно видеть на крыше в проекте. Это скорее не обобщенная модель, а элемент несущего каркаса. Параметрическая связь с Dynamo сохраняется.
Одной из мощнейших возможностей Dynamo является редактирование параметров на параметрическом уровне. Например, для управления параметрами массива элементов можно использовать генеративный алгоритм или результаты моделирования. Таким образом, в проекте Revit набору экземпляров из одного семейства можно присвоить пользовательские свойства.
Параметры экземпляра определяют апертуру панелей на поверхности крыши в диапазоне значений коэффициента апертуры от 0,1 до 0,4.
Параметры на основе типа применяются к каждому элементу на поверхности, так как они относятся к одному и тому же типоразмеру в семействе. Например, материал каждой панели может определяться параметром на основе типа.
Если вы уже настраивали семейства Revit, помните, что необходимо назначить тип параметра (строка, номер, размер и т. д.). При назначении параметров в Dynamo убедитесь, что выбран правильный тип данных.
Dynamo можно также использовать в сочетании с параметрическими зависимостями, определенными в свойствах семейства Revit.
Напоминаем, что в Revit существуют параметры типа и параметры экземпляра. Их все можно редактировать в Dynamo, но в данном упражнении рассматриваются параметры экземпляра.
Начиная с версии 0.8, в Dynamo практически не используются единицы измерения. Это позволяет модулю оставаться абстрактной средой визуального программирования. Узлы Dynamo, которые взаимодействуют с размерами Revit, будут ссылаться на единицы измерения проекта Revit. Например, если в Revit с помощью Dynamo задается параметр длины, число, указанное в качестве значения в Dynamo, будет соответствовать единицам измерения по умолчанию в проекте Revit. В приведенном ниже упражнении используются метры.
Для быстрого преобразования единиц измерения используйте узел Convert Between Units. Это удобный инструмент для динамического преобразования единиц измерения длины, площади и объема.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
В упражнении ниже используются метры.
В этом упражнении основное внимание уделяется редактированию элементов Revit без выполнения геометрических операций в Dynamo. В данном случае геометрия Dynamo не импортируется, а просто редактируются параметры в проекте Revit. Это упражнение базового уровня. Опытным пользователям Revit следует обратить внимание на то, что хотя речь идет о параметрах экземпляров формообразующего элемента, тот же принцип можно применить и к целому массиву элементов. Все действия выполняются с помощью узла Element.SetParameterByName.
Начнем с файла Revit, используемого в этом разделе в качестве примера. Несущие элементы и адаптивные фермы из предыдущего раздела были удалены. В этом упражнении мы рассмотрим параметрическую оснастку в Revit и манипуляции в Dynamo.
При выборе здания в разделе «Формообразующий элемент» в Revit на панели «Свойства» отображается массив параметров экземпляра.
В Dynamo можно извлечь параметры, выбрав целевой элемент.
Выберите формообразующий элемент здания с помощью узла Select Model Element.
Можно запросить все параметры этого формообразующего элемента с помощью узла Element.Parameters. Сюда входят параметры типа и экземпляра.
См. узел Element. Parameters, чтобы найти целевые параметры. Кроме того, можно выбрать имена параметров для редактирования, изучив панель свойств из предыдущего шага. В данном случае необходимы параметры, которые влияют на большие геометрические перемещения формообразующего элемента здания.
Измените элемент Revit, используя узел Element.SetParameterByName.
Используйте узел Code Block, чтобы определить список параметров, заключив каждый элемент в кавычки для обозначения строки. Кроме того, можно использовать узел List.Create с последовательностью узлов string, подключенных к нескольким входным параметрам, однако применение узла Code Block ускоряет и упрощает эту операцию. Убедитесь, что строка соответствует точному имени в Revit с учетом регистра:
{"BldgWidth","BldgLength","BldgHeight", "AtriumOffset", "InsideOffset","LiftUp"};
.
Кроме того, необходимо указать значения для каждого параметра. Добавьте шесть узлов Integer Slider в рабочую область и переименуйте их в соответствии с параметром в списке. Для каждого регулятора установите значение, показанное на изображении выше (сверху вниз — 62, 92, 25, 22, 8, 12).
Создайте еще один узел Code Block, содержащий список той же длины, что и имена параметров. В этом случае мы присваиваем имена переменным (без кавычек), которые создают входные данные для узла Code Block. Соедините регуляторы с соответствующими входными параметрами:
{bw,bl,bh,ao,io,lu};
.Соедините узел Code Block с входным значением Element.SetParameterByName*. Если установлен флажок «Автоматическое выполнение процесса», результаты отобразятся автоматически.
* В этом примере рассматриваются параметры экземпляра, а не параметры типа.
Как и в Revit, многие параметры зависят друг от друга. Существует множество комбинаций, когда геометрия может нарушаться. Эту проблему можно решить с помощью формул, заданных в свойствах параметров. Кроме того, аналогичный алгоритм можно воспроизвести с помощью математических операций в Dynamo (данную задачу можно выполнить в дополнение к этому упражнению).
С помощью следующей комбинации можно придать оригинальный дизайн формообразующему элементу здания: 100, 92, 100, 25, 13, 51.
Теперь посмотрим, как можно отредактировать фасад, используя аналогичный процесс.
Скопируйте график и рассмотрите остекление фасада, где будет находиться ферма. В данном случае нужно изолировать четыре параметра:
{"DblSkin_SouthOffset","DblSkin_MidOffset","DblSkin_NorthOffset","Facade Bend Location"};
.Кроме того, нужно создать числовые регуляторы и присвоить им имена соответствующих параметров. Первые три регулятора (сверху вниз) необходимо перенастроить на область [0,10], а последний (Facade Bend Location) — на область [0,1]. Эти значения в нисходящем порядке должны начинаться со следующих чисел (хотя сами они произвольные): 2,68; 2,64; 2,29; 0,5.
Задайте новый узел Code Block и присоедините регуляторы:
{so,mo,no,fbl};
.
Изменяя положение регуляторов в этой части графика, можно сделать остекление фасада значительно более прочным: 9,98; 10,0; 9,71; 0,31.
Версия Revit | Первая стабильная версия Dynamo | Последняя поддерживаемая версия Dynamo для Revit |
---|---|---|
В ниже описывается то, как в Dynamo используются ссылки на данные для создания элементов Revit. Для формирования нескольких адаптивных компонентов необходимо создать список списков, в каждом из которых будет три точки, соответствующие трем точкам адаптивного компонента. Это будет необходимо учитывать при управлении структурами данных в Dynamo.
Во рассматривается использование DirectShape для импорта геометрии Dynamo в проект Revit. С помощью этого метода можно назначить категорию, материал и имя импортированной геометрии, сохранив при этом параметрическую связь с графиком Dynamo.
Если уменьшить масштаб графика и панорамировать его вправо, можно увидеть большую группу узлов. Это геометрические операции, которые создают решетчатую конструкцию на крыше, отображаемую в области предварительного просмотра Dynamo. Эти узлы генерируются с помощью функции Node to Code, описанной в разделе данного руководства, посвященного .
По мере изучения новых возможностей, которые обеспечивают параметры редактирования, будет увеличиваться и количество элементов Revit, которые можно изменить с помощью Dynamo. Это может потребовать дополнительных вычислительных ресурсов , что, естественно, повлияет на скорость работы. При редактировании большого количества элементов можно воспользоваться узлом заморозки, чтобы приостановить выполнение операций Revit во время создания графика. Дополнительные сведения о замораживании узлов см. в разделе главы «Тела».
2013
2014 г.
2015
2016
2017
2018
2019
2020+
2.1.0 (Revit 2020 или более поздней версии теперь включает Dynamo и обновляется в соответствии с графиком обновлений Revit.)
Отсутствует
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 будет увеличен.
Параметры выпуска документации редактируются по тому же принципу, что и в предыдущих разделах. В этом разделе мы рассмотрим редактирование параметров, которые не влияют на геометрические свойства элементов, но необходимы для подготовки файла Revit к выпуску документации.
В упражнении ниже, чтобы создать лист Revit для документации, будет использоваться стандартный узел Deviation from Plane (отклонение от плоскости). Каждая панель в конструкции крыши, определенной параметрически, имеет собственное значение отклонения. Необходимо указать диапазон значений, используя цвет и составив спецификацию адаптивных точек, для передачи консультанту, инженеру или подрядчику, работающему с фасадом.
Узел Deviation from Plane вычисляет расстояние, на которое набор из четырех точек отклоняется относительно оптимально вписанной между ними плоскости. Это простой и быстрый способ проверки технологичности конструкции.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Начнем с открытия файла Revit для данного раздела (также можно продолжить работу с файлом из предыдущего раздела). В этом файле представлен массив панелей ETFE на крыше. Эти панели будут использоваться в данном упражнении.
Добавьте узел Family Types в рабочую область и выберите ROOF-PANEL-4PT.
Соедините этот узел с портом ввода узла All Elements of Family Type, чтобы перенести все элементы из Revit в Dynamo.
Запросите местоположение адаптивных точек каждого элемента с помощью узла AdaptiveComponent.Locations.
Создайте полигон по этим четырем точкам с помощью узла Polygon.ByPoints. Обратите внимание, что в Dynamo используется абстрактная версия системы панелей (без необходимости импорта всей геометрии элемента Revit).
Вычислите отклонение от плоскости с помощью узла Polygon.PlaneDeviation.
Просто в качестве дополнения, как и в предыдущем упражнении, укажите коэффициент апертуры каждой панели на основе отклонения от плоскости.
Добавьте узел Element.SetParameterByName в активное окно и соедините адаптивные компоненты с портом ввода element. Соедините узел Code Block, содержащий строку Aperture Ratio, с портом ввода parameterName.
Напрямую соединить результаты отклонения с портом ввода value невозможно, так как необходимо перенастроить значения на другой диапазон параметров.
С помощью узла Math.RemapRange перенастройте значения отклонения на область между 0,15 и 0,45 путем ввода
0.15; 0.45;
в узле Code Block.Соедините эти результаты с портом ввода value узла Element.SetParameterByName.
Вернувшись в Revit, можно примерно оценить изменение в апертуре на поверхности.
При увеличении масштаба становится понятно, что вес замкнутых панелей направлен к углам поверхности. Незамкнутые углы направлены вверх. Углы представляют собой участки более значительных отклонений, в то время как выпуклость имеет минимальную кривизну, так что все логично.
Указание коэффициента апертуры не дает четкой картины отклонения панелей на крыше. Кроме того, изменяется геометрия самого элемента. Предположим, нужно просто изучить отклонение с точки зрения технической осуществимости изготовления. Для этого в документации можно окрасить панели в различные цвета в зависимости от диапазона отклонений. Это можно сделать при помощи следующих шагов, которые очень похожи на действия, описанные выше.
Удалите узел Element.SetParameterByName и узлы, соединенные с его портами ввода, а затем добавьте узел Element.OverrideColorInView.
Добавьте узел Color Range в рабочую область и соедините его с портом ввода color узла Element.OverrideColorInView. Для создания градиента необходимо также соединить значения отклонения с цветовым диапазоном.
При наведении указателя на порт ввода value видно, что значения для этого порта должны быть в диапазоне от 0 до 1. Только в этом случае можно будет сопоставить цвета со значениями. Необходимо перенастроить значения отклонения, задав этот диапазон.
С помощью узла Math.RemapRange перенастройте значения отклонения от плоскости, задав диапазон от 0 до 1. (Примечание. Чтобы задать исходную область, также можно использовать узел MapTo.)
Соедините результаты с портом ввода узла Color Range.
Обратите внимание, что в результате получается диапазон цветов, а не диапазон чисел.
Если используется режим «Вручную», нажмите кнопку Запуск. С этого момента вы, скорее всего, сможете без проблем работать в автоматическом режиме.
Вернувшись в Revit, видим значительно более наглядный градиент, характеризующий отклонение от плоскости на основе цветового диапазона. Но что, если требуется изменить цвета? Обратите внимание, что минимальные значения отклонения обозначены красным цветом, что не вполне логично. Необходимо, чтобы максимальному отклонению соответствовал красный, а минимальному — более спокойный цвет. Вернемся в Dynamo и устраним этот недостаток.
Используя узел Code Block, добавьте два числа в две разные строки:
0;
и255;
.Создайте красный и синий цвета, соединив соответствующие значения с двумя узлами Color.ByARGB.
Создайте список из этих двух цветов.
Соедините этот список с портом ввода colors узла Color Range и посмотрите, как при этом изменится пользовательский цветовой диапазон.
Теперь, вернувшись в Revit, можно получить более наглядное представление об областях максимального отклонения в углах. Помните, что этот узел служит для переопределения цвета на виде, поэтому он может быть очень полезен в случае, когда в наборе чертежей есть лист, предназначенный для определенного типа расчета.
При выборе в Revit одной панели ETFE отображаются четыре параметра экземпляра: XYZ1, XYZ2, XYZ3 и XYZ4. После создания все они будут пустыми. Это текстовые параметры, для которых требуется задать значения. С помощью Dynamo создадим местоположения адаптивных точек для каждого параметра. Это способствует взаимодействию в случаях, когда геометрический объект необходимо отправить инженеру или консультанту по фасадам.
На образце листа представлена большая пустая спецификация. Параметры XYZ являются общедоступными параметрами в файле Revit, благодаря чему их можно добавить в спецификацию.
Если увеличить масштаб, становится видно, что параметры XYZ еще не заполнены. Первые два параметра автоматически заполняются данными из Revit.
Для ввода этих значений выполним сложную операцию со списком. Сам график довольно прост, но его логика строится на основе сопоставления списков, которое рассматривалось в разделе, посвященном спискам.
Выберите все адаптивные компоненты с двумя узлами.
Извлеките местоположение каждой точки с помощью узла AdaptiveComponent.Locations.
Преобразуйте эти точки в строки. Следует помнить, что параметр является текстовым, поэтому входные данные должны иметь правильный тип.
Создайте список из четырех строк, которые определяют изменяемые параметры: XYZ1, XYZ2, XYZ3 и XYZ4.
Соедините этот список с портом ввода parameterName узла Element.SetParameterByName.
Соедините узел Element.SetParameterByName с портом ввода combinator узла List.Combine. Соедините адаптивные компоненты с портом ввода list1. Соедините узел String from Object с портом ввода list2.
В данном случае мы сопоставляем списки, так как вводим четыре значения для каждого элемента, что создает сложную структуру данных. Узел List.Combine управляет операцией, выполняемой на один шаг вниз по иерархии данных. Именно поэтому порты ввода element и value узла Element.SetParameterByName остаются пустыми. Вложенные списки входных параметров узла List.Combine соединяются с пустыми портами ввода узла Element.SetParameterByName в соответствии с порядком их подсоединения.
При выборе панели в Revit становится видно, что для каждого параметра есть строковые значения. В реальном проекте для создания точки (X,Y,Z) использовался бы более простой формат. Это можно сделать с помощью строковых операций в Dynamo, но в рамках данного раздела этот метод не рассматривается.
Вид образца спецификации с заполненными параметрами.
Каждая панель ETFE теперь имеет координаты XYZ, введенные для каждой адаптивной точки и соответствующие углам каждой изготавливаемой панели.
Ранее мы рассмотрели редактирование базового формообразующего элемента здания. Теперь мы предлагаем подробнее изучить взаимодействие Dynamo и Revit путем редактирования большого количества элементов за один подход. Адаптация усложняется при увеличении масштаба, так как структура данных требует более сложных операций со списками. Однако основные принципы работы при этом остаются прежними. Рассмотрим возможности расчета с помощью набора адаптивных компонентов.
Предположим, что вы создали набор адаптивных компонентов и хотите отредактировать параметры на основании местоположений точек. Например, точки могут определять параметр толщины, который связан с площадью элемента. Кроме того, они могут отвечать за параметр непрозрачности, связанный с уровнем инсоляции за год. Dynamo позволяет связать расчет с параметрами за несколько простых шагов. Основы этого процесса будут приведены в упражнениях ниже.
Опросите адаптивные точки выбранного адаптивного компонента с помощью узла AdaptiveComponent.Locations. Это позволяет выполнить расчет для абстрагированной версии элемента Revit.
Получив местоположение точек адаптивных компонентов, можно запустить несколько расчетов для элемента. Например, адаптивный компонент по четырем точкам позволяет изучить отклонение от плоскости для заданной панели.
Используя повторное сопоставление, можно сопоставить набор данных с диапазоном параметров. Это основной инструмент параметрического моделирования, который вы сможете изучить подробнее, выполнив упражнение ниже.
В Dynamo местоположения точек адаптивных компонентов можно использовать для создания плоскости наилучшего вписывания для каждого элемента. Кроме того, можно запросить положение солнца в файле Revit и изучить относительную ориентацию плоскости к солнцу по сравнению с другими адаптивными компонентами. Давайте выполним это путем создания алгоритмической кровли в упражнении ниже.
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
В данном упражнении будут подробнее рассмотрены техники из предыдущего раздела. Вам понадобится определить параметрическую поверхность на основе элементов Revit, создать экземпляры адаптивных компонентов по четырем точкам, а затем отредактировать их на основании ориентации относительно солнца.
Для начала выберите два ребра с помощью узла Select Edge. Два ребра представляют собой длинные пролеты атриума.
Объедините два ребра в один список, используя узел List.Create.
Создайте поверхность между двумя ребрами с помощью узла Surface.ByLoft.
В узле Code Block задайте диапазон от 0 до 1 с 10 равномерно распределенными значениями:
0..1..#10;
.Соедините Code Block с портами ввода \u\ и v узла Surface.PointAtParameter, а также соедините узел Surface.ByLoft с портом ввода surface. Щелкните узел правой кнопкой мыши и задайте для параметра Переплетение значение Векторное произведение. На поверхности появится сетка из точек.
Эта сетка из точек служит в качестве управляющих точек для параметрической поверхности. Необходимо извлечь положения u и v каждой из этих точек, чтобы ввести их в параметрическую формулу и сохранить существующую структуру данных. Это можно сделать, запросив местоположения параметров только что созданных точек.
Добавьте узел Surface.ParameterAtPoint в рабочую область и соедините порты ввода, как показано выше.
Запросите значения u для этих параметров с помощью узла UV.U.
Запросите значения v для этих параметров с помощью узла UV.V.
В выходных данных отображаются соответствующие значения u и v для каждой точки поверхности. Вы получили диапазон от 0 до 1 для каждого значения, обеспечена правильная структура данных, и можно применять параметрический алгоритм.
Добавьте узел Code Block в рабочую область и введите код:
Math.Sin(u*180)*Math.Sin(v*180)*w;
. Это параметрическая функция, которая создает синусоидальную выпуклость на основе плоской поверхности.Соедините UV.U с входным параметром u и UV.V с входным параметром v.
Порт ввода w представляет амплитуду формы, поэтому к нему нужно присоединить узел Number Slider.
Теперь у вас есть список значений в соответствии с алгоритмом. Используйте этот список для перемещения точек вверх по оси +Z. Используя узел Geometry.Translate, соедините Code Block с портом ввода zTranslation, а Surface.PointAtParameter — с портом ввода geometry. В области предварительного просмотра Dynamo отображаются новые точки.
Наконец, создайте поверхность с помощью узла NurbsSurface.ByPoints, соединив узел из предыдущего шага с портом ввода points. В результате получается параметрическая поверхность. Перетаскивайте регулятор, чтобы уменьшить или увеличить выпуклость.
Теперь нам нужно найти способ разбить полученную параметрическую поверхность на панели, чтобы разместить адаптивные компоненты по четырем точкам в формате массива. В Dynamo нет готовой функции для работы с панелями, поэтому обратимся к сообществу пользователей за полезными пакетами Dynamo.
Перейдите к разделу «Пакеты» > «Поиск пакета...».
Найдите LunchBox и скачайте файл LunchBox for Dynamo. Это очень полезный набор инструментов для подобных операций с геометрией.
После скачивания вы получите полный доступ к пакету LunchBox. Найдите Quad Grid и выберите LunchBox Quad Grid By Face. Соедините параметрическую поверхность с портом ввода surface и установите деления U и V на 15. В области предварительного просмотра Dynamo должна отобразиться поверхность с прямоугольными панелями.
Если вас заинтересовала ее настройка, дважды щелкните узел Lunch Box и просмотрите параметры.
Вернитесь в Revit, чтобы узнать, какой адаптивный компонент используется в этой программе. Нет необходимости его повторять, но это панель крыши, которая будет использоваться в качестве экземпляра массива. Это адаптивный компонент по четырем точкам, который является грубым представлением системы ЭТФЭ. Апертура центральной полости находится на параметре ApertureRatio.
Так как вы собираетесь создать большое количество экземпляров геометрии в Revit, убедитесь, что решатель Dynamo находится в ручном режиме.
Добавьте узел Family Types в рабочую область и выберите ROOF-PANEL-4PT.
Добавьте узел AdaptiveComponent.ByPoints в рабочую область, соедините порт вывода Panel Pts узла LunchBox Quad Grid by Face с портом ввода points. Соедините узел Family Types с портом ввода familySymbol.
Нажмите кнопку Запуск. Для создания геометрии программе Revit потребуется немного времени на раздумья. Если это занимает слишком много времени, слегка уменьшите значение 15 в узле Code Block. Это уменьшит количество панелей на крыше.
Примечание. Если Dynamo требуется много времени для расчета узлов, возможно, вам следует воспользоваться функцией заморозки, чтобы поставить на паузу выполнение операций Revit во время создания графика. Дополнительные сведения о замораживании узлов см. в разделен «Замораживание» в главе «Тела».
В Revit мы видим массив панелей на крыше.
Увеличив масштаб, можно детально рассмотреть свойства их поверхности.
Используя результаты, полученные на предыдущем шаге, настройте апертуру каждой панели с учетом инсоляции. Увеличьте масштаб в Revit и выберите одну панель, чтобы увидеть на панели свойств параметр Коэффициент апертуры. В настройках семейства задан диапазон апертуры от 0,05 до 0,45.
Если включить траекторию солнца, можно увидеть текущее положение солнца в Revit.
С помощью узла SunSettings.Current можно задать положение солнца в качестве опорного значения.
Соедините узел SunSettings с узлом Sunsetting.SunDirection, чтобы получить вектор солнца.
На основе значения, полученного из порта вывода Panel Pts, использованного для создания адаптивных компонентов, выполните аппроксимацию плоскости для компонента с помощью узла Plane.ByBestFitThroughPoints.
Запросите нормаль этой плоскости.
Для расчета ориентации инсоляции используйте скалярное произведение. Скалярное произведение — это формула, которая определяет, насколько параллельны или не параллельны два вектора. Чтобы приблизительно смоделировать ориентацию инсоляции, вы сравниваете нормаль плоскости каждого адаптивного компонента с вектором солнца.
Извлеките абсолютное значение результата. Это гарантирует точность скалярного произведения, если нормаль плоскости повернута в обратном направлении.
Нажмите кнопку Запуск.
Скалярное произведение предоставляет широкий диапазон чисел. Нужно использовать их относительное распределение, однако необходимо объединить числа в соответствующем диапазоне редактируемого параметра Коэффициент апертуры.
Узел Math.RemapRange отлично для этого подходит. Он извлекает список входных данных и сопоставляет его пределы с двумя целевыми значениями.
Задайте целевые значения 0,15 и 0,45 с помощью узла Code Block.
Нажмите кнопку Запуск.
Соедините сопоставленные значения с узлом Element.SetParameterByName.
Соедините строку Aperture Ratio с портом ввода parameterName.
Соедините адаптивные компоненты с портом ввода element.
Нажмите кнопку Запуск.
Уменьшив масштаб в Revit, можно изучить влияние ориентации солнца на апертуру панелей ЭТФЭ.
При увеличении изображения видно, что панели ЭТФЭ более закрыты по направлению солнца. Цель данного упражнения — уменьшить перегрев из-за инсоляции. Если требуется увеличить проникновение света в помещение на основании инсоляции, просто смените область на Math.RemapRange.