Dynamo delay что это
DYNAMO: ПРОДВИНУТЫЙ УРОВЕНЬ. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ. ЧАСТЬ 1
Пожаловаться на статью?
Dynamo — это бесплатное дополнение для Autodesk Revit. В нем можно “научить” Revit новым функциям без написания сложного кода. Dynamo ускоряет работу и автоматически делает то, что Revit не умеет: переименовывает помещения, оси, кусты свай, экспортирует данные в Excel и импортирует из него, считает теплопотери здания, сравнивает файлы, подсчитывает квартирографию, ведомость отделки и множество других вещей.
В бесплатных видеоуроках по Dynamo вы научитесь всем нюансам написания дополнений. Изучив материал, вы ускорите свою производительность на 15-200%. Главная ценность уроков — отдельная глава с написанием дополнений для ежедневных задач: поиск элементов, перенумерация элементов, случайная расстановка объектов и другое.
Расширение функционала Dynamo
Что делать, если для решения задачи не хватает стандартных нодов. Поиск пакета нодов в интернете. Использование возможностей языка Design Script для работы с геометрией. Использование языка IronPython и Revit API для решения любой задачи.
Code Block, Python Script
Создание пользовательского нода
Объединение полезной, часто используемой группы нодов в пользовательский узел (нод). Создание собственной категории нодов. Назначение входных и выходных слотов.
Curve.PointsAtChordLengthFromPoint, Circle.ByCenterPointRadius, Code Block, Circle.ByCenterPointRadius, Rectangle.ByWidthLength, PolyCurve.Curves, Input, Output
Публикация и установка пакетов
Для того, чтобы поделиться своими нодами, можно опубликовать собственный пакет нодов. Так делают пользователи Dynamo по всему миру, поэтому многие полезные пакеты нодов можно бесплатно скачать и использовать. При необходимости нод из пакеты можно “раскрыть”.
LaunchBox for Dynamo, archi-lab.net, Clockwork for Dynamo, Rhynamo, BumbleBee
Синтаксис Design Script
Возможности языка Design Script. Ресурсы для изучения синтаксиса и возможностей.
Создание функций
Понятие функции. Создание функций на Design Script. Возможность применения созданной функции во всём текущем скрипте Dynamo.
Нод Python Script
Описание нода, с помощью которого можно обращаться к Revit на языке программирования Python. Входные и выходные слоты. Тело скрипта.
Python Script, Python Script from String, File.ReadText
Синтаксис Python
Основные правила написания кода. Цвета операторов, переменных и методов, текста, чисел и комментариев.
Простейшие операции
Основы работы с числовым и текстовым форматом. Назначение переменных. Вывод результата работы скрипта.
Python Script, Code Block
Анализ предупреждений
Обнаружение и анализ ошибок в коде. Пример предупреждения при попытке сложения переменных с разными типами данных.
Python Script, Code Block
Операторы условия if, elif, else
Простой способ проверки различных условий с помощью трёх операторов условий: IF (“если”), ELIF (“если нет, то если”) и ELSE (“если нет, то”). Пример сравнения двух чисел.
Python Script, Code Block
Операторы and, or
Задание нескольких условий одной строкой с помощью логических операторов AND (“и”) и OR (“или”). Пример определения того, попадает ли заданное число в диапазон двух других чисел.
Python Script, Code Block
Операторы in, not
Задание условий с помощью оператора IN (“в”), проверяющего нахождение идентичного элемента в списке и оператора отрицания NOT (“не”).
Python Script, Code Block
Оператор цикла for
Обработка списка с помощью цикла FOR (“для”), который работает непосредственно с элементами списка. Проверка условия для каждого элемента. Добавление элементов в список.
Python Script, Code Block
Оператор цикла while
Обработка списка с помощью цикла WHILE (“пока”), который работает до тех пор, пока соблюдается заданное условие. Предупреждение зацикливания программы.
Python Script, Code Block
DYNAMO в REVIT
DYNAMO — инструмент для визуального программирования
Процесс проектирования можно представить, как пошаговый набор действий, выполняемых по определенному алгоритму. В этом же ключе работает система DYNAMO. Она представляет алгоритмы в наглядном формате, доступном для понимания пользователями без специальных знаний в области программирования.
Визуальное программирование — современная альтернатива текстовым форматам программирования (с использованием языков программирования). Вместо ввода текста со сложными и строгими правилами, достаточно соединять предварительно разработанные готовые узлы вместе, последовательно добиваясь нужной информации. Каждый узел уже содержит в себе куски кода, которые пришлось бы создавать в процессе классического программирования — получается некий конструктор алгоритма.
Динамо встроен в программу Ревит в виде модуля, позволяющего параллельно работать в двух этих системах, создавая в Динамо алгоритмы действий, совершаемые сразу же в Ревите.
Кнопки Dynamo в Ревит располагаются на вкладке Управление в блоке Визуальное программирование.
Словарь Dynamo
Ноды — блоки или узлы, из которых собирается скрипт (программный код), сохраняемый в отдельном файле с расширением dyn.
В интерфейсе Динамо все ноды представлены в библиотеке с левой стороны рабочего окна, и распределены по категориям и подкатегориям. Для поиска нужного нода необходимо начать вводить в стоку поиска первые символы названия нода — будут появляться подходящие варианты.
Работа с нодами
Ноды соединяются между собой связями (проводами). В нодах есть входные и выходные порты, куда подключаются связи. Эти порты называются слоты.
Переименование нодов
Для смыслового упорядочивания нодов их можно переименовывать. Для этого два раза щелкаем на шапку нода.
Создание групп из нодов
Если несколько нодов решают одну подзадачу в скрипте, их можно объединить в группу. Для этого ноды выделяются рамкой и правой кнопкой мыши вызывается контекстное меню, в котором выбирается команда Создать группу. У группы можно редактировать заголовок, цвет фона, размер шрифта. Кроме того, в группу можно добавить один или несколько нодов, ноды и группу можно разгруппировать (команды в контекстном меню по правой кнопке мыши).
Создание в Dynamo своих индивидуальных нодов
В Динамо можно пользоваться не только стандартными нодами, имеющимися в дереве выбора, но и создавать свои собственные из нескольких стандартных. Например, если часть скрипта из нескольких нодов часто используется в проекте, эти ноды можно выделить и из контекстного меню выбрать функцию «Создать собственный нод». Появится единственный нод, повторяющий функции нескольких. Его можно переименовать, а также настроить отображение входных и выходных слотов.
Типы данных
Текстовый тип данных (строка)
Текст в Dinamo может создаваться разными способами. Подробнее об операциях со строками читайте на этой странице:
Числовой формат данных
Числа в Динамо, как и строки, создаются различными видами нодов:
Если требуются целые числа, используются ноды Integer и Integer Slider.
Для перевода символов из текстового формата в числовой используется нод ToNumber.
Последовательности чисел создаются обычно в CodeBlock подобной записью: 0..10..2 (где 1 — первое число последовательности, 10 — последнее число последовательности и 2 — шаг чисел)
Последовательность чисел в Динамо можно создать также с помощью специального нода:
Примеры автоматизации работы с Dynamo
Система Dynamo поддерживает собственный язык программирования Design Script, кодить на котором возможно внутри универсального нода Code Block. С помощью такой записи алгоритма можно сделать программу более эффективной.
Dynamo Revit. Основы визуального программирования
Dynamo Studio — это среда визуального программирования, которая позволяет проектировщикам изучать возможности параметрического концептуального проектирования и автоматизировать выполнение задач.
Dynamo — простой и эффективный инструмент для всех, кто имеет дело с информационными моделями зданий в Autodesk Revit: инженеров-проектировщиков, архитекторов, дизайнеров, BIM-менеджеров и координаторов и сметчиков.
Dynamo заслуженно пользуется большой популярностью как у профессионалов так и у новичков, потому что позволяет быстро и качественно автоматизировать рутинные операции при работе с элементами и данными модели. Приложение является бесплатным встроенным плагином к программной среде Autodesk Revit и представляет из себя интерфейс для графического программирования.
Знание особенностей надстройки Dynamo для Autodesk Revit и её преимуществ при создании информационных моделей — это мощный толчок к профессиональному развитию в сфере BIM-технологий.
Прохождение курса позволит стать ещё более компетентным и востребованным специалистом.
Чему Вы научитесь:
— автоматизировать работу на всех этапах проектирования;
— сокращать ошибки при рутинной разработке BIM-моделей;
— создавать сложные параметрические формы в среде Revit;
— грамотно управлять штатным функционалом плагина Dynamo;
— оптимально адаптировать рабочий процесс касательно BIM-модели здания в среде Autodesk Revit;
— пользоваться инструментами для визуального программирования и автоматизации работы с 3D-моделями;
— наиболее востребованным алгоритмам (работа со строками, математические данные);
— взаимодействовать с внешними источниками и библиотеками данных;
— азам программирования на языке Python для Dynamo.
Опытный преподаватель-практик строит обучение таким образом, что у Вас практически не останется вопросов, а знания будут заложены последовательно и основательно. Но если вопросы все же возникнут, Вы сможете получить консультацию куратора на протяжении всего курса.Знания, которые передаются нами в формате видеокурсов, гарантированно соответствуют очным занятиям по объему материалов, степени их актуальности, качеству и ценности для любого востребованного специалиста.
По завершению курса выдается удостоверение повышения квалификации Университета ИТМО и международный сертификат компании Autodesk о прохождении курса «Autodesk Dynamo Studio».
Создание простейшего скрипта в Dynamo. Переименование осей
Сегодня мы затронем интересную тему визуального программирования, а именно познакомимся с интерфейсом Dynamo и создадим простой скрип по переименованию осей в проекте.
Введение
Интерфейс Dynamo
На вкладке Управление – Визуальное программирование расположены основные две кнопки: «Dynamo» и «Dynamo Проигрыватель».
Вторая позволяет запускать скрипты с одного нажатия, не открывая интерфейс Dynamo.
Кликнув на первую кнопку «Dynamo», мы перейдем в рабочее пространство Dynamo, которое условно разбито на 2 области. Слева находится палитра с блоками, которые именуются нодами и представляют собой упакованный кусок кода. Если развернуть вкладки, то увидим, что все ноды сгруппированы по определенным критериям. А справа от этой панели находится основное рабочее пространство, куда перетаскиваются необходимые ноды, последовательно связываются между собой, формируя наше правило – скрипт. В самой нижней панели расположена кнопка воспроизведения скриптов, и у нее есть два варианта работы: запуск скрипта вручную либо же в автоматическом режиме.
Создание скрипта
Основная цель статьи – это повторить последовательность простых нодов, которые в своей совокупности позволят в автоматическом режиме переименовать необходимые оси в проекте.
Структура построения нашего скрипта следующая:
Для того чтобы переименовать оси, мы должны в левом списке нодов найти нод «Categories», вытянуть его в рабочее пространство и затем выбрать из списка категорию «Оси». Последовательно к нему подключаем таким же образом следующие ноды:
«All Elements of Category» отвечает за вызов всех элементов выбранной категории в проекте.
«Element.SetParameterByName» записывает новый параметр имени в элементы категории «Оси».
После того, как все ноды связаны указанным образом, запускаем скрипт с помощью кнопки «Запуск» на нижней панели, и видим полученный результат.
Таким образом, вы можете использовать созданную последовательность нодов для переименования не только осей, но и, например, уровней, выбрав в первом ноде соответствующую категорию.
DynamoBIM.Ru
Кто сталкивался с такой проблемой, когда Dynamo необходимо обработать большой массив данных, то программа просто зависает на процессе обработки? То есть сама программа чем-то вроде как занимается, но результата можно ждать вечно – его не будет.
В “диспетчере задач” Я вижу сначала то, как Dynamo занимает всю оперативную память, а потом будь-то бы срабатывает какая-то защита и оперативная память под процесс Dynamo не превышает 1 гб (1024 мб). Причём даже если наивысший приоритет процессу задать.
Понятно, что скорее всего не хватает оперативной памяти, её всего 8 гб на борту, учитывая, что 2 гб забирает себе винда.
Печально, если Dynamo так плохо работает с оперативной памятью. Потому что я ожидал, что программа может и бо’льшие массивы данных обрабатывать, не запинаясь в процессе.
Чуть позже скину файл примера. Просто сейчас нет возможности. Может быть я просто что-то не так сделал, не оптимизировал так, как это необходимо.
Динамо таки плох для обработки больших массивов данных. Постоянно приходится думать об оптимизации алгоритмов и облегчении способов фильрации. Особенно плохо Ревит (а не динамо) работает с большим количеством транзакций.
Вывод: если надо что-то действительно серьезное – ситуацию немножко ускорит python for revit, revitpythonshell, или любая другая консоль Питона. Существенное улучшение в производительности добавит только C#
В данном случае я использую DynamoSandbox. То есть без связки с ревитом.
Таким образом, я полагаю, тут безвыходная ситуация
Так как пример скинуть не могу ближайшее время, то дам ссылку на мою предыдущую тему, где очень хорошо описывается моя задача:
ИваСерж, А Вам спасибо, что в той теме дали решение тогда решение, которое впоследствии я внедрил и оно заработало. Просто я с очень большими перерывами возвращаюсь к этому проекту.
Обидно будет, если вся работа в динамо насмарку. Придётся тогда пробовать Grasshopper для отрисовки геометрии. Может быть там с этой проблемой дела обстоят лучше. И потом уже думать как эту геометрию переносить в ревит, если до этого дойдёт.
Если речь идет о скрипте из прошлой темы, то я сразу видел проблемы с оптимизацией.
Самое простое решение – отказаться от построения “красивой” геометрии в Динамо. Т.е. Динамо тратит очень большую часть памяти на просчет и рендер графики. От этой фигни можно уйти и пользоваться для отрисовки не нодом Line.ByStartPointEndPoint, а методами РевитАПИ для построения линий непосредственно в Ревите. Как ни странно, Ревит геометрию построит быстрее, чем с той же задачей справится Динамо.
Если готовы заниматься таким, то займемся прорисовкой линий через АПИ плотнее – там свои нюансы. Для построения линии модели помимо двух точек Ревит хочет ещё и плоскость, но это другая тема….
Для большой модели, там где полигонов в мэше не 16, как в примере прошлой темы, а за несколько тысяч, я использую облегчённую версию скрипта. Там он не строит нижнюю сетку вообще. Таким образом, я рассчитывал сильно снизить нагрузку на программу. Она, конечно, не делает всё идеально, но то я уже ручками могу дорисовать в том же AutoCad (хотя и отвратительно это признавать).
Я бы с радостью отказался от рендера в самом динамо. Он мне нафиг не нужен. На данном этапе мне достаточно просто сохранить итоговую геометрию в sat файл.
Но всё же, мне кажется, дело не в отображении геометрии. Ведь когда я испытывал геометрию, которая считалась на моём компе минут 15, то после прорисовки я её спокойно вращал во вьюпорте. То есть, как я думаю, проблем с отображением геометрии нет, если я её могу поворачивать без тормозов. Но может быть я что-то не понимаю…
Вот пример облегчённого скрипта.
https://ru.files.fm/u/3hjjf6pn
В архиве: скрипт dyn, dxf-файл с полигонами, sat-файл куда идёт сохранение
5000 полигонов у меня строило. Но в этот раз, видимо, больше. Нужно глянуть…