Las extensiones de Dynamo se pueden implementar en Package Manager igual que las bibliotecas de nodos de Dynamo normales. Cuando un paquete instalado contiene una extensión de vista, la extensión se carga en el tiempo de ejecución durante la carga de Dynamo. Puede comprobar en la consola de Dynamo que la extensión se haya cargado correctamente.
La estructura de un paquete de extensión es la misma que la de un paquete normal y contiene lo siguiente:
Suponiendo que ya haya creado la extensión, tendrá (como mínimo) un montaje de .NET y un archivo manifest. El montaje debe contener una clase que implemente IViewExtension
o IExtension
. El archivo manifest .XML indica a Dynamo la clase de la que se debe crear una instancia para iniciar la extensión. Para que Package Manager pueda localizar correctamente la extensión, el archivo manifest debe corresponderse con la ubicación y el nombre del montaje.
Incluya los archivos de montaje en la carpeta bin
y el archivo manifest en la carpeta extra
. Los componentes adicionales también se pueden incluir en esta carpeta.
Archivo manifest .XML de ejemplo:
Una vez que tenga una carpeta que contenga los subdirectorios indicados anteriormente, podrá enviar (cargar) elementos a Package Manager. Algo que debe tener en cuenta es que actualmente no se pueden publicar paquetes desde Dynamo Sandbox. Esto significa que debe utilizar Dynamo Revit. Una vez en Dynamo Revit, vaya a Paquetes => Publicar paquete nuevo. Se solicitará al usuario que inicie sesión en la cuenta de Autodesk Account a la que desea asociar el paquete.
En este momento, debería encontrarse en la ventana normal de publicación de paquetes, donde introducirá todos los campos necesarios relativos a su paquete o extensión. Hay un paso adicional muy importante que requiere asegurarse de que ninguno de los archivos de montaje se marque como biblioteca de nodos. Para ello, haga clic con el botón derecho en los archivos que ha importado (la carpeta de paquetes creada anteriormente). Aparecerá un menú contextual que le permite activar (o desactivar) esta opción. Todos los montajes de extensión deben estar desactivados.
Antes de realizar la publicación pública, debe efectuarla siempre localmente para asegurarse de que todo funciona según lo previsto. Una vez que se haya verificado esto, puede seleccionar Publicar para llevar a cabo el proceso.
Para comprobar que el paquete se haya cargado correctamente, debe poder buscarlo con la nomenclatura y las palabras clave especificadas en el paso de publicación. Por último, es importante señalar que las mismas extensiones requerirán un reinicio de Dynamo antes de poder utilizarse. Por lo general, al iniciar Dynamo, se deben especificar parámetros para estas extensiones.
Los paquetes permiten almacenar y compartir de forma cómoda nodos con la comunidad de Dynamo. Un paquete puede contener todo tipo de elementos, desde nodos personalizados creados en el espacio de trabajo de Dynamo hasta nodos derivados de NodeModel. Los paquetes se publican y se instalan mediante Package Manager. Además de esta página, Dynamo Primer incluye una guía general sobre los paquetes.
La herramienta Package Manager de Dynamo es un registro de software (similar a npm) al que se puede acceder desde Dynamo o en un navegador web. Package Manager permite la instalación, la publicación, la actualización y la visualización de paquetes. Al igual que npm, conserva diferentes versiones de los paquetes. También ayuda a administrar las dependencias del proyecto.
En el navegador, busque paquetes y vea estadísticas. Para ello, visite https://dynamopackages.com/.
En Dynamo, Package Manager permite la instalación, la publicación y la actualización de paquetes.
Busque paquetes en línea mediante
Packages > Search for a Package...
.Vea o edite los paquetes instalados mediante
Packages > Manage Packages...
.Publique un nuevo paquete
Packages > Publish New Package...
.
Los paquetes se publican desde Package Manager en Dynamo. El proceso recomendado es publicar localmente, probar el paquete y, a continuación, publicar en línea para compartirlo con la comunidad. Mediante el caso real de NodeModel, vamos a seguir los pasos necesarios para publicar localmente el nodo RectangularGrid como un paquete y, a continuación, en línea.
Inicie Dynamo y seleccione Packages > Publish New Package...
para abrir la ventana Publish a Package
.
Seleccione
Add file...
para buscar archivos que añadir al paquete.Seleccione los dos archivos
.dll
del caso real de NodeModel.Seleccione
Ok
.
Una vez que se hayan añadido los archivos al contenido del paquete, asigne al paquete un nombre, una descripción y una versión. Al publicar un paquete mediante Dynamo, se crea automáticamente un archivo pkg.json
.
Un paquete listo para su publicación.
Proporcione la información necesaria para el nombre, la descripción y la versión.
Haga clic en "Publicar localmente" para publicar y seleccione la carpeta de paquetes de Dynamo,
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
, para que el nodo esté disponible en Core. Realice siempre la publicación localmente hasta que el paquete esté listo para compartirse.
Después de publicar un paquete, los nodos estarán disponibles en la biblioteca de Dynamo, en la categoría CustomNodeModel
.
El paquete que acabamos de crear en la biblioteca de Dynamo
Una vez que el paquete esté listo para publicarse en línea, abra Package Manager, y seleccione Publish
y, a continuación, Publish Online
.
Para ver cómo Dynamo ha aplicado formato al paquete, haga clic en los tres puntos verticales que aparecen a la derecha de "CustomNodeModel" y elija "Mostrar directorio raíz".
Seleccione
Publish
y, a continuación,Publish Online
en la ventana "Publicar un paquete de Dynamo".Para suprimir un paquete, seleccione
Delete
.
La actualización de un paquete es un proceso similar al de su publicación. Abra Package Manager, seleccione Publish Version...
en el paquete que debe actualizarse y especifique una versión posterior.
Seleccione
Publish Version
para actualizar un paquete existente con nuevos archivos en el directorio raíz y, a continuación, elija si debe publicarse localmente o en línea.
El cliente web de Package Manager se utiliza exclusivamente para buscar y ver datos de paquetes, como el control de versiones y las estadísticas de descarga.
Se puede acceder al cliente web de Package Manager en el siguiente vínculo: https://dynamopackages.com/.
Si está desarrollando montajes para publicarlos como un paquete para Dynamo, el proyecto se puede configurar para agrupar todos los componentes necesarios y colocarlos en una estructura de directorios compatible con paquetes. Esto permitirá probar rápidamente el proyecto como un paquete y simular la experiencia de un usuario.
Existen dos métodos para compilar un paquete en Visual Studio:
Añada eventos posteriores a la compilación a través del cuadro de diálogo Configuración del proyecto que utilizan secuencias de comando de xcopy o Python para copiar los archivos necesarios.
Utilice el destino de compilación AfterBuild del archivo .csproj
para crear tareas de copia de archivos y directorios.
AfterBuild es el método preferido para estos tipos de operaciones (y el que se describe en esta guía) ya que no se basa en la copia de archivos, que puede no estar disponible en el equipo de compilación.
Configure la estructura de directorios en el repositorio de forma que los archivos de código fuente sean independientes de los archivos de paquetes. Al trabajar con el caso real CustomNodeModel, incluya el proyecto de Visual Studio y todos los archivos asociados en una nueva carpeta src
. Almacenará todos los paquetes generados por el proyecto en esta carpeta. La estructura de carpetas debería presentar el siguiente aspecto:
Desplace los archivos de proyecto a la nueva carpeta
src
.
Deberá asegurarse de que el destino se haya añadido al archivo
CustomNodeModel.csproj
(no a otro archivo de proyecto) y de que el proyecto no presente ninguna configuración posterior a la compilación.
Coloque el destino AfterBuild antes de la etiqueta
</Project>
final.
En la sección <ItemGroup>
, se definen varias variables para representar tipos de archivo específicos. Por ejemplo, la variable Dll
representa todos los archivos del directorio de salida cuya extensión es .dll
.
La tarea Copy
consiste en copiar todos los archivos .dll
en un directorio, en concreto, la carpeta de paquetes en la que se está realizando la compilación.
Los paquetes de Dynamo suelen incluir las carpetas dyf
y extra
para los nodos personalizados de Dynamo y otros componentes como imágenes. Para crear estas carpetas, debemos utilizar una tarea MakeDir
. Esta creará una carpeta si no existe. Puede añadir archivos manualmente a esta carpeta.
Si compila el proyecto, su carpeta debería incluir ahora una carpeta packages
junto a la carpeta src
creada anteriormente. En el directorio packages
, hay una carpeta que contiene todo lo necesario para el paquete. También es necesario copiar el archivo pkg.json
en la carpeta de paquetes para que Dynamo sepa cómo cargar el paquete.
La nueva carpeta de paquetes creada por el destino AfterBuild.
La carpeta src existente con el proyecto.
Las carpetas
dyf
yextra
creadas a partir del destino AfterBuild.Copie manualmente el archivo
pkg.json
.
Ahora puede publicar el paquete con la herramienta Package Manager de Dynamo o copiarlo directamente en el directorio de paquetes de Dynamo, <user>\AppData\Roaming\Dynamo\1.3\packages
.
Ahora que los archivos de código fuente se encuentran en una carpeta independiente, añada un destino AfterBuild
al archivo CustomNodeModel.csproj
en Visual Studio. Esta acción debería copiar los archivos necesarios en una nueva carpeta de paquetes. Abra el archivo CustomNodeModel.csproj
en un editor de texto (hemos utilizado ) y coloque el destino de compilación antes de la etiqueta </Project>
de cierre. Este destino AfterBuild copiará todos los archivos .dll, .pbd, .xml y .config en una nueva carpeta bin y creará una carpeta dyf y otras adicionales.