Разработка для Dynamo
Платформа Dynamo предназначена для всех пользователей независимо от опыта. Существует несколько вариантов разработки, ориентированных на различный уровень подготовки. У каждого варианта есть свои преимущества и недостатки в зависимости от цели. Ниже мы рассмотрим различные варианты и узнаем, как выбрать подходящий.
Три среды разработки: Visual Studio, редактор Python и Code Block DesignScript
Какие варианты доступны?
Варианты разработки делятся на две главные категории: для Dynamo и в Dynamo. Разработка в Dynamo подразумевает создание содержимого с помощью Dynamo IDE для использования в Dynamo, а при разработке для Dynamo требуются внешние инструменты создания содержимого, которое затем будет импортировано в Dynamo. В этом руководстве рассматривается разработка для Dynamo, однако ниже приведены ссылки на материалы по всем доступным процессам.
Для Dynamo
Эти узлы обеспечивают больше всего возможностей настройки. С помощью этого метода выполняется сборка различных пакетов. Он используется для предложения изменений в исходный код Dynamo. В этом руководстве рассматривается процесс сборки пакетов.
Узлы Zero-Touch
Узлы, производные от NodeModel
Расширения
В этом руководстве приведены инструкции по импорту библиотек Zero-Touch.
В описании ниже Visual Studio используется в качестве среды разработки для узлов Zero-Touch и NodeModel.
Интерфейс Visual Studio с проектом, который мы будем разрабатывать
В Dynamo
Несмотря на то что эти процессы выполняются в рабочем пространстве визуального программирования и относительно просты, они подходят для персонализации Dynamo. Данные аспекты подробно рассмотрены в этом руководстве, а в разделе Методы написания сценариев приведены практические советы по написанию сценариев.
Блоки кода предоставляют DesignScript в среде визуального программирования, что позволяет использовать гибкие текстовые сценарии и рабочие процессы узла. Функция в блоке кода может быть вызвана любым объектом в рабочем пространстве.
Скачайте пример блока кода — щелкните правой кнопкой мыши и выберите Save As (Сохранить как) — или посмотрите подробные инструкции в этом руководстве.
Пользовательские узлы представляют собой контейнеры для коллекций узлов и даже целых графиков. Это эффективный способ сбора часто используемых процедур для передачи их сообществу.
Скачайте пример пользовательского узла — щелкните правой кнопкой мыши и выберите Save As (Сохранить как) — или посмотрите подробные инструкции в этом руководстве.
Узлы Python представляют собой интерфейс сценариев в среде визуального программирования, аналогичный блокам кода. В библиотеках Autodesk.DesignScript используется точечная нотация, аналогичная DesignScript.
Скачайте пример узла Python — щелкните правой кнопкой мыши и выберите Save As (Сохранить как) — или посмотрите подробные инструкции в руководстве.
При разработке в рабочем пространстве Dynamo мы сразу получаем обратную связь.
Разработка в рабочем пространстве Dynamo с помощью узла Python
Преимущества и недостатки каждого подхода
Варианты разработки для Dynamo созданы для упрощения персонализации. Если требуется написать рекурсивный сценарий на Python или создать полностью персонализированный пользовательский интерфейс узла, существуют варианты реализации кода, включающие только необходимые для запуска программы элементы.
Блоки кода, узел Python и пользовательские узлы в Dynamo
Это простые варианты для написания кода в среде визуального программирования Dynamo. Рабочее пространство визуального программирования Dynamo обеспечивает доступ к Python, DesignScript и возможность включать в пользовательский узел несколько узлов.
С помощью этих методов мы можем:
приступить к написанию кода Python или DesignScript почти без подготовки.
импортировать библиотеки Python в Dynamo.
делиться блоками кода, узлами Python и пользовательскими узлами с сообществом Dynamo в составе пакета.
Узлы Zero-Touch
Zero-Touch — это метод, позволяющий легко и быстро импортировать библиотеки C# одним щелчком мыши. Приложение Dynamo считывает общие методы из файла .dll
и преобразует их в узлы Dynamo. Zero-Touch можно использовать для разработки собственных пользовательских узлов и пакетов.
С помощью этого метода можно:
импортировать библиотеки, в том числе разработанные не для Dynamo, и автоматически создавать наборы новых узлов, как в примере A-Forge в данном руководстве.
писать методы на языке C# и использовать их в качестве узлов в Dynamo.
предоставлять сообществу Dynamo доступ к библиотеке C# в виде узлов в пакете.
Узлы, производные от NodeModel
Эти узлы более глубоко погружены в структуру Dynamo. Они основываются на классе NodeModel
и написаны на языке C#. Этот метод обеспечивает максимальную гибкость и эффективность, однако большинство аспектов узла необходимо определить явно, а функции должны находиться в отдельной сборке.
С помощью этого метода можно:
создать полностью настраиваемый пользовательский интерфейс узла с помощью ползунков, изображений, цвета и т. д. (например, узел ColorRange)
получить доступ к инструментам в рабочей области Dynamo и управлять ими
настроить переплетение.
загрузить узел в Dynamo в виде пакета.
Управление версиями Dynamo и изменения API (1.x → 2.x)
Поскольку Dynamo регулярно обновляется, изменения могут затронуть часть API, используемую пакетом. Необходимо отслеживать эти изменения, чтобы обеспечить надлежащую работу существующих пакетов.
Изменения API документируются на вики-странице Dynamo на Github. Здесь рассматриваются изменения в Dynamo Core, библиотеках и рабочих пространствах.
Пример предстоящего значительного изменения — переход от формата XML к формату JSON в версии 2.0. Для производных узлов NodeModel теперь требуется конструктор JSON, в противном случае они не будут открываться в Dynamo 2.0.
В документации по API Dynamo в настоящее время описаны функции Core: http://dynamods.github.io/DynamoAPI
Разрешение на распространение двоичных файлов в пакете
Следует учитывать DLL-файлы, входящие в пакет, выгружаемый в диспетчер пакетов. Если автор пакета не создал DLL-файл, у него должны быть права на общий доступ к такому файлу.
Если пакет содержит двоичные файлы, то при скачивании пакета необходимо уведомить об этом пользователя.
Last updated