Dynamo 2.0 non solo introduce i nodi descritti in precedenza per i dizionari, ma anche nei blocchi di codice per questo aspetto è disponibile una nuova funzionalità.
È possibile utilizzare la sintassi come illustrato di seguito o le rappresentazioni basate su DesignScript dei nodi.
Poiché un dizionario è un tipo di oggetto in Dynamo, è possibile eseguire il commit delle seguenti operazioni su di esso.
Il mantenimento di questo tipo di interazioni risulta particolarmente utile quando si correlano i dati di Revit alle stringhe. Successivamente, verranno esaminati alcuni casi di utilizzo di Revit.
Dynamo 2.0 introduce il concetto di separazione del tipo di dati del dizionario dal tipo di dati dell'elenco. Questa modifica può portare a modifiche significative al modo in cui si creano e si utilizzano i dati nei workflow. Prima della versione 2.0, i dizionari e gli elenchi venivano combinati come tipo di dati. In breve, gli elenchi erano in realtà dizionari con chiavi di numeri interi.
Un dizionario è un tipo di dati composto da una raccolta di coppie chiave-valore, in cui ogni chiave è univoca in ogni raccolta. Un dizionario non ha un ordine e in pratica è possibile cercare elementi mediante una chiave anziché un valore di indice, come in un elenco. In Dynamo 2.0, le chiavi possono essere solo stringhe.
Un elenco è un tipo di dati composto da una raccolta di valori ordinati. In Dynamo, gli elenchi utilizzano numeri interi come valori di indice.
La separazione dei dizionari dagli elenchi introduce i dizionari come cittadino di prima classe che è possibile utilizzare per memorizzare e cercare i valori in modo semplice e rapido, senza dover ricordare un valore di indice o mantenere una struttura di elenchi rigorosa durante tutto il workflow. Durante i test degli utenti, è stata riscontrata una riduzione significativa della dimensione del grafico quando sono stati utilizzati dizionari anziché diversi nodi GetItemAtIndex
.
Sono state apportate modifiche alla sintassi che consentono di modificare la modalità di inizializzazione e utilizzo dei dizionari e degli elenchi nei blocchi di codice.
I dizionari utilizzano la seguente sintassi: {key:value}
.
Gli elenchi utilizzano la seguente sintassi: [value,value,value]
.
Nella libreria sono stati introdotti nuovi nodi per aiutare a creare, modificare o sottoporre a query i dizionari.
Gli elenchi creati nei blocchi di codice v1.x verranno migrati automaticamente al caricamento dello script nella nuova sintassi dell'elenco che utilizza parentesi quadre [ ]
anziché parentesi graffe { }
\.
Nel settore scientifico dei computer, i dizionari, come gli elenchi, sono raccolte di oggetti. Sebbene gli elenchi siano in un ordine specifico, i dizionari sono raccolte non ordinate. Non si basano su numeri sequenziali (indici), ma utilizzano chiavi.
Nella seguente immagine viene illustrato un caso di utilizzo potenziale di un dizionario. Spesso i dizionari vengono utilizzati per correlare due dati che potrebbero non avere una correlazione diretta. In questo caso, si sta collegando la versione spagnola di una parola alla versione inglese per una successiva ricerca.
Creare un dizionario per correlare i due dati.
Ottenere il valore con la chiave specificata.
Si è mai voluto cercare qualcosa in Revit a partire da un dato?
Se la risposta è affermativa, è stato fatto qualcosa di simile al seguente esempio.
Nell'immagine seguente si raccolgono tutti i locali nel modello di Revit, si ottiene l'indice del locale desiderato (per numero del locale) e infine si acquisisce il locale in corrispondenza dell'indice.
Raccogliere tutti i locali nel modello.
Specificare il numero del locale da trovare.
Ottenere il numero del locale e individuare l'indice in cui si trova.
Ottenere il locale in corrispondenza dell'indice.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Ora procedere ricreando questa idea utilizzando i dizionari. Innanzitutto, è necessario raccogliere tutti i locali nel modello di Revit.
Scegliere la categoria di Revit che si desidera utilizzare (in questo caso, i locali).
Si indicherà a Dynamo di raccogliere tutti questi elementi.
Successivamente, è necessario decidere quali chiavi utilizzare per la ricerca di questi dati. Per informazioni sulle chiavi, vedere la sezione Che cos'è un dizionario?.
I dati che verranno utilizzati sono il numero del locale.
Ora verrà creato il dizionario con le chiavi e gli elementi specificati.
Il nodo Dictionary.ByKeysValues creerà un dizionario a partire dagli input appropriati.
Keys
deve essere una stringa, mentrevalues
può essere diversi tipi di oggetto.
Infine, è possibile recuperare un locale dal dizionario con il relativo numero.
String
sarà la chiave utilizzata per cercare un oggetto nel dizionario.Dictionary.ValueAtKey consentirà ora di ottenere l'oggetto dal dizionario.
Utilizzando la stessa logica del dizionario, è possibile creare dizionari anche con oggetti raggruppati. Se si volessero cercare tutti i locali ad un determinato livello, è possibile modificare il grafico sopra come indicato di seguito.
Invece di utilizzare il numero del locale come chiave, è possibile utilizzare il valore di un parametro (in questo caso si utilizzerà il livello).
Ora è possibile raggruppare i locali in base al livello in cui risiedono.
Con gli elementi raggruppati per livello, è ora possibile utilizzare le chiavi condivise (chiavi univoche) come chiave per il dizionario e gli elenchi di locali come elementi.
Infine, utilizzando i livelli nel modello di Revit, è possibile cercare i locali che risiedono in tale livello nel dizionario.
Dictionary.ValueAtKey
recupererà il nome del livello e restituirà gli oggetti locale in corrispondenza di tale livello.
Le opportunità di utilizzo del dizionario sono davvero infinite. La possibilità di correlare i dati BIM in Revit all'elemento stesso offre diversi casi di utilizzo.
I dizionari rappresentano una raccolta di dati correlati ad un altro elemento di dati noto come chiave. I dizionari consentono di cercare, eliminare e inserire dati in una raccolta.
Essenzialmente, si può pensare ad un dizionario come ad uno strumento davvero intelligente in cui cercare qualcosa.
Sebbene la funzionalità del dizionario sia disponibile da tempo in Dynamo, Dynamo 2.0 introduce un nuovo metodo di gestione di questo tipo di dati.
Dynamo 2.0 consente di visualizzare un'ampia varietà di nodi Dictionary da utilizzare. Ciò include i nodi di Create, Action e Query.
Dictionary.ByKeysValues
creerà un dizionario con le chiavi e i valori forniti. (il numero di voci corrisponderà all'input più breve dell'elenco).
Dictionary.Components
produrrà i componenti del dizionario di input. (è l'opposto del nodo Create).
Dictionary.RemoveKeys
produrrà un nuovo oggetto dizionario con le chiavi di input rimosse.
Dictionary.SetValueAtKeys
creerà un nuovo dizionario basato sulle chiavi di input e sui valori per sostituire il valore corrente nelle chiavi corrispondenti.
Dictionary.ValueAtKey
restituirà il valore nella chiave di input.
Dictionary.Count
indicherà il numero di coppie chiave-valore presenti nel dizionario.
Dictionary.Keys
restituirà le chiavi attualmente memorizzate nel dizionario.
Dictionary.Values
restituirà i valori attualmente memorizzati nel dizionario.
La correlazione complessiva dei dati con i dizionari rappresenta un'alternativa significativa al vecchio metodo di utilizzo di indici ed elenchi.
Immagine gentilmente concessa da