Dynamo
Primer for v2.0
Русский
Русский
  • О программе
  • Введение
    • Что представляет собой программа Dynamo и как она работает?
    • Руководство пользователя Dynamo Primer, сообщество и платформа Dynamo
  • Настройка Dynamo
  • Пользовательский интерфейс
    • Рабочее пространство
    • Библиотека
  • Узлы и провода
  • Основные узлы и понятия
    • Указатель узлов
    • Геометрия для машинного проектирования
      • Обзор концепции геометрии
      • Вектор, плоскость и система координат
      • Точки
      • Кривые
      • Поверхности
      • Тела
      • Сети
    • Компоновочные блоки программ
      • Передача данных
      • Math
      • Logic
      • Строки
      • Цвет
    • Проектирование на основе списков
      • Что такое список
      • Работа со списками
      • Списки списков
      • Многомерные списки
    • Словари в Dynamo
      • Что такое словарь
      • Узлы Dictionary
      • Словари в узлах Code Block
      • Примеры использования Revit
  • Пользовательские узлы и пакеты
    • Пользовательские узлы
      • Пользовательские узлы: введение
      • Создание пользовательских узлов
      • Публикация узлов в библиотеку
    • Пакеты
      • Пакеты: введение
      • Практикум по работе с пакетом: Mesh Toolkit
      • Разработка пакетов
      • Публикация пакетов
      • Импорт Zero Touch
  • Dynamo для Revit
    • Подключение к Revit
    • Выбор
    • Редактирование
    • Создание
    • Адаптация
    • Выпуск документации
  • Dynamo for Civil 3D
    • Совместимость с Civil 3D
    • Начало работы
    • Библиотека узлов
    • Примеры рабочих процессов
      • Дороги
        • Размещение осветительных столбов
      • Землеустройство
        • Размещение коммуникаций
      • Инженерные сети
        • Переименование колодцев
      • Железная дорога
        • Границы зазора
      • Топосъемка
        • Управление группами точек
    • Дополнительные разделы
      • Привязка объекта
      • Python и Civil 3D
    • Проигрыватель Dynamo
    • Полезные пакеты
    • Ресурсы
  • Бета-версия Dynamo в Forma
    • Настройка Dynamo Player в Forma
    • Добавление графов и предоставление к ним общего доступа в Dynamo Player
    • Запуск графов в Dynamo Player
    • Отличия вычислительной службы Dynamo от классического приложения Dynamo
  • Создание кода в Dynamo
    • Узлы Code Block и DesignScript
      • Что такое Code Block
      • Синтаксис DesignScript
      • Сокращение
      • Функции
    • Создание геометрии с помощью DesignScript
      • Основы работы с геометрией посредством DesignScript
      • Геометрические примитивы
      • Векторная математика
      • Кривые: интерполяционные и по управляющим точкам
      • Перенос, поворот и другие преобразования
      • Поверхности: интерполяционные, лофтированные, по управляющим точкам и поверхности вращения
      • Параметризация геометрических объектов
      • Пересечение и обрезка
      • Логические операции с геометрическими объектами
      • Генераторы точек Python
    • Python
      • Узлы Python
      • Python и Revit
      • Настройка собственного шаблона Python
    • Изменения языка
  • Практические советы
    • Методы создания графиков
    • Методы создания сценариев
    • Справочник по созданию сценариев
    • Управление структурой программы
    • Эффективная работа с большими наборами данных в Dynamo
  • Примеры рабочих процессов
    • Процессы для начала работы
      • Параметрическая ваза
      • Точки притяжения
    • Индекс понятий
  • Руководство для разработчиков
    • Сборка Dynamo на основе исходного кода
      • Сборка DynamoRevit на основе исходного кода
      • Управление зависимостями и их обновление в Dynamo
    • Разработка для Dynamo
      • Начало работы
      • Пример использования узлов Zero-Touch — узел сетки
      • Выполнение сценариев Python в узлах Zero-Touch (C#)
      • Дальнейшая работа с Zero-Touch
      • Расширенная настройка узлов Dynamo
      • Использование типов COM (взаимодействие) в пакетах Dynamo
      • Пример использования NodeModel — настраиваемый пользовательский интерфейс
      • Обновление пакетов и библиотек Dynamo для Dynamo 2.x
      • Обновление пакетов и библиотек Dynamo для Dynamo 3.x
      • Расширения
      • Определение пользовательской организации пакетов для Dynamo 2.0 или более поздней версии
      • Интерфейс командной строки Dynamo
      • Интеграция с Dynamo
      • Разработка для Dynamo for Revit
      • Публикация пакета
      • Создание пакета из Visual Studio
      • Расширения в виде пакетов
    • Запросы на слияние
    • Ожидания от тестирования
    • Примеры
  • Приложение
    • Вопросы и ответы
    • Визуальное программирование и Dynamo
    • Ресурсы
    • Примечания к выпуску
    • Полезные пакеты
    • Файлы примеров
    • Таблица интеграции с основной программой
    • PDF для скачивания
    • Сочетания клавиш Dynamo
Powered by GitBook
On this page
  • Поиск репозитория DynamoRevit на Github
  • Клонирование репозитория с помощью Git
  • Создание репозитория с помощью Visual Studio
  • Запуск локальной сборки DynamoRevit в Revit
  • Отладка DynamoRevit с помощью Visual Studio
  • Извлечение последней сборки
Edit on GitHub
Export as PDF
  1. Руководство для разработчиков
  2. Сборка Dynamo на основе исходного кода

Сборка DynamoRevit на основе исходного кода

PreviousСборка Dynamo на основе исходного кодаNextУправление зависимостями и их обновление в Dynamo

Last updated 1 month ago

Исходные файлы DynamoRevit также хранятся в репозитории DynamoDS Github, что позволяет разработчикам вносить свой вклад и создавать бета-версии. Процесс создания DynamoRevit на основе исходного кода в целом аналогичен процессу, используемому в Dynamo, за исключением нескольких важных деталей:

  • DynamoRevit ссылается на сборки Dynamo, поэтому их следует создавать с соответствующими пакетами NuGet. Например, DynamoRevit 2.x не загружается в Dynamo 1.3.

  • DynamoRevit относится к определенным версиям Revit, например ветвь DynamoRevit 2018 должна работать в Revit 2018.

В данном руководстве предполагается, что используются следующие версии:

  • Revit 2023.

  • Последняя версия DynamoRevit, созданная в ветви Revit2023.

  • Последняя сборка Dynamo.

Для успешной сборки в этом руководстве мы клонируем репозитории Dynamo и DynamoRevit.

Примечание. Создавать Dynamo вручную до использования DynamoRevit требуется только при сборке Dynamo 1.x и DynamoRevit 1.x. Новые версии репозитория DynamoRevit используют диспетчер пакетов NuGet для загрузки необходимых зависимостей Dynamo. Хотя для сборки DynamoRevit 2.x не нужно извлекать Dynamo вручную, для запуска надстройки DynamoRevit потребуются файлы Core DLL, так что мы рекомендуем все равно загрузить и собрать Dynamo. См. подробности ниже:

Поиск репозитория DynamoRevit на Github

Код проекта DynamoRevit и исходный код основного Dynamo хранятся на Github в отдельных репозиториях. Этот репозиторий содержит исходные файлы для узлов Revit и надстройку Revit, с помощью которой выполняется загрузка Dynamo. Сборки DynamoRevit для различных версий Revit (например, 2016, 2017 или 2018) существуют в репозитории как ветви.

Исходный код DynamoRevit находится здесь:

  1. Клонирование или скачивание репозитория.

  2. Ветви DynamoRevit ссылаются на версии Revit.

Клонирование репозитория с помощью Git

Так же, как мы извлекали репозиторий Dynamo, мы используем команду git clone, чтобы клонировать DynamoRevit и указать ветвь, соответствующую версии Revit. Для начала откроем интерфейс командной строки и зададим в качестве текущего каталога папку, в которую будут скопированы файлы.

cd C:\Users\username\Documents\GitHub заменяет текущий каталог

Замените username именем пользователя.

Теперь можно клонировать репозиторий в эту папку. Хотя нам нужно будет указать ветвь репозитория, мы можем переключиться на эту ветвь после клонирования.

git clone https://github.com/DynamoDS/DynamoRevit.git клонирует репозиторий с удаленного URL и по умолчанию переключается на главную ветвь.

После клонирования репозитория измените текущий каталог на папку репозитория и перейдите в ветвь, соответствующую установленной версии Revit. В данном примере используется Revit RC2.13.1_Revit2023. Все удаленные ветви можно просмотреть на странице Github в раскрывающемся меню ветви.

cd C:\Users\username\Documents\GitHub\DynamoRevit меняет каталог на DynamoRevit. git checkout RC2.13.1_Revit2023 определяет в качестве текущей ветвь RC2.13.1_Revit2023. git branch проверяет, на какой ветви мы находимся, и отображает другие локальные ветви.

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

Важно выбрать правильную ветвь репозитория, чтобы при сборке проекта в Visual Studio он ссылался на сборки верной версии каталога установки Revit, а именно RevitAPI.dll и RevitAPIUI.dll.

Создание репозитория с помощью Visual Studio

  1. Щелкните правой кнопкой мыши restorepackages.bat и выберите Run as administrator (запуск от имени администратора).

Если пакеты успешно восстановлены, в папку packages будет добавлена папка src с последними бета-версиями пакетов NuGet.

  1. Последние бета-версии пакетов Dynamo NuGet

После восстановления пакетов откройте файл решения DynamoRevit.All.sln Visual Studio в src и выполните сборку. В сборке могут изначально возникнуть проблемы с поиском AssemblySharedInfo.cs. Перезапустите сборку, чтобы устранить эту проблему.

  1. Выберите Build > Build Solution (Сборка > Собрать решение).

  2. В окне вывода вы должны увидеть сообщение об успешной сборке. Например: ===== Build: 13 succeeded, 0 failed, 0 up-to-date, 0 skipped =====.

Запуск локальной сборки DynamoRevit в Revit

Создайте файл Dynamo.addin в папке надстройки Revit, расположенной в папке C:\ProgramData\Autodesk\Revit\Addins\2023. У нас уже установлена версия DynamoRevit, поэтому мы просто отредактируем существующий файл, чтобы указать на новую сборку.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Application">
<Name>Dynamo For Revit</Name>
<Assembly>"C:\Users\username\Documents\GitHub\DynamoRevit\bin\AnyCPU\Debug\Revit\DynamoRevitDS.dll"</Assembly>
<AddInId>8D83C886-B739-4ACD-A9DB-1BC78F315B2B</AddInId>
<FullClassName>Dynamo.Applications.DynamoRevitApp</FullClassName>
<VendorId>ADSK</VendorId>
<VendorDescription>Dynamo</VendorDescription>
</AddIn>
</RevitAddIns>
  • Укажите путь к файлу DynamoRevitDS.dll внутри <Assembly>...</Assembly>.

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

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Application">
<Name>Dynamo For Revit</Name>
<Assembly>"C:\Users\username\Documents\GitHub\DynamoRevit\bin\AnyCPU\Debug\Revit\DynamoRevitVersionSelector.dll"</Assembly>
<AddInId>8D83C886-B739-4ACD-A9DB-1BC78F315B2B</AddInId>
<FullClassName>Dynamo.Applications.VersionLoader</FullClassName>
<VendorId>ADSK</VendorId>
<VendorDescription>Dynamo</VendorDescription>
</AddIn>
</RevitAddIns>
  • Задайте путь к файлу <Assembly>...</Assembly>: DynamoRevitVersionSelector.dll

  • <FullClassName>...</FullClassName> определяет, какой класс будет создан из сборки. Мы указали его в пути к элементу сборки выше. Этот класс будет отправной точкой для нашей надстройки.

Кроме того, необходимо удалить существующее приложение Dynamo, входящее в комплект поставки Revit. Для этого перейдите в раздел C:\\Program Files\Autodesk\Revit 2023\AddIns и удалите две папки, содержащие Dynamo: DynamoForRevit и DynamoPlayerForRevit. Их можно удалить или создать резервную копию в отдельной папке, если требуется восстановить исходное приложение Dynamo for Revit.

После этого необходимо добавить путь к файлу основных сборок Dynamo Dynamo.config в папку DynamoRevit bin. DynamoRevit загрузит их при открытии надстройки в Revit. Этот файл конфигурации позволяет указать надстройку DynamoRevit для различных версий Dynamo Core, чтобы разрабатывать и тестировать изменения в Core и DynamoRevit.

Код должен выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
     <add key="DynamoRuntime" value="C:\Users\username\Documents\GitHub\Dynamo\bin\AnyCPU\Debug"/>
  </appSettings>
</configuration>
  • Добавьте путь к <add key/> в папке bin.

Перед созданием руководства мы клонировали Dynamo и произвели сборку, чтобы гарантировать корректную работу DynamoRevit. Путь к папке указывает на эту сборку.

Теперь при открытии Revit на вкладке «Управление» должна появиться надстройка Dynamo.

  1. Выберите Manage (Управление).

  2. Щелкните значок надстройки Dynamo.

  3. Экземпляр DynamoRevit.

Если отображается диалоговое окно с сообщением об ошибке, в котором показаны отсутствующие сборки, то, вероятно, обнаружено несоответствие между версиями Dynamo Core, созданными на основе этих сборок, и версиями, загружаемыми во время выполнения. Например, DynamoRevit с последними бета-версиями 2.0 пакетов Dynamo Core не будет работать при попытке запуска с помощью DLL-файлов Dynamo 1.3. Убедитесь, что версии репозиториев совпадают, а DynamoRevit извлекает корректную версию зависимостей NuGet. Зависимости определены в файле package.json репозитория DynamoRevit.

Отладка DynamoRevit с помощью Visual Studio

В предыдущем разделе, Сборка Dynamo на основе исходного кода, мы кратко описали отладку в Visual Studio и способ присоединения Visual Studio к процессу. На примере исключения в узле Wall.ByCurveAndHeight рассмотрим процедуру присоединения к процессу, задания точек прерывания, пошагового выполнения кода и использования стека вызовов для определения источника исключения. Эти средства отладки обычно применяются к рабочим процессам разработки .Net и описаны за рамками данного руководства.

  • Точки прерывания устанавливают строки в исходном коде, перед выполнением которых приложение приостановит работу. Если узел приводит к аварийному завершению работы DynamoRevit или к непредвиденному результату, можно добавить точку прерывания в исходный код узла, чтобы приостановить процесс, выполнить код пошагово и проверить значения переменных в реальном времени, пока не будет найден источник проблемы

  • При пошаговом выполнении код выполняется построчно. Можно выполнять функции по одной, отлаживать вызов функции и выходить из выполняемой в текущий момент функции.

  • Стек вызовов показывает функцию, которая в текущий момент выполняется процессом, относительно предыдущих вызовов функции, которые спровоцировали данный вызов функции. В Visual Studio есть окно для отображения стека вызовов. Например, если мы получим исключение за пределами исходного кода, мы увидим путь к коду вызова в стеке вызовов.

Узел Wall.ByCurveAndHeight создает исключение, если в качестве входного значения кривой для него задана кривая PolyCurve с сообщением To BSPlineCurve Not Implemented. С помощью отладки мы можем выяснить точную причину, по которой узел не принимает выбранный тип геометрии в качестве входных данных параметра кривой. В следующем примере предполагается, что DynamoRevit успешно собран и может быть запущен как надстройка для Revit.

  1. Узел Wall.ByCurveAndHeight вызвал исключение

Для начала откройте файл решения DynamoRevit.All.sln, запустите Revit, а затем надстройку DynamoRevit. Затем присоедините Visual Studio к процессу Revit с помощью окна Attach to Process (Присоединить к процессу).

Чтобы показать доступные процессы, необходимо запустить Revit и DynamoRevit

  1. Откройте окно Attach to Process (Присоединить к процессу), выбрав Debug > Attach to Process... (Отладка > Присоединить к процессу).

  2. Установите для параметра Transport (Транспорт) значение Default (По умолчанию).

  3. Выберите Revit.exe.

  4. Выберите Attach (Присоединить).

Присоединив Visual Studio к Revit, откройте исходный код Wall.ByCurveAndHeight в Wall.cs. Его можно найти в обозревателе решений в разделе Libraries > RevitNodes > Elements (Библиотеки > RevitNodes > Элементы) в области Public static constructors файла. Задайте точку прерывания в конструкторе типа стены, чтобы при выполнении узла в Dynamo процесс прерывался, и мы могли просмотреть каждую строку кода по отдельности. Обычно автоматические конструкторы Dynamo начинаются с By<parameters>.

  1. Файл класса с конструктором для Wall.ByCurveAndHeight.

  2. Чтобы задать точку прерывания, левой кнопкой мыши щелкните номер строки или правой кнопкой мыши щелкните строку кода, выберитеBreakpoint > Insert Breakpoint (Точка прерывания > Вставить точку прерывания).

После установки точки прерывания необходимо запустить процесс через функцию Wall.ByCurveAndHeight. Эту функцию можно повторно выполнить в Dynamo, заново подключив провод к одному из портов, что приведет к повторному выполнению узла. Точка прерывания будет достигнута в Visual Studio.

  1. По достижении точки прерывания ее значок меняется.

  2. В окне стека вызовов отображается следующий метод.

Теперь мы будем переходить от строки к строке до тех пор, пока не возникнет исключение. Следующим выполняется код, выделенный желтым цветом.

  1. Инструменты отладки для навигации по коду.

  2. Нажмите Step Over (Шаг с обходом), чтобы запустить выделенный код, а затем приостановить выполнение после возврата функции

  3. Следующий выполняемый оператор обозначен желтым цветом и стрелкой.

Если продолжить пошаговое выполнение функции, возникнет исключение, отображаемое в окне DynamoRevit. В окне стека вызовов можно увидеть, что исключение изначально было создано методом Autodesk.Revit.CurveAPIUtils.CreateNurbsCurve. К счастью, здесь происходит обработка исключения, поэтому не происходит сбоя Dynamo. В процессе отладки мы выяснили контекст для проблемы, обнаружив в исходном коде другой метод.

  1. При переходе к оператору, вызывающему исключение в Walls.cs, процесс отладки позволяет максимально близко подобраться к основной причине проблемы в пользовательском коде в ProtoToRevitCurve.cs

  2. Оператор, вызвавший исключение в ProtoToRevitCurve.cs.

  3. В стеке вызовов видно, что исключение возникает не в пользовательском коде.

  4. Всплывающее окно с информацией об исключении.

Этот процесс можно применить к любым исходным файлам, с которыми мы работаем. При разработке библиотеки узлов Zero-Touch для Dynamo Studio можно открыть исходный код библиотеки и подключить процесс Dynamo для отладки библиотеки узлов. Даже если все работает нормально, отладка послужит отличным способом изучения кода для понимания рабочих процессов.

Извлечение последней сборки

Процесс аналогичный извлечению изменений для Dynamo, но требует нахождения в правильной ветви. Используйте команду git branch в хранилище DynamoRevit, чтобы узнать, какие ветви доступны локально и какие из них в настоящий момент извлечены.

cd C:\Users\username\Documents\GitHub\DynamoRevit задает текущий каталог в репозитории DynamoRevit. git branch проверяет правильности ветви, RC2.13.1_Revit2023. git pull origin RC2.13.1_Revit2023 извлекает изменения из удаленной исходной ветви RC2.13.1_Revit2023.

Начало координат указывает на исходный URL-адрес, который мы клонировали.

Необходимо помнить о том, на какой ветви мы находимся и из какой ветви мы извлекаем изменения, чтобы не переносить ненужные изменения, скажем, из RC2.13.1_Revit2023 в Revit2018.

Как уже упоминалось в разделе Сборка Dynamo на основе исходного кода, при отправке изменений в хранилище DynamoRevit можно создать запрос на слияние, следуя рекомендациям команды Dynamo, изложенным в соответствующем разделе.

Перед созданием репозитория необходимо восстановить пакеты NuGet с файлом restorepackages.bat в папке src. В этом файле BAT используется диспетчер пакетов для извлечения встроенных двоичных файлов Dynamo Core, необходимых для работы DynamoRevit. Их также можно создать вручную, но только если изменения вносятся в DynamoRevit, а не в ядро Dynamo. Это позволяет быстрее начать работу. Убедитесь, что этот файл запущен от имени администратора.

Для распознавания DynamoRevit в Revit требуется файл надстройки, который автоматически создается программой . В процессе разработки нам необходимо вручную создать файл надстройки, указывающий на необходимую нам сборку DynamoRevit — DynamoRevitDS.dll. Кроме того, DynamoRevit необходимо связать со сборкой Dynamo.

Присоединение к процессу связывает выполняющееся приложение с Visual Studio для отладки. Если требуется отладить поведение в сборке DynamoRevit, можно открыть исходные файлы DynamoRevit в Visual Studio и присоединить процесс Revit.exe, который является родительским процессом надстройки DynamoRevit. Visual Studio использует (PBD) для создания связи между выполняемыми сборками DynamoRevit и исходным кодом.

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

Поскольку это не библиотека с открытым исходным кодом, мы не можем вносить в нее изменения. Имея дополнительную информацию, мы можем описать с контекстом на GitHub или предложить решение проблемы, используя запрос на слияние.

NuGet
установки
файл обозначений
2000 вещей, которые необходимо знать о C#
проблему
https://github.com/DynamoDS/DynamoRevit
Создание репозитория с помощью Visual Studio
DynamoRevit на GitHub
Интерфейс командной строки
Интерфейс командной строки после клонирования репозитория
Каталог переключен на ветвь
Запуск от имени администратора
Последние бета-версии пакетов Dynamo NuGet
Сборка решения
Папки DynamoForRevit и DynamoPlayerforRevit
Надстройка Dynamo, расположенная на вкладке «Управление»
Узел Wall.ByCurveAndHeight вызвал исключение
Окно «Присоединить к процессу»
Установка точки прерывания
Достигнута точка прерывания в Visual Studio
Шаг с обходом в Visual Studio
Исключение в Visual Studio
Задание каталога в интерфейсе командной строки