Вступление

Для проcмотра видеоурока заполните анкету
или войдите

Зачем нужно дорабатывать Revit и почему удобно это делать с помощью Dynamo. Типы и примеры решаемых задач.


Установка Dynamo

Для проcмотра видеоурока заполните анкету
или войдите

Скачивание и установка Dynamo и Dynamo Player. Запуск из Revit и Revit Viewer.

http://dynamobim.org/


установка Dynamo, dynamobim.org, Dynamo Studio, Revit, Revit Viewer, Dynamo Player, первый запуск

Интерфейс Dynamo

Для проcмотра видеоурока заполните анкету
или войдите

Начальный экран Dynamo: работа с файлами и справочные материалы. Что нужно знать о библиотеке нодов,  рабочем пространстве скрипта и основном меню. Установка бесплатных пакетов нодов.


начальный экран, создание файла, Справка, рабочее пространство, ноды, библиотека нодов, поиск нодов, кнопки быстрого доступа, меню, настройка отображения, Пакеты

Основные понятия визуального программирования

Для проcмотра видеоурока заполните анкету
или войдите

Определения визуального программирования, скриптов и нодов. Особенности работы с нодами.

Ноды: Point.ByCoordinates, Code Block, Number Slider


терминология, визуальное программирование, Dynamo, скрипт, нод, узел, программный код, интерфейс пользователя

Типы нодов

Для проcмотра видеоурока заполните анкету
или войдите

Структура библиотеки нодов. Основные форматы, используемые в Revit и Dynamo. Ноды для ввода данных.

Ноды:

String, Number, Number Slider, Boolean, Watch, Code Block
Категории: Core (Input), Geometry, Revit


библиотека нодов, категории нодов, поиск нодов, формат данных, форматы ввода, строковый формат, строка, числовой формат, число, условие, Design Script

Создание строк

Для проcмотра видеоурока заполните анкету
или войдите

Ввод данных в текстовом формате разными способами. Анализ текстовой информации.

Ноды:

String, Code Block, String from Object, Watch
Категории: Core (Input)


строковый формат, строка, создание строки, перевод в строковый формат, просмотр результатов

Операции со строками

Для проcмотра видеоурока заполните анкету
или войдите

Некоторые ноды для работы со строками: определение количества символов, поиск и замена подстроки в строке. Сложение строк разными способами.

Ноды:

String, Code Block, Watch, String.Length, String.Contains, Boolean, String.Replace, String.Concat
Категории: Core (String)


длина строки, поиск подстроки, замена подстроки, сложение строк, Design Script, переменная, параметризация

Создание чисел

Для проcмотра видеоурока заполните анкету
или войдите

Ноды для создания вещественных и целых чисел. Создание последовательностей чисел разными способами.

Ноды:

Number, Number Slider, Code Block, Integer Slider, String.ToNumber, String, String.Length, Sequence
Категории: Core (Input)


число, вещественные числа, целые числа, создание числа, перевод строки в число, последовательность чисел, шаг последовательности

Операции с числами

Для проcмотра видеоурока заполните анкету
или войдите

Некоторые ноды для работы с числами: математические функции и логические операторы. Использование функций на Design Script в Code Block.

Ноды:

Math.Abs, Code Block, Math.Cos, Math.Round
Категории: Core (Math), Operators, Math.Random, Number Slider

математические операции, логические операторы, модуль числа, функции Design Script, переменные в Code Block, тригонометрические функции, округление чисел, генерация случайных чисел

Создание списков

Для проcмотра видеоурока заполните анкету
или войдите

Определение списков в Dynamo. Различные способы их создания.

Ноды:

Sequence, List.Create, Code Block
Категории: Core (List)


массив, список, вложенность списка, изменение количества входных слотов

Операции со списками

Для проcмотра видеоурока заполните анкету
или войдите

Некоторые ноды для работы со списками: объединение, транспонирование, уравнивание списков. Определение количества элементов в списке.

Ноды:

List.Join, Code Block, List.Transpose, Flatten, Count
Категории: Core (List)

объединение списков, транспонирование, уравнивание списков, определение количества элементов

Сортировка и фильтрация

Для проcмотра видеоурока заполните анкету
или войдите

Стандартные возможности по сортировке и фильтрации элементов списка. Сортировка и фильтрация чисел и строк.

Ноды:

List.Sort, Code Block, String.ToNumber, List.FilterByBoolMask, ==, Watch, String, String.Contains
Категории: Core (List)

сортировка списка, сортировка чисел, сортировка строк, фильтрация списка, маски элементов

Выбор элементов модели

Для проcмотра видеоурока заполните анкету
или войдите

Различные способы выбора элементов модели: выбор экземпляров определённой категории или типа, выбор всех элементов на уровне или любом активном виде, выбор отдельных элементов с помощью мыши. Получение текущего проекта и пути к его файлу.

Ноды:

Categories, All Elements of Category, Watch, FamilyInstance.Type, Family Types, All Elements of Family Type, Wall Types, Floor Types, Levels, All Elements of Level, Views, Select Model Element, Select Model Elements, All Element in Active View, Document.Current, Document.FilePath
Категории: Revit


категории Revit, выбор категории, все элементы категории, экземпляра, типы, типоразмеры, типы стен, типы перекрытий, уровни, все элементы уровня, виды, выбор отдельных элементов, идентификатор элемента, активный вид, текущий документ, путь проекта

Параметры элементов модели

Для проcмотра видеоурока заполните анкету
или войдите

Получение списка параметров экземпляров и типов элементов. Определение значений конкретных параметров. Изменение параметра на примере ширины окна.

Ноды:

Select Model Element, Element.Parameters, Watch, FamilyInstance.Type, Element.GetParameterValueByName, Code Block, Element.SetParameterByName
Категории: Revit

Список параметров элемента, параметры элемента, значение параметра, изменение параметров

Запись в Excel

Для проcмотра видеоурока заполните анкету
или войдите

Возможности стандартного нода для записи двумерных массивов данных в таблицу XLSX. Выбор файла и листа, формирование и изменение ячеек.

Ноды:

Excel.WriteToFile, Code Block, File Path
Категории: Office


внешние форматы, Excel, таблица, двумерный массив, создание XLSX, лист, ячейка, строка таблицы, столбец таблицы, изменение XLSX

Чтение из Excel

Для проcмотра видеоурока заполните анкету
или войдите

Возможности стандартного нода для чтения данных из таблиц XLSX. Выбор файла и листа. Перевод информации из ячеек в текстовый формат.

Ноды:

ExcelReadFromFile, File Path, File.FromPath
Категории: Office

Excel, чтение XLSX, лист, ячейка, дополнительные слоты нодов

Связь с текстовыми форматами

Для проcмотра видеоурока заполните анкету
или войдите

Возможности чтения и записи в форматы TXT и CSV. Пример чтения таблицы поиска из семейства фитинга.

Ноды:

File.ReadText, File.WrtieText, Code Block, CSV.WriteToFile, CSV.ReadFromFile, File Path, File.FromPath
Категории: Core (File)


текстовый файл, создание TXT, чтение TXT, создание CSV, чтение CSV, таблицы посика

Связь с геометрией Revit

Для проcмотра видеоурока заполните анкету
или войдите

Различия между геометрией Revit и геометрией Dynamo. Общие правила создания и свойства геометрии Dynamo.

Ноды:

Point.ByCoordinates, Sphere.ByCenterPointRadius


геометрия Dynamo, геометрия Revit, свойства геометрии, правила создания геометрии, Design Script

Превращение из геометрии Revit

Для проcмотра видеоурока заполните анкету
или войдите

Построение геометрии Dynamo по геометрии элементов модели Revit. Пример получение объёмного тела (Solid) из стены.

Ноды:

Select Moel Element, Element.Geometry


превращение геометрии, создание геометрии Dynamo, 3В-вид, объёмное тело

Анализ геометрии в Dynamo

Для проcмотра видеоурока заполните анкету
или войдите

Суть анализа и некоторые ноды для анализа геометрии Dynamo: пересечение геометрии, определение кратчайшего расстояние между элементами геометрии.

Ноды:

Geometry.DoesIntersect, Category, All Elements of Category, Code Block, Element.Geometry, Geometry.DistanceTo


анализ геометрии, пересечение геометрии, расстояние между элементами геометрии

Создание геометрии Dynamo

Для проcмотра видеоурока заполните анкету
или войдите

Суть создания и некоторые ноды для создания основных элементов геометрии: точки (Point), кривой (Curve или Line как частный случай), плоскости (Surface), объёмного тела (Solid).

Ноды:

Point.ByCoordinates, Code Block, Line.ByStartPointEndPoint, Surface.ByLoft, List.Join, Surface.Thicken
Категории: Geometry (Point), Geometry  (Line), Geometry  (Surface)


точка, создание точки, кривая, линия, создание линии, функции Design Script, поверхность, создание поверхности, утолщение, объёмное тело, создание объёмного тела

Вставка элемента по одной точке

Для проcмотра видеоурока заполните анкету
или войдите

Создание точки для вставки по ней экземпляра семейства в Revit. Параметризация и изменение точки для изменения проекта.

Ноды:

FamilyInstance.ByPoint, Family Types, Point.ByCoordinates, Number Slider


семейство с одной точкой вставки, создание экземпляра, точка, координаты, параметризация

Создание элемента по двум точкам

Для проcмотра видеоурока заполните анкету
или войдите

Создание линий для вставки по ним соответствующих экземпляров семейств в Revit. Ноды для создания колонн и балок.

Ноды:

StructureFraming.ColumnByCurve, Family Types, Levels, Line.ByStartPointEndPoint, Point.ByCoordinates, Code Block, Number Slider, StructureFraming.BeamByCurve,
Категории: Revit (Elements)


семейство с двумя точками вставки, колонна, создание колонны, изменение геометрии, балка, создание балки

Создание элемента по кривой

Для проcмотра видеоурока заполните анкету
или войдите

Создание кривых для формирования по ним стен и перекрытий в Revit. Создание стены по окружности с предварительным разделением окружности на части.

Ноды:

Wall.ByCurveAndHeight,

Circle.ByCentrePointRadius, Code Block, Levels, Wall Types, Curve.SplitByParameter, FloorByOutlineTypeAndLevel
Категории: Revit (Elements), Geometry (Circle)


стена, создание стены, окружность, создание окружности, радиус, замкнутая кривая, разделение кривой, перекрытие, создание перекрытие, набор кривых

Оформление скриптов

Для проcмотра видеоурока заполните анкету
или войдите

Настройка интерфейса скрипта для конечного пользователя. Назначение имени ноду. Группирование нодов, оформление групп. Создание примечаний.

Ноды:

Группа, Примечание


пользователь, оформление, имя нода, переименование нода, группа, группирование нодов, настройка группы, разгруппировка, добавление в группу, исключение из группы, выравнивание нодов, примечание

Переплетение. Уровни

Для проcмотра видеоурока заполните анкету
или войдите

Настройка дополнительных опций стандартных нодов: различных видов переплетений и уровней вложенности списков.

Ноды:

Code Block, *, Count


переплетение, перемножение списков, длинный список, короткий список, Кратчайший, Самый длинный, Векторное произведение, уровни, использование уровней, вложенный список

Отображение геометрии. Замораживание

Для проcмотра видеоурока заполните анкету
или войдите

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

Ноды:

categories, All Element Of Category, Element.Geometry, PolySurface.BySolid, PolySurface.Serfaces, Surface.PerimeterCurves, Room.Name


геометрия, отображение геометрии, gомещение, объёмное тело, поверхность, периметр, gредварительный просмотр, pамораживание

Расширение функционала Dynamo

Для проcмотра видеоурока заполните анкету
или войдите

Что делать, если для решения задачи не хватает стандартных нодов. Поиск пакета нодов в интернете. Использование возможностей языка Design Script для работы с геометрией. Использование языка IronPython и Revit API для решения любой задачи.

Ноды:

Code Block, Python Script


стандартные ноды, Пакеты, поиск пакета, пользовательские ноды, язык Design Script, язык IronPython, модификация скрипта, Revit API

Создание пользовательского нода

Для проcмотра видеоурока заполните анкету
или войдите

Объединение полезной, часто используемой группы нодов в пользовательский узел (нод). Создание собственной категории нодов. Назначение входных и выходных слотов.

Ноды:

Curve.PointsAtChordLengthFromPoint, Circle.ByCenterPointRadius, Code Block, Circle.ByCenterPointRadius, Rectangle.ByWidthLength, PolyCurve.Curves, Input, Output


группа нодов, Пользовательский узел, разделение кривой, создание оружности, Новый узел, Имя узла, Категория, собственная категория, редактирование нода, слоты, создание слотов, ввод названия слота, начальное окно

Публикация и установка пакетов

Для проcмотра видеоурока заполните анкету
или войдите

Для того, чтобы поделиться своими нодами, можно опубликовать собственный пакет нодов. Так делают пользователи Dynamo по всему миру, поэтому многие полезные пакеты нодов можно бесплатно скачать и использовать. При необходимости нод из пакеты можно “раскрыть”.

Ноды:

LaunchBox for Dynamo, archi-lab.net, Clockwork for Dynamo, Rhynamo, BumbleBee


публикация нода, Пакеты, поиск пакета, установка пакета, нативный нод, пользовательский нод, раскрытие нода, управление пакетами, удаление пакета

Синтаксис Design Script

Для проcмотра видеоурока заполните анкету
или войдите

Возможности языка Design Script. Ресурсы для изучения синтаксиса и возможностей.

Learn

Ноды:

Code Block


язык Design Script, синтаксис, создание числа, создание строки, создание списка, математические функции, переменные, название нода, dynamobim.org, DesignScript Guide, DesignScript Documentation, классы, типы, методы

Создание функций

Для проcмотра видеоурока заполните анкету
или войдите

Понятие функции. Создание функций на Design Script. Возможность применения созданной функции во всём текущем скрипте Dynamo.

Ноды:

Code Block


функции, операторы, оператор def, оператор return, остаток от деления, использование функций, DesignScript Documentation

Нод Python Script

Для проcмотра видеоурока заполните анкету
или войдите

Описание нода, с помощью которого можно обращаться к Revit на языке программирования Python. Входные и выходные слоты. Тело скрипта.

Ноды:

Python Script, Python Script from String, File.ReadText


Python, IronPython, язык программирования, программный код, программирование, библиотеки, Protogeometry

Синтаксис Python

Для проcмотра видеоурока заполните анкету
или войдите

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

Ноды:

Python Script


операторы, import, for, in, not, переменные, методы, текстовый формат, числовой формат, комментарии

Простейшие операции

Для проcмотра видеоурока заполните анкету
или войдите

Основы работы с числовым и текстовым форматом. Назначение переменных. Вывод результата работы скрипта.

Ноды:

Python Script, Code Block


OUT, результат скрипта, числа, операции, сложение, суммирование, строки, IN, переменные, присваивание, вывод результата

Анализ предупреждений

Для проcмотра видеоурока заполните анкету
или войдите

Обнаружение и анализ ошибок в коде. Пример предупреждения при попытке сложения переменных с разными типами данных.

Ноды:

Python Script, Code Block


ошибка, предупреждение, TypeError, сложение разных форматов, поиск ошибок

Операторы условия if, elif, else

Для проcмотра видеоурока заполните анкету
или войдите

Простой способ проверки различных условий с помощью трёх операторов условий: IF (“если”), ELIF (“если нет, то если”) и ELSE (“если нет, то”). Пример сравнения двух чисел.

Ноды:

Python Script, Code Block


операторы, if, условие, сравнение чисел, тело оператора, Tab, else, elif, ==, >

Операторы and, or

Для проcмотра видеоурока заполните анкету
или войдите

Задание нескольких условий одной строкой с помощью логических операторов AND (“и”) и OR (“или”). Пример определения того, попадает ли заданное число в диапазон двух других чисел.

Ноды:

Python Script, Code Block


диапазон, попадание в диапазон, условие, операторы, and, NameError, неопределённая переменная, or

Операторы in, not

Для проcмотра видеоурока заполните анкету
или войдите

Задание условий с помощью оператора IN (“в”), проверяющего нахождение идентичного элемента в списке и оператора отрицания NOT (“не”).

Ноды:

Python Script, Code Block


операторы, in, список, попадание в список, отрицание, not

Оператор цикла for

Для проcмотра видеоурока заполните анкету
или войдите

Обработка списка с помощью цикла FOR (“для”), который работает непосредственно с элементами списка. Проверка условия для каждого элемента. Добавление элементов в список.

Ноды:

Python Script, Code Block


список, обработка списка, цикл, операторы, for, in, if, пустой список, создание списка, функции, аргументы, append, элемент списка, добавление элемента в список

Оператор цикла while

Для проcмотра видеоурока заполните анкету
или войдите

Обработка списка с помощью цикла WHILE (“пока”), который работает до тех пор, пока соблюдается заданное условие. Предупреждение зацикливания программы.

Ноды:

Python Script, Code Block


цикл, while, условие, счётчик, обновление счётчика, зацикливание

Функция dir( ). Раскрытие элементов

Для проcмотра видеоурока заполните анкету
или войдите

Получение списка всех доступных методов и свойств любого элемента любого типа данных с помощью функции dir (). Применение методов и свойств к элементу. Раскрытие элемента Revit методом UnwrapElement ().

Ноды:

Python Script, Categories, All Element of Category


функции, dir, тип данных, элемент, методы, свойства, Length, UnwrapElement, раскрытие элемента

Метод LookupParameter( )

Для проcмотра видеоурока заполните анкету
или войдите

Получение значений любых параметров элементов Revit. Ввод типа данных, в котором необходимо данное значение получить.

Ноды:

Python Script, Categories, All Element of Category


параметры, значение параметра, LookupParameter, типы данных, AsString

Поиск функций. Библиотеки. Транзакции

Для проcмотра видеоурока заполните анкету
или войдите

Поиск недостающих функций в нодах из пакетов. Основные библиотеки, используемые в IronPython. Определение текущего проекта. Открытие транзакции для внесения изменений в проект. Рассматривается пример поиска метода Revit API, который изменяет типоразмер элемента.

Ноды:

Python Script, Change Family Type


функции, пакеты, изменение типоразмера, раскрытие нода, ChangeTypeId, библиотеки, RevitNodes, RevitServices, DocumentManger, TransactionManager, текущий проект, транзакция, изменение проекта

Поиск на revitapidocs.com

Для проcмотра видеоурока заполните анкету
или войдите

Ресурс для изучения классов Revit и применяемых к ним методов: http://www.revitapidocs.com/. Возможность просматривать примеры использования некоторых методов на языке Python.


Revit API, revitapidocs.com, классы, методы, свойства, примеры применения, Wall, аргументы

Надстройка Revit Lookup

Для проcмотра видеоурока заполните анкету
или войдите

Использование бесплатной надстройки для просмотра любых свойств любого элемента Revit Применяется для дальнейшего использования полученной информации в Python Script. https://github.com/jeremytammik/RevitLookup


надстройки, Revit Lookup, свойства элемента, параметры, BuiltInParameter, системные параметры

Организация скриптов с помощью Dynamo Player

Для проcмотра видеоурока заполните анкету
или войдите

Стандартное приложение для организации скриптов и их запуска непосредственно из Revit.

http://help.autodesk.com/view/RVT/2017/RUS/?guid=GUID-BFCE20D2-86D4-4591-8CF3-5405D26DB825 


организация скриптов, браузер скриптов, Dynamo Player, папка скриптов, запуск скрипта