Прежде чем приступить к разработке, важно создать прочную основу для нового проекта. Сообщество разработчиков Dynamo предлагает несколько шаблонов проектов, которые можно использовать в качестве отправной точки, однако будет полезно изучить, как начать проект с нуля. Создание проекта с нуля позволит лучше понять процесс разработки.
Visual Studio — это многофункциональная среда разработки, в которой можно создавать проекты, добавлять ссылки, создавать файлы .dll
и выполнять отладку. При создании нового проекта Visual Studio также создается решение, структура для организации проектов. В одном решении можно создать несколько проектов, которые будут собраны вместе. Чтобы создать узел ZeroTouch, необходимо запустить новый проект Visual Studio, в котором будет создана библиотека классов C# и собран файл .dll
.
Окно New Project (Создать проект) в Visual Studio
Для начала откройте Visual Studio и создайте новый проект:
File > New > Project
(Файл > Создать > Проект).Выберите шаблон проекта
Class Library
(Библиотека классов).Присвойте проекту имя (мы назвали проект MyCustomNode).
Задайте путь к файлу проекта. В нашем примере мы оставим расположение по умолчанию
Нажмите
Ok
.
Visual Studio автоматически создаст и откроет файл C#. Мы должны присвоить ему соответствующее имя, настроить рабочее пространство и заменить код по умолчанию на этот метод умножения.
Откройте обозреватель решений и окна вывода в меню
View
(Вид).Переименуйте файл
Class1.cs
вSampleFunctions.cs
в обозревателе решений справа.Добавьте приведенный выше код для функции умножения. Позднее мы рассмотрим, как Dynamo читает классы C#.
Обозреватель решений предоставляет доступ ко всем компонентам проекта.
Окно вывода понадобится позже, чтобы проверить, успешно ли выполнена сборка.
Следующий шаг — собрать проект. Но сначала необходимо кое-что проверить. Убедитесь, что в качестве целевой платформы выбрано Any CPU
или x64
, а флажок Prefer 32-bit
(Предпочтительно 32-разрядная) в свойствах проекта снят.
Откройте свойства проекта, выбрав
Project > "ProjectName" Properties
(Проект > Свойства имя_проекта).Выберите страницу
Build
(Сборка).Выберите
Any CPU
илиx64
в раскрывающемся меню.Убедитесь, что флажок
Prefer 32-bit
(Предпочтительно 32-разрядная) снят.
Теперь можно собрать проект, чтобы создать файл .dll
. Для этого выберите Build Solution
(Собрать решение) в меню Build
(Сборка) или нажмите клавиши CTRL+SHIFT+B
.
Выберите
Build > Build Solution
(Сборка > Собрать решение).Чтобы определить, успешно ли собран проект, проверьте окно вывода.
Если проект собран успешно, в папке проекта bin
появится файл .dll
с именем MyCustomNode
. В нашем примере мы оставили путь к файлу проекта, как указано в Visual Studio по умолчанию: c:\users\username\documents\visual studio 2015\Projects
. Давайте рассмотрим структуру файлов проекта.
Папка
bin
содержит файл.dll
, собранный в Visual Studio.Файл проекта Visual Studio.
Файл класса.
Поскольку в конфигурации решения задано значение
Debug
(Отладка),.dll
будет создан вbin\Debug
.
Теперь можно открыть Dynamo и импортировать .dll
. С помощью функции добавления перейдите к папке проекта bin
и выберите файл .dll
, который требуется открыть.
Нажмите кнопку Add (Добавить) для импорта
.dll
.Перейдите к папке проекта. Наш проект находится в папке файла Visual Studio по умолчанию:
C:\Users\username\Documents\Visual Studio 2015\Projects\MyCustomNode
.Выберите
MyCustomNode.dll
для импорта.Нажмите
Open
(Открыть), чтобы загрузить.dll
.
Если категория была создана в библиотеке с именем MyCustomNode
, то DLL-файл импортирован успешно. Однако Dynamo создал два узла, а мы хотели, чтобы узел был один. В следующем разделе вы узнаете, почему так происходит и как Dynamo считывает DLL-файл.
MyCustomNode в библиотеке Dynamo. Категория «Библиотека» определяется именем
.dll
.SampleFunctions.MultiplyByTwo в рабочей области.
Когда Dynamo загружает DLL-файл, он предоставляет все открытые статические методы в виде узлов. Конструкторы, методы и свойства преобразуются в узлы Create, Action и Query соответственно. В нашем примере умножения метод MultiplyByTwo()
становится узлом Action в Dynamo. Это связано с тем, что узел назван в соответствии с методом и классом.
Входным данным присваивается имя
inputNumber
на основе имени параметра метода.По умолчанию выходным данным присваивается имя
double
, так как это возвращаемый тип данных.Узел называется
SampleFunctions.MultiplyByTwo
, так как содержит имена классов и методов.
В приведенном выше примере был создан дополнительный узел SampleFunctions
Create: мы явно не предоставили конструктор, поэтому он был создан автоматически. Этого можно избежать, создав пустой частный конструктор в классе SampleFunctions
.
Dynamo импортировал метод в качестве узла Create.
Узел умножения очень простой и не требует ссылок на Dynamo. Если необходимо получить доступ к функциям Dynamo, например для создания геометрии, используйте пакеты Dynamo NuGet.
ZeroTouchLibrary — пакет для создания библиотек автоматических узлов для Dynamo, который содержит следующие библиотеки: DynamoUnits.dll, ProtoGeometry.dll
WpfUILibrary — пакет для сборки библиотек узлов Dynamo с пользовательским интерфейсом в WPF, который содержит следующие библиотеки: DynamoCoreWpf.dll, CoreNodeModels.dll, CoreNodeModelWpf.dll
DynamoServices — библиотека DynamoServices для Dynamo
Core — инфраструктура модульного и системного тестирования для Dynamo, которая содержит следующие библиотеки: DSIronPython.dll, DynamoApplications.dll, DynamoCore.dll, DynamoInstallDetective.dll, DynamoShapeManager.dll, DynamoUtilities.dll, ProtoCore.dll, VMDataBridge.dll
Tests — инфраструктура модульного и системного тестирования для Dynamo, которая содержит следующие библиотеки: DynamoCoreTests.dll, SystemTestServices.dll, TestServices.dll
DynamoCoreNodes — пакет для сборки базовых узлов Dynamo, содержащий следующие библиотеки: Analysis.dll, GeometryColor.dll, DSCoreNodes.dll
Чтобы ссылаться на эти пакеты в проекте Visual Studio, скачайте пакет из NuGet по ссылкам выше и вручную укажите ссылки на DLL-файлы или используйте диспетчер пакетов NuGet в Visual Studio. Сначала мы рассмотрим, как их установить с помощью NuGet в Visual Studio.
Откройте диспетчер пакетов NuGet, выбрав
Tools > NuGet Package Manager > Manage NuGet Packages for Solution...
(Инструменты > Диспетчер пакетов NuGet > Управлять пакетами NuGet для решения).
Это диспетчер пакетов NuGet. В этом окне мы видим установленные для проекта пакеты и можем искать другие пакеты. Если выпущена новая версия пакета DynamoServices, можно обновить пакеты в этом разделе или вернуться к более ранней версии.
Нажмите кнопку обзора и найдите DynamoVisualProgramming, чтобы открыть пакеты Dynamo.
Пакеты Dynamo. Нажмите на один из пакетов, чтобы просмотреть его текущую версию и описание содержимого.
Выберите нужную версию пакета и нажмите кнопку Install (Установить). Пакет будет установлен для проекта, в котором вы работаете. Так как используется последняя стабильная версия Dynamo 1.3, выберите соответствующую версию пакета.
Чтобы вручную добавить пакет, загруженный из обозревателя, откройте диспетчер ссылок в обозревателе решений и перейдите к нужному пакету.
Щелкните правой кнопкой мыши
References
(Ссылки) и выберитеAdd Reference
(Добавить ссылку).Нажмите
Browse
(Обзор), чтобы перейти к папке пакета.
Итак, мы настроили Visual Studio и добавили .dll
в Dynamo. Теперь у нас есть надежная основа для дальнейшей работы. И это только начало. Далее вы узнаете, как создать пользовательский узел.