Autodesk Dynamo - benutzerdefinierte Blöcke mit Dropdown Menü

15. April 2016 AEC/BIM

Autodesk Dynamo bietet dem Anwender nicht nur die Möglichkeit eigene Blöcke zu erstellen, sondern auch deren Aussehen frei zu definieren. Der folgende Blogbeitrag zeigt Ihnen, wie es geht.

Allgemeine Informationen zur Erstellung eigener Dynamo Blöcke mit eigener Benutzeroberfläche

Dynamo ist ein Open Source Projekt, d. h. dass der Quellcode für jeden zugänglich ist und bei Bedarf angepasst und erweitert werden kann. Wenn Sie Blöcke mit eigenen Steuerelementen definieren wollen, können Sie dies mit einer C#-Programmierung tun.

Mit einigem Programmierwissen können Sie Blöcke mit Buttons, Auswahlfeldern, Textfeldern usw. erstellen, so wie es auch von Revit-Dynamo-Eingabeblöcken bekannt ist.
Dynamo Beispiele für Blocke mit angepasstem UI

Dynamo Beispiele für Blocke mit angepasstem UI

Im Dynamo Repository auf github.com liegt der Quellcode von Dynamo offen. Schnittstellen und Klassen wie z. B. INodeViewCustumisation, NodeModel geben Funktionen vor, die jederzeit in eigenen Klassen durch Hinzufügen von Verweisen verwendet bzw. angepasst werden können.

Grundsätzlich muss ein Anwender zwei Klassen implementieren. Eine, die die Benutzeroberfläche beschreibt und eine, die die Verarbeitungslogik beschreibt. Bei einer Umsetzung sind Programmierkenntnisse in C# und ein Grundverständnis für die objektorientierte Programmierung zwingend Voraussetzung.
Schema Erstellung Dynamo Blöcke mit eigenem UI

Schema Erstellung Dynamo Blöcke mit eigenem UI

Die implementierten Klassen müssen anschließend kompiliert werden. Das entstandene Assembly (dll-Datei) muss anschließend nur noch in den Dynamo-Installationsordner in den Unterordner „nodes“ kopiert werden und Ihr eigener Knoten steht Ihnen in Dynamo zur Verfügung.
eigene Blockdefinitionen im Ordner Dynamo nodes

eigene Blockdefinitionen im Ordner Dynamo nodes

Konkrete Beispiele

Das folgende Beispiel entstand auf Anfrage eines Kunden.

Es bestand die Anforderung einen Dynamoblock zu entwickeln, der eine Auswahl von Eingabetexten bereitstellt. Die Texte sollten in einer Auswahlliste selektierbar sein. Die feste Vorgabe von Texten hat den Vorteil, dass bei standardisierten Eingaben Tippfehler vermieden werden und die vorgegebenen Werte besser ausgewertet werden können.

Ein solcher Knoten könnte in etwa so aussehen:
Dynamo Block mit angepasstem UI

Custom Node mit eigenem UI

In Dynamo gibt es bereits Klassen, die Auswahlfelder bereitstellen und als Grundlage für eigene Anpassungen verwendet werden können. Diese können durch das Einbinden von Verweisen dem eigenen Visual Studio Projekt hinzugefügt werden. Folgende Dynamo-Assemblies sind zur Realisierung einer Auswahlliste einzubinden:

  • CoreNodeModels.dll
  • CoreNodeModelsWPF.dll
  • DynamoCore.dll
  • DynamoCoreWPF.dll
  • ProtoCore.dll

Durch eine Überschreibung der Methoden der Klassen DropDownNodeViewCustomization und DSDropDownBase mittels „override“ kann auf einfache Art und Weise ein eigener Knoten mit einem Auswahlfeld implementiert werden.

Im Idealfall entspricht die Anpassung des Layouts bereits Ihren Vorstellungen, dann würde die Anpassung der Klasse DropDownNodeViewCustomization etwa so aussehen:

Codebeispiel Implementierung INodeViewCustomization

Codebeispiel Implementierung INodeViewCustomization

Die Klasse DSDrowDownBase muss innerhalb der Methoden PopulateItems() und BuildOutputAst() angepasst werden.

Innerhalb der Methode PopulateItems() müssen Sie beschreiben, wie Ihr Dropdown-Menü zu füllen ist. Die Methode BuildOutputAst() beschreibt, wie Ihre Input-Werte zu Output-Werten zu wandeln sind. Eine Anpassung könnte in etwa so aussehen:

Codebeispiel Umsetzung vom DSDropDownBase

Codebeispiel Umsetzung einer DSDropDownBase

Über der erstellten Klasse stehen in eckigen Klammern Attribute, die von Dynamo genutzt werden, um beispielsweise die Kategorie, den Blocknamen oder auch Tooltips zu erstellen.

Der hier gezeigte Block sieht vor, dass die Auswahlfeldeinträge direkt im Quellcode beschrieben werden. Um den hier gezeigten Block flexibler einsetzen zu können, habe ich einen weiteren Block programmiert, der eine Text-Datei einliest und für jede Zeile einen Auswahlfeldeintrag generiert.

Die folgende Abbildung zeigt, wie Sie mit Dynamo Ihre Liste befüllen bzw. wieder auslesen könnten:
Dynamo - Werte in eine Liste ausgeben bzw. aus einer Liste einlesen

Die hier gezeigten Knoten sowie den Quelltext können Sie über das Formular herunterladen.

Sie sind nach dem Kopieren in den „nodes“ -Ordner unter der Kategorie „NuP_Blocks“ in Dynamo verfügbar.

Sie möchten mehr zum Thema Dynamo oder allgemein zur Programmierung erfahren. Wir haben ein weites Spektrum an Programmierschulungsthemen und können Ihnen gern beibringen, wie Sie Dynamo nutzen oder auch Dynamo bzw. Revit mit eigenen Zusatz-Programmierungen erweitern können. Sprechen Sie uns diesbezüglich doch einfach an.

Weitere Informationen zum Thema finden Sie unter:

 


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

ID-01-Autodesk-Banner-Promo

Blog abonnieren
ID-02_BIM-AEC_BIMuniversity

BIMuniversity 2020 – Fachvorträge

Verwandte Beiträge

Country Kit für Autodesk Civil 3D 2021 – Neuerungen in Hülle und Fülle

10. September 2020 AEC/BIM

Autodesk® Civil 3D® ist fester Bestandteil der AEC Collection und kann dort mit den anderen Werkzeugen wie AutoCAD®, AutoCAD® Map 3D, InfraWorks®, Vehicle Tracking, Revit®, Navisworks®, ReCap und Dynamo interagieren. Die dortigen Neuerungen werden wir in weiteren Blogbeiträgen vorstellen. In diesem Blogbeitrag gehen wir auf die Highlights vom Country Kit für Civil 3D® 2021 ein.

Was ist BIM 360 Design?

26. August 2020 AEC/BIM

Autodesk hat mit der BIM 360-Produktfamilie eine neue Generation von Software entwickelt, die mit Hilfe von Cloud-Technologie die Zusammenarbeit erleichtert. Nachdem wir uns in früheren Blogbeiträgen der Zusammenarbeit von BIM 360 Design mit Revit und Civil 3D gewidmet haben, beleuchten wir in diesem Beitrag BIM 360 Design als eigenständiges Produkt.

Verbesserungen und Funktionserweiterungen in Revit 2021.1

12. August 2020 AEC/BIM

Der Blogbeitrag ist eine Ergänzung zum Beitrag Neuerungen in Autodesk Revit 2021, den wir Ende Juli veröffentlicht haben. Nachdem Autodesk eine aktualisierte Version 2021.1 veröffentlicht hat, möchten wir nun auch die Verbesserungen des aktuellen Punkt-Release vorstellen. Revit 2021.1 kann über die Autodesk Desktop-App heruntergeladen werden.

© 2020 N+P Informationssysteme GmbHNewsletter anmeldenKarriereKontaktImpressumDatenschutzerklärung