> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/it/5_essential_nodes_and_concepts/5-5_dictionaries-in-dynamo/4-dictionary-use-cases.md).

# Casi di utilizzo di Revit

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.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-57ee2173304ed18fe380ba90ddf9f31665e7dd25%2Fdictionary%20-%20collect%20room%20in%20revit%20model.jpg?alt=media)

> 1. Raccogliere tutti i locali nel modello.
> 2. Specificare il numero del locale da trovare.
> 3. Ottenere il numero del locale e individuare l'indice in cui si trova.
> 4. Ottenere il locale in corrispondenza dell'indice.

## Esercizio: Dizionario dei locali

### Parte I: Creazione del dizionario dei locali

> 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.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-4f93fd657908d08d5fe64d8e8a9f2d37a06e8f0e%2Fdictionary%20-%20exercise%20I%20-%2001.jpg?alt=media)

> 1. Scegliere la categoria di Revit che si desidera utilizzare (in questo caso, i locali).
> 2. 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?](/it/5_essential_nodes_and_concepts/5-5_dictionaries-in-dynamo/1-what-is-a-dictionary.md).

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-1ec0f12a502edf4cea266e84cbef36bc69bb4cf4%2Fdictionary%20-%20exercise%20I%20-%2002.jpg?alt=media)

> 1. I dati che verranno utilizzati sono il numero del locale.

Ora verrà creato il dizionario con le chiavi e gli elementi specificati.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-2293c774b2396d2f4f01dfa23b073f1c58813ce0%2Fdictionary%20-%20exercise%20I%20-%2003.jpg?alt=media)

> 1. Il nodo **Dictionary.ByKeysValues** creerà un dizionario a partire dagli input appropriati.
> 2. `Keys` deve essere una stringa, mentre `values` può essere diversi tipi di oggetto.

Infine, è possibile recuperare un locale dal dizionario con il relativo numero.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-f4e7a958d123c0119fa00b3eebe2054f92ceea93%2Fdictionary%20-%20exercise%20I%20-%2004.jpg?alt=media)

> 1. `String` sarà la chiave utilizzata per cercare un oggetto nel dizionario.
> 2. **Dictionary.ValueAtKey** consentirà ora di ottenere l'oggetto dal dizionario.

### Parte II: Ricerca di valori

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.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-f5680fd0df22a9a1add6ef0e5b5b07ccf0baa0bd%2Fdictionary%20-%20exercise%20II%20-%2001.jpg?alt=media)

> 1. Invece di utilizzare il numero del locale come chiave, è possibile utilizzare il valore di un parametro (in questo caso si utilizzerà il livello).

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-5b4595a2050e731526ab4494549c40175516e9e1%2Fdictionary%20-%20exercise%20II%20-%2002.jpg?alt=media)

> 2. Ora è possibile raggruppare i locali in base al livello in cui risiedono.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-38c09a4621fd9d92d96a77c6bce3b1252d549bac%2Fdictionary%20-%20exercise%20II%20-%2003.jpg?alt=media)

> 3. 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.

![](https://977504712-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjugM499QmKp4nEs1EdU%2Fuploads%2Fgit-blob-2a2d40fc51954159b92ab916f1090e9617cfe953%2Fdictionary%20-%20exercise%20II%20-%2004.jpg?alt=media)

> 4. 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.
