Dynamo 2.0 stellt eine Reihe von Wörterbuch-Blöcken für die Verwendung bereit. Dies umfasst die Blöcke für Erstellen, Aktion und Abfragen.
Dictionary.ByKeysValues
erstellt ein Wörterbuch mit den bereitgestellten Werten und Schlüsseln. (Die Anzahl der Einträge entspricht der Länge der kürzesten Liste.)
Dictionary.Components
erstellt die Komponenten des Eingabe-Wörterbuchs. (Dieser Vorgang ist die Umkehrung der Block-Erstellung.)
Dictionary.RemoveKeys
erzeugt ein neues Wörterbuch-Objekt und entfernt die Eingabe-Schlüssel.
Dictionary.SetValueAtKeys
erzeugt ein neues Wörterbuch anhand der eingegebenen Schlüssel und Werte und ersetzt den aktuellen Wert in den entsprechenden Schlüsseln.
Dictionary.ValueAtKey
gibt den Wert am Eingabeschlüssel zurück.
Dictionary.Count
gibt an, wie viele Schlüssel-Wert-Paare sich im Wörterbuch befinden.
Dictionary.Keys
gibt zurück, welche Schlüssel derzeit im Wörterbuch gespeichert sind.
Dictionary.Values
gibt zurück, welche Werte derzeit im Wörterbuch gespeichert sind.
Die Möglichkeit, Daten allgemein mit Wörterbücher in Beziehung zu setzen, ist eine großartige Alternative zur vorherigen Verwendung von Indizen und Listen.
Dynamo 2.0 führt das Konzept der Trennung des Datentyps Wörterbuch und des Datentyps Liste ein. Diese Neuerung bewirkt einige wichtige Änderungen hinsichtlich der Art und Weise, wie Sie Daten erstellen und in Ihren Arbeitsabläufen verwenden. Vor Version 2.0 waren Wörterbücher und Listen ein kombinierter Datentyp. Kurz gesagt: Listen waren eigentlich Wörterbücher mit ganzzahligen Schlüsseln.
Bei einem Wörterbuch handelt es sich um einen Datentyp, der aus einer Sammlung von Schlüssel-Wert-Paaren besteht. Jeder Schlüssel in einer Sammlung ist eindeutig. In einem Wörterbuch gibt es keine Reihenfolge. Im Prinzip "schlagen Sie Dinge nach", indem Sie einen Schlüssel anstelle eines Indexwerts in einer Liste verwenden. In Dynamo 2.0 können Schlüssel nur Zeichenfolgen sein.
Bei einer Liste handelt es sich um einen Datentyp, der aus einer Sammlung von sortierten Werten besteht. In Dynamo verwenden Listen Ganzzahlen als Indexwerte.
Durch die Trennung von Wörterbüchern und Listen werden Wörterbücher zu wichtigen Datentypen, mit denen Sie schnell und einfach Werte speichern und nachschlagen können, ohne die Indexwerte kennen oder eine exakte Listenstruktur durch Ihre Arbeitsabläufe beibehalten zu müssen. Während der Benutzertests sahen wir eine erhebliche Reduzierung der Diagrammgröße, wenn Wörterbücher anstatt mehrerer GetItemAtIndex
-Blöcke verwendet wurden.
Es wurden Änderungen an der Syntax vorgenommen. Die Initialisierung und Verwendung von Wörterbüchern und Listen in Codeblöcken funktioniert jetzt anders.
Wörterbücher verwenden die folgende Syntax: {key:value}
Listen verwenden die folgende Syntax: [value,value,value]
Es wurden neue Blöcke in der Bibliothek eingeführt, mit denen Sie einfacher Wörterbücher erstellen, ändern und abfragen können.
Listen, die in v1.x-Codeblöcken erstellt wurden, werden automatisch beim Laden des Skripts zur neuen Listensyntax migriert, die eckige [ ]
anstelle von geschweiften Klammern { }
verwendet. \
In der Computerwissenschaft handelt es sich bei Wörterbüchern – wie bei Listen – um Sammlungen von Objekten. Während Listen jedoch in einer bestimmten Reihenfolge erstellt werden, sind die Sammlungen in Wörterbüchern nicht sortiert. Es sind keine Nummernsequenzen (Indizes) erforderlich. Stattdessen werden Schlüssel verwendet.
In der folgenden Abbildung sehen Sie eine mögliche Verwendung eines Wörterbuchs. Wörterbücher werden häufig genutzt, um zwei Teile von Daten zu verbinden, die vielleicht keine direkte Beziehung zueinander aufweisen. In unserem Fall verbinden wir die spanische Version eines Worts mit der englischen Version, so dass wir das Wort später nachschlagen können.
Erstellt ein Wörterbuch, um die beiden Daten miteinander zu verknüpfen.
Ruft den Wert mit dem angegebenen Schlüssel ab.
Dynamo 2.0 stellt nicht nur die oben erwähnten Blöcke für Wörterbücher zur Verfügung, sondern gibt Codeblöcken auch neue Funktionen.
Sie können die im Folgenden beschriebene Syntax für Blöcke verwenden, oder sie auf DesignScript-Basis darstellen.
Da ein Wörterbuch in Dynamo ein Objekttyp ist, können wir die folgenden Aktionen damit ausführen.
Diese Art der Interaktion ist besonders nützlich, um Revit-Daten mit Zeichenfolgen in Bezug zu setzen. Als Nächstes sehen wir uns einige Anwendungsfälle in Revit an.
Wollten Sie jemals etwas in Revit anhand eines Datenelements nachschlagen?
Wahrscheinlich haben Sie bereits etwas wie das folgende Beispiel durchgeführt.
In der Abbildung unten sammeln wir alle Räume im Revit-Modell, rufen den Index des gewünschten Raum (nach Raumnummer) ab, und erhalten schließlich die Indexnummer des Raums.
Alle Räume im Modell sammeln.
Zu suchende Raumnummer.
Rufen Sie die Raumnummer ab und ermitteln Sie, an welchem Index sie sich befindet.
Rufen Sie den Raum am Index ab.
Laden Sie die Beispieldatei herunter, indem Sie auf den folgenden Link klicken.
Eine vollständige Liste der Beispieldateien finden Sie im Anhang.
Lassen Sie uns das nun mit Wörterbüchern probieren. Zuerst müssen wir alle Räume in das Revit-Modell sammeln.
Wir wählen wir die Revit-Kategorie, die wir verwendenden möchten (in diesem Fall Räume).
Wir weisen Dynamo an, alle diese Elemente zu sammeln.
Als Nächstes müssen wir entscheiden, welche Schlüssel wir verwenden, um diese Daten zu suchen. (Informationen zu Schlüsseln finden Sie im Abschnitt Was ist ein Wörterbuch?).
Die Daten, die wir verwenden, ist die Raumnummer.
Jetzt erstellen wir das Wörterbuch mit den angegebenen Schlüsseln und Elementen.
Der Block Dictionary.ByKeysValues erstellt ein Wörterbuch anhand der entsprechenden Eingaben.
Bei
Keys
muss es sich um eine Zeichenfolge handelt, abervalues
können verschiedene Objekttypen sein.
Jetzt können wir einen Raum aus dem Wörterbuch über seine Raumnummer abrufen.
String
ist der Schlüssel, den wir verwenden, um ein Objekt im Wörterbuch nachzuschlagen.Dictionary.ValueAtKey ruft das Objekt aus dem Wörterbuch ab.
Mit derselben Wörterbuch-Logik können wir auch Wörterbücher mit gruppierten Objekten erstellen. Wenn wir zum Beispiel alle Räume auf einer bestimmten Ebene nachschlagen möchten, können wir das obige Diagramm folgendermaßen verändern.
Anstatt die Zimmernummer als Schlüssel zu nutzen, können wir nun einen Parameterwert verwenden (in diesem Fall Ebene).
Jetzt können wir die Räume nach der Ebene gruppieren, auf der sie sich befinden.
Wir haben die Elemente nach Ebene gruppiert. Jetzt können wir die gemeinsam verwendeten Schlüssel (eindeutige Schlüssel) als Schlüssel für das Wörterbuch und die Listen der Räume als die Elemente verwenden.
Letztendlich können wird die Ebenen im Revit-Modell nutzen, um zu ermitteln, welche Räume sich auf dieser Ebene im Wörterbuch befinden.
Dictionary.ValueAtKey
nimmt den Ebenennamen und gibt die Raumobjekte auf dieser Ebene wieder.
Mit dem Wörterbuch stehen uns praktisch unbeschränkte Möglichkeiten zur Verfügung. Die Möglichkeit, eine Beziehung zwischen Ihren BIM-Daten in Revit und dem eigentlichen Element herzustellen, ermöglicht zahlreiche Anwendungsfälle.
Wörterbücher stehen für eine Sammlung von Daten, die in Bezug zu einem anderen Datenelement stehen, das als Schlüssel bezeichnet wird. Wörterbücher bieten die Möglichkeit, Daten zu suchen, zu löschen und in eine Sammlung einzufügen.
Im Prinzip ist ein Wörterbuch eine wirklich clevere Methode, etwas nachzuschlagen.
Die Wörterbuch-Funktionalität ist schon seit einiger Zeit in Dynamo verfügbar, aber in Dynamo 2.0 haben Sie neue Möglichkeiten, diesen Datentyp zu verwalten.
Originalbild mit freundlicher Genehmigung von: sixtysecondrevit.com