Dynamo-Erweiterungen können wie normale Dynamo-Blockbibliotheken im Package Manager bereitgestellt werden. Wenn ein installiertes Paket eine Ansichtserweiterung enthält, wird die Erweiterung zur Laufzeit geladen, wenn Dynamo geladen wird. Sie können in der Dynamo-Konsole überprüfen, ob die Erweiterung ordnungsgemäß geladen wurde.
Die Struktur eines Erweiterungspakets ist dieselbe wie die eines normalen Pakets und enthält Folgendes:
Wenn Sie die Erweiterung bereits erstellt haben, verfügen Sie (mindestens) über eine .NET-Assembly und eine Manifestdatei. Die Assembly sollte eine Klasse enthalten, die IViewExtension
oder IExtension
implementiert. Die XML-Manifestdatei teilt Dynamo mit, welche Klasse instanziiert werden soll, um die Erweiterung zu starten. Damit der Package Manager die Erweiterung ordnungsgemäß findet, muss die Manifestdatei genau dem Assembly-Speicherort und dem -Namen entsprechen.
Platzieren Sie alle Assembly-Dateien im Ordner bin
und die Manifestdatei im Ordner extra
. In diesem Ordner können auch weitere Objekte platziert werden.
Beispiel für .XML-Manifestdatei:
Sobald Sie einen Ordner mit den oben aufgeführten Unterverzeichnissen erstellt haben, können Sie mit dem Übertragen (Hochladen) in den Package Manager beginnen. Beachten Sie, dass Sie derzeit keine Pakete aus Dynamo Sandbox publizieren können. Dies bedeutet, dass Sie Dynamo Revit verwenden müssen. Navigieren Sie in Dynamo Revit zu Pakete => Neues Paket publizieren. Dadurch wird der Benutzer aufgefordert, sich bei seinem Konto bei Autodesk Account anzumelden, mit dem er das Paket verknüpfen möchte.
An dieser Stelle sollten Sie sich im normalen Fenster zum Publizieren des Pakets befinden, in dem Sie alle erforderlichen Felder für Ihr Paket/Ihre Erweiterung ausfüllen. Es gibt einen sehr wichtigen zusätzlichen Schritt, bei dem Sie sicherstellen müssen, dass keine der Assembly-Dateien als Blockbibliothek markiert ist. Klicken Sie dazu mit der rechten Maustaste auf die importierten Dateien (den oben erstellten Paketordner). Ein Kontextmenü wird angezeigt, in dem Sie diese Option aktivieren (oder deaktivieren) können. Alle Erweiterungs-Assemblys sollten deaktiviert werden.
Vor dem öffentlichen Publizieren sollten Sie immer lokal publizieren, um sicherzustellen, dass alles wie erwartet funktioniert. Nachdem Sie sich dahingehend vergewissert haben, können Sie durch Auswahl von Publizieren die Publizierung starten.
Um zu überprüfen, ob das Paket erfolgreich hochgeladen wurde, können Sie es anhand des im Publizierungsschritt angegebenen Namens und der Schlüsselwörter suchen. Beachten Sie zum Schluss noch, dass die Erweiterungen einen Neustart von Dynamo erfordern, bevor sie funktionieren. In der Regel erfordern diese Erweiterungen Parameter, die beim Starten von Dynamo angegeben werden.
Pakete sind eine einfache Möglichkeit, Blöcke zu speichern und gemeinsam mit der Dynamo-Community zu nutzen. Ein Paket kann alle möglichen Elemente enthalten, von benutzerdefinierten Blöcken, die im Dynamo-Arbeitsbereich erstellt wurden, bis hin zu von NodeModel abgeleiteten Blöcken. Pakete werden mit dem Package Manager publiziert und installiert. Zusätzlich zu dieser Seite enthält der Primer eine allgemeine Anleitung für Pakete.
Der Dynamo Package Manager ist eine Softwareregistrierung (ähnlich wie npm), auf die Sie über Dynamo oder über einen Webbrowser zugreifen können. Der Package Manager umfasst das Installieren, Publizieren, Aktualisieren und Anzeigen von Paketen. Wie npm verwaltet er verschiedene Versionen von Paketen. Außerdem können Sie so die Abhängigkeiten Ihres Projekts verwalten.
Suchen Sie im Browser nach Paketen, und zeigen Sie Statistiken an: https://dynamopackages.com/.
In Dynamo umfasst der Package Manager das Installieren, Publizieren und Aktualisieren von Paketen.
Online-Suche nach Paketen:
Packages > Search for a Package...
Anzeigen/Bearbeiten von installierten Paketen:
Packages > Manage Packages...
Publizieren eines neuen Pakets:
Packages > Publish New Package...
Pakete werden in Dynamo über den Package Manager publiziert. Es wird empfohlen, lokal zu publizieren, das Paket zu testen und dann online zu publizieren, um das Paket gemeinsam mit der Community zu nutzen. Anhand der NodeModel-Fallstudie werden die erforderlichen Schritte zum Publizieren des RectangularGrid-Blocks als Paket lokal und dann online beschrieben.
Starten Sie Dynamo, und wählen Sie Packages > Publish New Package...
, um das Fenster Publish a Package
zu öffnen.
Wählen Sie
Add file...
, um nach Dateien zu suchen, die dem Paket hinzugefügt werden sollen.Wählen Sie die beiden
.dll
-Dateien aus der NodeModel-Fallstudie aus.Wählen Sie
Ok
aus.
Geben Sie dem Paket einen Namen, eine Beschreibung und eine Versionsbezeichnung, wenn die Dateien dem Paketinhalt hinzugefügt wurden. Beim Publizieren eines Pakets mit Dynamo wird automatisch eine pkg.json
-Datei erstellt.
Ein Paket, das bereit für die Publizierung ist
Geben Sie die erforderlichen Informationen für Name, Beschreibung und Version ein.
Publizieren Sie das Paket, indem Sie auf Lokal publizieren klicken und den Dynamo-Paketordner
AppData\Roaming\Dynamo\Dynamo Core\1.3\packages
auswählen, damit der Block in Core verfügbar ist. Publizieren Sie immer lokal, bis das Paket so weit ist, dass es freigegeben werden kann.
Nach dem Publizieren eines Pakets sind die Blöcke in der Dynamo-Bibliothek unter der Kategorie CustomNodeModel
verfügbar.
Das soeben in der Dynamo-Bibliothek erstellte Paket.
Wenn das Paket online publiziert werden kann, öffnen Sie den Package Manager, wählen Sie Publish
und dann Publish Online
.
Um zu sehen, wie Dynamo das Paket formatiert hat, klicken Sie auf die drei vertikalen Punkte rechts neben CustomNodeModel und wählen Stammverzeichnis anzeigen.
Wählen Sie im Fenster zum Publizieren von Dynamo-Paketen
Publish
und dannPublish Online
aus.Um ein Paket zu löschen, wählen Sie
Delete
.
Das Aktualisieren eines Pakets ist ein ähnlicher Vorgang wie das Publizieren. Öffnen Sie den Package Manager, wählen Sie Publish Version...
für das Paket aus, das aktualisiert werden muss, und geben Sie eine höhere Version ein.
Wählen Sie
Publish Version
, um ein vorhandenes Paket mit neuen Dateien im Stammverzeichnis zu aktualisieren, und wählen Sie dann, ob es lokal oder online publiziert werden soll.
Der Web-Client des Package Manager wird ausschließlich zum Suchen und Anzeigen von Paketdaten wie z. B. Versionierung und Download-Statistiken verwendet.
Der Web-Client des Package Manager ist über folgenden Link verfügbar: https://dynamopackages.com/
Wenn Sie Assemblys entwickeln, die als Paket für Dynamo publiziert werden sollen, kann das Projekt so konfiguriert werden, dass alle erforderlichen Objekte gruppiert und in einer paketkompatiblen Verzeichnisstruktur abgelegt werden. Dadurch kann das Projekt schnell als Paket getestet werden und die Benutzererfahrung simuliert werden.
Es gibt zwei Methoden zum Erstellen eines Pakets in Visual Studio:
Hinzufügen von Postbuildereignissen über das Dialogfeld Projekteinstellungen, die XCopy- oder Python-Skripts zum Kopieren der erforderlichen Dateien verwenden
Verwenden des Build-Ziels AfterBuild in der .csproj
-Datei, um Aufgaben zum Kopieren von Dateien und Verzeichnissen zu erstellen
AfterBuild ist die bevorzugte Methode für diese Operationstypen (und die in diesem Handbuch beschriebenen), da sie nicht auf dem Kopieren von Dateien beruht, die möglicherweise nicht auf dem Build-Computer verfügbar sind.
Richten Sie die Verzeichnisstruktur im Repository so ein, dass die Quelldateien von den Paketdateien getrennt sind. Platzieren Sie das Visual Studio-Projekt und alle zugehörigen Dateien in einem neuen src
-Ordner, und arbeiten Sie dabei mit der Fallstudie CustomNodeModel. Sie speichern alle vom Projekt generierten Pakete in diesem Ordner. Die Ordnerstruktur sollte nun wie folgt aussehen:
Verschieben Sie die Projektdateien in den neuen
src
-Ordner.
Nachdem sich die Quelldateien in einem separaten Ordner befinden, fügen Sie der Datei CustomNodeModel.csproj
in Visual Studio ein AfterBuild
-Ziel hinzu. Dadurch sollten die erforderlichen Dateien in einen neuen Paketordner kopiert werden. Öffnen Sie die Datei CustomNodeModel.csproj
in einem Texteditor (wir haben Atom verwendet), und platzieren Sie das Build-Ziel vor dem schließenden </Project>
-Tag. Dieses AfterBuild-Ziel kopiert alle DLL-, PBD-, XML- und CONFIG-Dateien in einen neuen bin-Ordner und erstellt einen dyf-Ordner sowie zusätzliche Ordner.
Wir müssen sicherstellen, dass das Ziel der Datei
CustomNodeModel.csproj
hinzugefügt wurde (nicht einer anderen Projektdatei) und dass das Projekt keine vorhandenen Postbuild-Einstellungen aufweist.
Platzieren Sie das AfterBuild-Ziel vor dem
</Project>
-End-Tag.
Im Abschnitt <ItemGroup>
sind eine Reihe von Variablen definiert, die bestimmte Dateitypen darstellen. Die Variable Dll
stellt beispielsweise alle Dateien im Ausgabeverzeichnis mit der Erweiterung .dll
dar.
Die Aufgabe Copy
besteht darin, alle .dll
-Dateien in ein Verzeichnis zu kopieren, insbesondere den Paketordner, in dem die Erstellung erfolgt.
Dynamo-Pakete verfügen in der Regel über einen dyf
- und einen extra
-Ordner für benutzerdefinierte Dynamo-Blöcke und andere Objekte, z. B. Bilder. Um diese Ordner zu erstellen, müssen wir eine MakeDir
-Aufgabe verwenden. Diese Aufgabe erstellt einen Ordner, wenn er noch nicht vorhanden ist. Sie können diesem Ordner manuell Dateien hinzufügen.
Wenn Sie das Projekt erstellen, sollte der Projektordner jetzt einen packages
-Ordner neben dem zuvor erstellten src
-Ordner enthalten. Im packages
-Verzeichnis befindet sich ein Ordner, der alle für das Paket erforderlichen Elemente enthält. Außerdem müssen wir die Datei pkg.json
in den Paketordner kopieren, damit Dynamo erkennt, dass das Paket geladen werden soll.
Der neue Paketordner, den das AfterBuild-Ziel erstellt hat.
Der vorhandene src-Ordner mit dem Projekt.
Die Ordner
dyf
undextra
, die aus dem AfterBuild-Ziel erstellt wurden.Kopieren Sie die Datei
pkg.json
manuell.
Jetzt können Sie das Paket mithilfe des Paket-Managers von Dynamo publizieren oder es direkt in das Paketverzeichnis von Dynamo kopieren: <user>\AppData\Roaming\Dynamo\1.3\packages
.