La replicazione automatica dei nodi con Dynamo

Nella creazione di script in Dynamo spesso ci si trova a gestire non un singolo dato ma una serie di dati aggregati in apposite strutture dette liste. Le liste possono essere a loro volta composte da altre liste e questo concetto può essere ripetuto un numero n di volte aumentando la profondità della lista. La misura della profondità della lista è detta rango R e vale 0 per valori singoli, 1 per liste composte da singoli elementi, 2 per liste di liste e via dicendo.

Quando si fornisce come input ad un nodo una lista di rango n, ci si aspetta che Dynamo applichi ripetutamente la funzione del nodo a tutti gli elementi della lista e di fatto questo è ciò che realmente avviene. Tale meccanismo si chiama replicazione automatica ed è controllato da delle regole ben precise non sempre intuitive.

Applicazione della replicazione automatica al nodo SetParameterByName 

Facciamo un esempio su un caso pratico e abbastanza frequente: a partire da dei dati tabulati vogliamo utilizzare il nodo “SetParameterByName” per compilare le proprietà di una serie oggetti di Revit. Assumendo che le righe della tabella corrispondano in numero agli oggetti di Revit, l’abbinamento tra oggetto e riga della tabella avviene attraverso il campo Id, che funge quindi da chiave. Le proprietà da compilare sono 4 valori di una WBS fittizia (Tabella 1).

one-team_replicazione-automatica-nodi-dynamo-tab1.jpg

 

Importata dal file CSV tramite il nodo “Data.ImportCSV” e limitatamente alle 4 proprietà in esame, la tabella appare come una lista di rango 2 (Figura 1), composta da 211 liste (una per ogni riga della tabella) di 4 valori ciascuna, uno per ogni proprietà da compilare. La lista delle righe è più esterna rispetto a quelle dei valori.

L’importazione di una tabella CSV in Dynamo genera sempre una lista di righe di dati.

Utilizzando ad esempio il nodo “All Element of Category” e lavorando opportunamente sui dati si estrae l’elenco degli oggetti di Revit a cui assegnare le proprietà (Figura 2), mentre dalle intestazioni di colonna i nomi delle proprietà da valorizzare (Figura 3).

one-team_replicazione-automatica-nodi-dynamo-1-2-3.jpg

Applicando il nodo SetParameterByName non si ottiene però il risultato atteso. La replicazione avviene ma non nel modo corretto: è evidente considerando l’output del nodo: 4 parametri per solo 4 elementi invece dei 211 elementi attesi (Figura 4).

one-team_replicazione-automatica-nodi-dynamo-4.JPG

Parametri e argomenti

Da un lato c’è il nodo che si aspetta in input un parametro di un certo rango Rp, dall’altro ci sono gli input che lo script gli fornisce, cioè gli argomenti, di rango Ra. Il rango dei parametri è desumibile dalla descrizione del nodo: ad esempio “List.MaximumItem” (Figura 5) si aspetta in input una lista formata da elementi di qualsiasi tipo, quindi rango 1, e ciò si indica con var[].

>>> CONTINUA LA LETTURA NEL PDF ALLEGATO

Vuoi più informazioni sulla tematica? Scrivici a marketing@oneteam.it