Пакеты — это удобный способ хранения узлов и предоставления к ним доступа сообществу Dynamo. В пакет можно поместить любые элементы: от пользовательских узлов, созданных в рабочем пространстве Dynamo, до производных узлов NodeModel. Пакеты публикуются и устанавливаются с помощью диспетчера пакетов. Дополнительные сведения о пакетах см. в руководстве.
Диспетчер пакетов Dynamo — это программный реестр (похожий на npm), который можно открыть из Dynamo или в веб-браузере. Диспетчер пакетов обеспечивает установку, публикацию, обновление и просмотр пакетов. Как и npm, он поддерживает различные версии пакетов. Кроме того, он помогает управлять зависимостями проекта.
В браузере найдите пакеты и просмотрите статистику: https://dynamopackages.com/
В Dynamo диспетчер пакетов обеспечивает установку, публикацию и обновление пакетов.
Поиск пакетов в Интернете:
Packages > Search for a Package...
(Пакеты > Поиск пакета).Просмотр/редактирование установленных пакетов:
Packages > Manage Packages...
(Пакеты > Управлять пакетами).Публикация нового пакета:
Packages > Publish New Package...
(Пакеты > Опубликовать новый пакет).
Пакеты публикуются из диспетчера пакетов в Dynamo. Рекомендуется опубликовать пакет локально, протестировать его и затем опубликовать в Интернете, чтобы поделиться с сообществом. На основе примера NodeModel мы выполним все необходимые действия, чтобы опубликовать узел RectangularGrid в виде пакета локально, а затем в Интернете.
Запустите Dynamo и выберите Packages > Publish New Package...
(Пакеты > Опубликовать новый пакет), чтобы открыть окно Publish a Package
(Опубликовать пакет).
Выберите
Add file...
(Добавить файл) для поиска файлов, которые требуется добавить в пакет.Выберите два файла
.dll
из примера NodeModel.Нажмите
Ok
.
После добавления файлов в содержимое пакета присвойте пакету имя, описание и версию. При публикации пакета с помощью Dynamo автоматически создается файл pkg.json
.
Пакет готов к публикации.
Введите требуемые сведения: имя, описание и версию.
Чтобы опубликовать файл, нажмите кнопку «Опубликовать локально» и выберите папку пакета Dynamo:
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
. Узел будет доступен в Core. Всегда публикуйте пакет локально до тех пор, пока он не будет готов к публикации в открытом доступе.
После публикации пакета узлы будут доступны в библиотеке Dynamo в категории CustomNodeModel
.
Пакет, созданный в библиотеке Dynamo
Когда пакет будет готов к публикации в Интернете, откройте диспетчер пакетов и выберите Publish
(Опубликовать), а затем Publish Online
(Опубликовать в Интернете).
Чтобы узнать, как пакет был отформатирован в Dynamo, щелкните значок с тремя точками справа от CustomNodeModel и выберите Show Root Directory (Показать корневой каталог).
Выберите
Publish
(Опубликовать), а затемPublish Online
(Опубликовать в Интернете) в окне публикации пакета Dynamo.Чтобы удалить пакет, выберите
Delete
(Удалить).
Процесс обновления пакета аналогичен процессу публикации. Откройте диспетчер пакетов, выберите Publish Version...
(Публикация версии) для пакета, который необходимо обновить, и введите более позднюю версию.
Выберите
Publish Version
(Публикация версии), чтобы дополнить существующий пакет новыми файлами в корневом каталоге, а затем выберите, следует ли опубликовать пакет локально или в Интернете.
Веб-клиент диспетчера пакетов используется исключительно для поиска и просмотра данных пакета, таких как управление версиями и статистика скачивания.
Веб-клиент диспетчера пакетов можно найти на странице https://dynamopackages.com/
Расширения Dynamo можно развернуть в диспетчере пакетов так же, как и обычные библиотеки узлов Dynamo. Если установленный пакет содержит расширение вида, оно загружается во время выполнения при загрузке Dynamo. Откройте консоль Dynamo и убедитесь, что расширение загружено правильно.
Структура пакета расширения совпадает со структурой обычного пакета.
Если расширение уже собрано, то у вас уже должны быть сборка .NET и файл манифеста. Сборка должна содержать класс, который реализует IViewExtension
или IExtension
. XML-файл манифеста указывает Dynamo, какой класс следует создать для запуска расширения. Чтобы диспетчер пакетов нашел расширение, файл манифеста должен точно соответствовать расположению и имени сборки.
Все файлы сборки можно поместить в папку bin
, а файл манифеста — в папку extra
. В эту папку также можно поместить любые дополнительные компоненты.
Пример файла манифеста XML.
После создания папки, содержащей указанные выше подкаталоги, ее можно передать (выгрузить) в диспетчер пакетов. Следует помнить, что в настоящее время невозможно публиковать пакеты из Dynamo Sandbox. Это означает, что необходимо использовать Dynamo Revit. В Dynamo Revit перейдите в раздел Packages > Publish New Package (Пакеты > Опубликовать новый пакет). При этом пользователю будет предложено войти в свою учетную запись Autodesk, с которой требуется связать пакет.
На этом этапе должно быть открыто обычное окно публикации пакета, в котором необходимо заполнить все обязательные поля, относящиеся к пакету или расширению. Теперь очень важно убедиться в том, что ни один из файлов сборки не помечен как библиотека узлов. Для этого щелкните правой кнопкой мыши импортированные файлы (папка пакета, созданная выше). Откроется контекстное меню, в котором можно установить (или снять) флажок для этого параметра. Флажок должен быть снят для всех сборок расширений.
Перед публикацией в открытом доступе сначала опубликуйте пакет локально, чтобы убедиться в том, что все работает надлежащим образом. Проверив работу, нажмите кнопку публикации.
Чтобы убедиться в том, что пакет успешно загружен, попробуйте найти его по имени и ключевым словам, указанным на этапе публикации. Наконец, важно отметить, что для работы расширений потребуется перезагрузка Dynamo. Как правило, для этих расширений необходимы параметры, заданные при загрузке Dynamo.
При разработке сборок для публикации в виде пакета для Dynamo можно настроить проект таким образом, чтобы сгруппировать все необходимые компоненты и поместить их в структуру папок, совместимую с пакетом. Это позволит быстро протестировать проект в виде пакета и смоделировать работу пользователя.
Существует два способа сборки пакета в Visual Studio.
Добавьте события после сборки в диалоговом окне «Параметры проекта», в котором для копирования необходимых файлов используются сценарии xcopy или Python.
Используйте целевой объект сборки AfterBuild в файле .csproj
для создания задач копирования файлов и каталогов.
Метод AfterBuild предпочтителен для этих типов операций (в том числе в данном руководстве), так как он не зависит от копирования файлов, которые могут быть недоступны на компьютере сборки.
Настройте структуру папок в репозитории так, чтобы исходные файлы были отделены от файлов пакетов. При работе с примером CustomNodeModel поместите проект Visual Studio и все связанные файлы в новую папку src
. Все пакеты, созданные в проекте, будут сохранены в этой папке. Структура папок должна выглядеть следующим образом:
Переместите файлы проекта в новую папку
src
.
Теперь, когда исходные файлы находятся в отдельной папке, добавьте целевой объект AfterBuild
в файл CustomNodeModel.csproj
в Visual Studio. При этом необходимые файлы будут скопированы в новую папку пакета. Откройте файл CustomNodeModel.csproj
в текстовом редакторе (мы использовали Atom) и поместите цель сборки перед закрывающим тегом </Project>
. Целевой объект AfterBuild скопирует все файлы DLL, PBD, XML и CONFIG в новую папку bin и создаст папку dyf и дополнительные папки.
Необходимо убедиться, что целевой объект добавлен в файл
CustomNodeModel.csproj
(а не в другой файл проекта) и что в проекте нет параметров, заданных после сборки.
Поместите целевой объект AfterBuild перед закрывающим тегом
</Project>
.
В разделе <ItemGroup>
задается ряд переменных, представляющих определенные типы файлов. Например, переменная Dll
представляет все файлы в выходной папке с расширением .dll
.
Задача Copy
состоит в том, чтобы скопировать все файлы .dll
в каталог, а именно в папку пакета, в которую мы выполняем сборку.
Пакеты Dynamo обычно содержат папку dyf
и extra
для пользовательских узлов Dynamo и других компонентов, например изображений. Чтобы создать эти папки, необходимо использовать задачу MakeDir
. Если папка отсутствует, эта задача создаст ее. В эту папку можно добавить файлы вручную.
Теперь при построении проекта в папке проекта будет находится папка packages
рядом с ранее созданной папкой src
. В каталоге packages
находится папка, содержащая все необходимые для пакета компоненты. Также необходимо скопировать файл pkg.json
в папку пакета, чтобы сообщить Dynamo о необходимости загрузки пакета.
Новая папка пакетов, созданная целевым объектом AfterBuild.
Существующая папка src с проектом.
Папки
dyf
иextra
, созданные из целевого объекта AfterBuild.Скопируйте файл
pkg.json
вручную.
Теперь можно опубликовать пакет с помощью диспетчера пакетов Dynamo или скопировать его непосредственно в папку пакетов Dynamo: <user>\AppData\Roaming\Dynamo\1.3\packages
.