Dynamo ist ein Tool für die visuelle Programmierung in Revit mit dem Sie die Möglichkeit haben visuelle Skripts für das Programmverhalten zu erstellen (mit sogenannten Blöcken/Nodes), benutzerdefinierte Logik zu definieren sowie Skripts in verschiedenen textbasierten Programmiersprachen zu erstellen.
In diesem Blogeintrag möchten wir Ihnen unsere Top 10 verwendeten Nodes vorstellen.
1. Select Model Element:
Aufgabe:
Mit dieser Node ist es möglich ein Element aus dem Model spezifisch auszuwählen. Mit diesem Element können dann weitere Operationen durchgeführt werden.
Anwendungsbeispiel:
Wenn nur ein einzelnes Element aus dem Dokument verwendet werden soll, dann greift man auf diese Node zurück, um es direkt aus dem Modell auswählen zu können.
2. Watch:
Aufgabe:
Diese Node wird dazu verwendet, eine Anzeige zwischen zwei Nodes zu schalten.
Hierbei wird das aktuelle Ergebnis dargestellt und unverändert weitergegeben.
Anwendungsbeispiel:
Um Listen anzuzeigen und Änderungen schneller zu erkennen, sowie einen Überblick über die Daten zu bekommen, die verarbeitet werden ist die Node besonders nützlich.
3. Categories:
Aufgabe:
Mit dieser Node kann man eine Kategorie aus dem Modell auswählen.
Anwendungsbeispiel:
Dadurch ist es möglich auf Elemente einer Kategorie zuzugreifen (Node: All Elements of Category) und die Kategorie dahin zu übergeben.
4. All Elements of Category:
Aufgabe:
Erzeugt eine Liste mit allen Elementen aus einer übergebenen Kategorie (Node: Categories).
Anwendungsbeispiel:
Wird dazu verwendet, um z. B. alle Rohre oder Wände aus einem Modell in einer Liste zusammenzustellen.
5. Codeblock:
Aufgabe:
Der Codeblock ist das vielseitigste Node, das dem User zur Verfügung steht und kann für Zahlen, Zeichenfolgen, Formeln und andere Datentypen verwendet werden. Es kann daher eine beliebige Variable im Codeblock definiert werden, die anschließend automatisch den Eingaben des Blocks hinzugefügt wird.
Anwendungsbeispiel:
Zur Erstellung von benutzerspezifischen Eingaben und Definition von Formeln, wie hier im Beispiel die Definition eines Punktes mit Koordinaten:
6. == (und die meisten anderen Mathematik-Nodes):
Aufgabe:
Wird dazu verwendet zwei Dinge zu vergleichen. Dabei wird eine Liste zurückgegeben.
Anwendungsbeispiel:
Diese Node ist sinnvoll, wenn man z.B. überprüfen will, ob ein Wert in einer Liste vorkommt und sie gibt anschließend eine Liste mit True- oder False-Werten zurück.
7. Element.ElementType:
Aufgabe:
Diese Node gibt den Typ des jeweiligen übergebenen Elements zurück. Dieser Typ wird im Zahlenformat angegeben.
Anwendungsbeispiel:
Meist wird der gefundene Typ eines Elementes dann dazu verwendet eine Liste danach zu filtern.
8. FilterByBoolMask:
Aufgabe:
Dient dazu eine Liste mit Bool-Werten, die Wahr oder Falsch beinhalten auf eine bestehende Liste anzuwenden. Die Indizes von beiden Listen werden nach Wahr und Falsch aufgeteilt und es entstehen zwei separate Listen.
Die „in“-Liste beinhaltet die Einträge der Liste aus dem Argument „list“ bei denen ein Wahr-Eintrag aus der „mask“-Liste mit dem Index übereinstimmt, die „out“-Liste beinhaltet die Falsch-Einträge.
Anwendungsbeispiel:
In diesem Beispiel wird eine boolsche Liste erzeugt, indem überprüft wird, ob ein Eintrag mit dem Wort „bimBlog“ übereinstimmt.
Da dies bei einem Wort der Fall ist, lautet die erstellte boolsche Liste (false, false, true).
Damit man nun die Einträge, die übereinstimmen mit denen die nicht passen trennen kann, wird der boolsche Filter angewendet.
9. List.Sort:
Aufgabe:
Diese Node nimmt eine Liste als Argument und sortiert die Einträge aufsteigend. Dies funktioniert mit Buchstaben und Zahlen.
Anwendungsbeispiel:
Um bestehende Listen zu sortieren und danach weiterzuverwenden.
10. Element.GetParameterValueByName:
Aufgabe:
Diese Node wird dazu verwendet einen bestimmten Parameter/Eigenschaft eines Elements oder auch einer Liste aus Elementen auszulesen und sich in einer weiteren Liste ausgeben zu lassen.
Anwendungsbeispiel:
Wenn ein Parameter in der Aufgabe eine wichtige Rolle spielt, kann man mit dieser Node einen Überblick über den jeweiligen Parameter bekommen.