{"id":51105,"date":"2020-04-19T06:30:11","date_gmt":"2020-04-19T04:30:11","guid":{"rendered":"http:\/\/smeupnew.it\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/"},"modified":"2020-04-19T06:30:11","modified_gmt":"2020-04-19T04:30:11","slug":"dynamo-per-la-replicazione-automatica-dei-nodi","status":"publish","type":"post","link":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/","title":{"rendered":"Dynamo: la replicazione automatica dei nodi"},"content":{"rendered":"<p>Nella creazione di script in Dynamo spesso ci si trova a gestire non un singolo dato ma una <strong>serie di dati<\/strong> aggregati in apposite strutture dette liste. Le liste possono essere a loro volta composte da altre liste e questo concetto pu\u00f2 essere ripetuto un numero n di volte <strong>aumentando la profondit\u00e0<\/strong> della lista. La misura della profondit\u00e0 della lista \u00e8 detta rango R e vale 0 per valori singoli, 1 per liste composte da singoli elementi, 2 per liste di liste e via dicendo.<\/p>\n<p>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 \u00e8 ci\u00f2 che realmente avviene. Tale meccanismo si chiama <strong>replicazione automatica<\/strong> ed \u00e8 controllato da delle regole ben precise non sempre intuitive.<\/p>\n<h5>Applicazione della replicazione automatica al nodo SetParameterByName<\/h5>\n<p>Facciamo un esempio su un caso pratico e abbastanza frequente: a partire da dei dati tabulati vogliamo utilizzare il nodo \u201c<strong>SetParameterByName<\/strong>\u201d per compilare le propriet\u00e0 di una serie oggetti di Revit. Assumendo che le righe della tabella corrispondano in numero agli oggetti di Revit, l\u2019abbinamento tra oggetto e riga della tabella avviene attraverso il campo Id, che funge quindi da chiave. Le propriet\u00e0 da compilare sono 4 valori di una WBS fittizia (Tabella 1).<\/p>\n<div id=\"attachment_40643\" style=\"width: 950px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Tabella_1.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40643\" class=\"lazyload size-large wp-image-40643\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27940%27%20height%3D%27554%27%20viewBox%3D%270%200%20940%20554%27%3E%3Crect%20width%3D%27940%27%20height%3D%27554%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Tabella_1-1024x603.png\" alt=\"\" width=\"940\" height=\"554\" \/><\/a><p id=\"caption-attachment-40643\" class=\"wp-caption-text\">Tabella 1<\/p><\/div>\n<p>Importata dal file CSV tramite il nodo \u201cData.ImportCSV\u201d e limitatamente alle 4 propriet\u00e0 in esame, la tabella appare come <strong>una lista di rango 2<\/strong> (Figura 1), composta da 211 liste (una per ogni riga della tabella) di 4 valori ciascuna, uno per ogni propriet\u00e0 da compilare. La lista delle righe \u00e8 pi\u00f9 esterna rispetto a quelle dei valori.<\/p>\n<p>L\u2019importazione di una tabella CSV in Dynamo genera sempre una lista di righe di dati.<\/p>\n<p>Utilizzando ad esempio il nodo \u201c<strong>All Element of Category<\/strong>\u201d e lavorando opportunamente sui dati si estrae l\u2019elenco degli oggetti di Revit a cui assegnare le propriet\u00e0 (Figura 2), mentre dalle intestazioni di colonna i nomi delle propriet\u00e0 da valorizzare (Figura 3).<\/p>\n<div id=\"attachment_40644\" style=\"width: 298px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-1.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40644\" class=\"lazyload wp-image-40644 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27288%27%20height%3D%27300%27%20viewBox%3D%270%200%20288%20300%27%3E%3Crect%20width%3D%27288%27%20height%3D%27300%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-1-288x300.png\" alt=\"\" width=\"288\" height=\"300\" \/><\/a><p id=\"caption-attachment-40644\" class=\"wp-caption-text\">Figura 1<\/p><\/div>\n<div id=\"attachment_40645\" style=\"width: 234px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-2.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40645\" class=\"lazyload wp-image-40645 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27224%27%20height%3D%27300%27%20viewBox%3D%270%200%20224%20300%27%3E%3Crect%20width%3D%27224%27%20height%3D%27300%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-2-224x300.png\" alt=\"\" width=\"224\" height=\"300\" \/><\/a><p id=\"caption-attachment-40645\" class=\"wp-caption-text\">Figura 2<\/p><\/div>\n<div id=\"attachment_40646\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-3.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40646\" class=\"lazyload wp-image-40646 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27179%27%20viewBox%3D%270%200%20300%20179%27%3E%3Crect%20width%3D%27300%27%20height%3D%27179%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-3-300x179.png\" alt=\"\" width=\"300\" height=\"179\" \/><\/a><p id=\"caption-attachment-40646\" class=\"wp-caption-text\">Figura 3<\/p><\/div>\n<p>Applicando il nodo <strong>SetParameterByName<\/strong> non si ottiene per\u00f2 il risultato atteso. La replicazione avviene ma non nel modo corretto: \u00e8 evidente considerando l\u2019output del nodo: 4 parametri per solo 4 elementi invece dei 211 elementi attesi (Figura 4).<\/p>\n<div id=\"attachment_40656\" style=\"width: 216px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-4.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40656\" class=\"lazyload wp-image-40656 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27206%27%20height%3D%27300%27%20viewBox%3D%270%200%20206%20300%27%3E%3Crect%20width%3D%27206%27%20height%3D%27300%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-4-206x300.png\" alt=\"\" width=\"206\" height=\"300\" \/><\/a><p id=\"caption-attachment-40656\" class=\"wp-caption-text\">Figura 4<\/p><\/div>\n<p>Parametri e argomenti<\/p>\n<p>Da un lato c\u2019\u00e8 il nodo che si aspetta in input un <strong>parametro<\/strong> di un certo rango Rp, dall\u2019altro ci sono gli input che lo script gli fornisce, cio\u00e8 gli <strong>argomenti<\/strong>, di rango Ra. Il rango dei parametri \u00e8 desumibile dalla <strong>descrizione del nodo<\/strong>: ad esempio \u201cList.MaximumItem\u201d (Figura 5) si aspetta in input una lista formata da elementi di qualsiasi tipo, quindi rango 1, e ci\u00f2 si indica con var[].<\/p>\n<div id=\"attachment_40647\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-5.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40647\" class=\"lazyload wp-image-40647 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27178%27%20viewBox%3D%270%200%20300%20178%27%3E%3Crect%20width%3D%27300%27%20height%3D%27178%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-5-300x178.png\" alt=\"\" width=\"300\" height=\"178\" \/><\/a><p id=\"caption-attachment-40647\" class=\"wp-caption-text\">Figura 5<\/p><\/div>\n<p>In generale si possono avere i seguenti casi:<br \/>\n<a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/casi.png\"><img decoding=\"async\" class=\"lazyload aligncenter wp-image-40648 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27130%27%20viewBox%3D%270%200%20300%20130%27%3E%3Crect%20width%3D%27300%27%20height%3D%27130%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/casi-300x130.png\" alt=\"\" width=\"300\" height=\"130\" \/><\/a><br \/>\nPer ciascun input non \u00e8 detto che il rango del parametro Rp corrisponda a quello dell\u2019argomento Ra. Se il nodo si aspetta un parametro di rango 1 e noi forniamo un argomento di rango 3, Dynamo deve <strong>replicare la funzione<\/strong> in modo da iterare su tutti i valori delle liste. \u00c8 come se ogni parametro avesse una certa capienza Rp superata la quale avviene la replicazione del nodo e l\u2019iterazione degli elementi nelle liste. Ma come avviene la replicazione?<\/p>\n<h5>Le regole della replicazione<\/h5>\n<p>Per ogni parametro i-esimo si valuta la differenza <strong>dRi<\/strong> tra il rango dell\u2019argomento fornito e quello del parametro atteso, tralasciando i parametri con rango generico (var[]..[]). Dopodich\u00e9:<\/p>\n<ul>\n<li>Se in almeno due casi si ha un dRi maggiore di zero, si applica l\u2019iterazione zip breve sui valori di tali argomenti, cio\u00e8 la funzione del nodo viene ripetuta accoppiando uno a uno gli elementi delle liste pi\u00f9 esterne troncando il risultato sulla lunghezza della lista pi\u00f9 corta. Gli altri argomenti che non necessitano di iterazione rimangono fissi all\u2019interno di ciascuna ripetizione del nodo.<\/li>\n<li>Se in un solo caso si ha dRi maggiore di zero, si applica la ripetizione cartesiana su tale argomento, cio\u00e8 la funzione del nodo viene ripetuta sugli elementi della lista pi\u00f9 esterna mentre gli altri argomenti che non necessitano di ripetizione rimangono fissi.<\/li>\n<li>Si sottrae 1 da ciascuno dei dRi precedentemente calcolati e si riparte da capo, fermandosi quando tutti i dRi sono uguali a zero.<\/li>\n<\/ul>\n<p>Dalla procedura sopra descritta emerge che:<\/p>\n<ul>\n<li>la replicazione pu\u00f2 avvenire diverse volte, che identificheremo come step, fino a quando tutti i dRi non si annullano<\/li>\n<li>in caso di replicazione zip breve tra liste di lunghezza diversa, i valori eccedenti della lista pi\u00f9 lunga vengono troncati e quindi non entrano nella valutazione del nodo<\/li>\n<li>i diversi livelli di replicazione agiscono dall\u2019esterno verso l\u2019interno delle liste e ad ogni passaggio si va ad intaccare un livello pi\u00f9 profondo (ecco perch\u00e9 si sottrae 1 dai dRi)<\/li>\n<\/ul>\n<p>Ora \u00e8 possibile spiegare cosa \u00e8 successo con il nodo SetParameter secondo le regole della replicazione.<\/p>\n<p>Dalla firma del nodo (Figura 6) si vede che tutti i parametri hanno rango 0 essendo elementi singoli di tipo Element, string e var rispettivamente.<\/p>\n<p>Gli argomenti forniti hanno invece, nell\u2019ordine, rango 1, 1 e 2. Il valore del rango \u00e8 simbolicamente rappresentato dai quadrati colorati (Figura 7)<\/p>\n<div id=\"attachment_40649\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-6.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40649\" class=\"lazyload wp-image-40649 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27209%27%20viewBox%3D%270%200%20300%20209%27%3E%3Crect%20width%3D%27300%27%20height%3D%27209%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-6-300x209.png\" alt=\"\" width=\"300\" height=\"209\" \/><\/a><p id=\"caption-attachment-40649\" class=\"wp-caption-text\">Figura 6<\/p><\/div>\n<div id=\"attachment_40650\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-7.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40650\" class=\"lazyload wp-image-40650 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27162%27%20viewBox%3D%270%200%20300%20162%27%3E%3Crect%20width%3D%27300%27%20height%3D%27162%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-7-300x162.png\" alt=\"\" width=\"300\" height=\"162\" \/><\/a><p id=\"caption-attachment-40650\" class=\"wp-caption-text\">Figura 7<\/p><\/div>\n<p>STEP 1: replicazione zip breve tra i 3 argomenti. La corrispondenza avviene a livello pi\u00f9 esterno delle liste. Si noti che essendo la lista dei nomi dei parametri quella pi\u00f9 corta e composta da 4 elementi, quelle degli oggetti di Revit e dei valori dei parametri verranno troncate a tale lunghezza (Figura 8). Inoltre, la corrispondenza uno a uno dei membri delle liste comporta che nel primo oggetto Revit verr\u00e0 compilata solo la propriet\u00e0 WBS_L1, nel secondo solo WBS_L2 e cos\u00ec via (Figura 9). L\u2019elemento utilizzato per valorizzare la propriet\u00e0 in ciascuno dei 4 casi sar\u00e0 una lista, non un singolo valore come il nodo si attende, quindi avverr\u00e0 una seconda replicazione.<br \/>\nAllo step 1 il nodo viene quindi ripetuto in totale 4 volte.<\/p>\n<div id=\"attachment_40651\" style=\"width: 280px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-8.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40651\" class=\"lazyload wp-image-40651 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27270%27%20height%3D%27300%27%20viewBox%3D%270%200%20270%20300%27%3E%3Crect%20width%3D%27270%27%20height%3D%27300%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-8-270x300.png\" alt=\"\" width=\"270\" height=\"300\" \/><\/a><p id=\"caption-attachment-40651\" class=\"wp-caption-text\">Figura 8<\/p><\/div>\n<p><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-9.png\"><img decoding=\"async\" class=\"lazyload aligncenter wp-image-40652 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27190%27%20viewBox%3D%270%200%20300%20190%27%3E%3Crect%20width%3D%27300%27%20height%3D%27190%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-9-300x190.png\" alt=\"\" width=\"300\" height=\"190\" \/><\/a><\/p>\n<div id=\"attachment_40652\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-9.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40652\" class=\"lazyload wp-image-40652 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27190%27%20viewBox%3D%270%200%20300%20190%27%3E%3Crect%20width%3D%27300%27%20height%3D%27190%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-9-300x190.png\" alt=\"\" width=\"300\" height=\"190\" \/><\/a><p id=\"caption-attachment-40652\" class=\"wp-caption-text\">Figura 9<\/p><\/div>\n<p>STEP 2: replicazione cartesiana. Gli argomenti element e parameterName non richiedono pi\u00f9 iterazione in quanto sono singoli valori con rango 0 per i quali dR=0. L\u2019argomento value \u00e8 invece una lista di rango 1 per cui, secondo le regole sopra esposte, avverr\u00e0 un\u2019iterazione cartesiana su ciascuno dei suoi valori. Quindi per ciascun oggetto di Revit, la stessa propriet\u00e0 verr\u00e0 settata 4 volte, ogni volta sovrascrivendo il precedente valore che alla fine risulter\u00e0 \u201cWa\u201d (Figura 10).<\/p>\n<p>Allo step 2 il nodo viene ripetuto 4 volte per ciascuna delle 4 ripetizioni dello step 1, quindi per un totale di 16 volte.<\/p>\n<p>Utilizzando il nodo Element.GetParameterValueByName si pu\u00f2 verificare il risultato finale inatteso (Figura 11), corrispondente alla situazione di partenza di Figura 4.<\/p>\n<div id=\"attachment_40653\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-10.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40653\" class=\"lazyload wp-image-40653 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27193%27%20viewBox%3D%270%200%20300%20193%27%3E%3Crect%20width%3D%27300%27%20height%3D%27193%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-10-300x193.png\" alt=\"\" width=\"300\" height=\"193\" \/><\/a><p id=\"caption-attachment-40653\" class=\"wp-caption-text\">Figura 10<\/p><\/div>\n<div id=\"attachment_40654\" style=\"width: 119px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-11.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-40654\" class=\"lazyload wp-image-40654 size-medium\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27109%27%20height%3D%27300%27%20viewBox%3D%270%200%20109%20300%27%3E%3Crect%20width%3D%27109%27%20height%3D%27300%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.smeup.com\/wp-content\/uploads\/2020\/04\/Figura-11-109x300.png\" alt=\"\" width=\"109\" height=\"300\" \/><\/a><p id=\"caption-attachment-40654\" class=\"wp-caption-text\">Figura 11<\/p><\/div>\n<h5>Conclusioni su Dynamo per la replicazione automatica dei nodi<\/h5>\n<p>\u00c8 evidente che la mancata comprensione delle regole di replicazione pu\u00f2 portare a risultati inattesi e pericolosi. Nell\u2019esempio esaminato il nodo non restituisce alcun avviso, perch\u00e9 di fatto le operazioni eseguite sono formalmente corrette, ma i valori impostati nelle propriet\u00e0 degli oggetti di Revit sono errati ed incompleti. Il comportamento di default del nodo non \u00e8 utile ai fini dell\u2019esempio e in generale sorge l\u2019esigenza di poter controllare le modalit\u00e0 con cui la replicazione viene eseguita. La riposta a questa esigenza sono le guide di replicazione che verranno trattate nel prossimo articolo.[vc_row][vc_column el_class=&#8221;blog-author&#8221;][distance][vc_separator el_width=&#8221;50&#8243;][vc_row_inner][vc_column_inner el_class=&#8221;blog-author-img&#8221; width=&#8221;1\/12&#8243;][vc_single_image img_size=&#8221;60&#215;60&#8243;][\/vc_column_inner][vc_column_inner el_class=&#8221;blog-author-txt&#8221; width=&#8221;5\/6&#8243;][vc_column_text]<strong>Massimiliano Baraldo<br \/>\n<\/strong><em><span style=\"font-weight: 400;\">BIM Manager e AEC Technical Specialist per One Team srl<\/span> &#8211; Gruppo Sme.UP<br \/>\n<\/em><a href=\"https:\/\/www.linkedin.com\/in\/massimiliano-baraldo-74507133\/\" target=\"_blank\" rel=\"noopener noreferrer\">My LinkedIn Profile<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00f2 essere ripetuto un numero n di volte aumentando la profondit\u00e0 della lista. La misura della profondit\u00e0 della lista \u00e8 detta rango R e vale 0 per valori singoli, 1 per liste composte da singoli elementi, 2 per liste di liste e via dicendo.<\/p>\n","protected":false},"author":1,"featured_media":51106,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[6734,6735],"class_list":["post-51105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-da-smeup","tag-dynamo","tag-replicazione-automatica-dei-nodi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP<\/title>\n<meta name=\"description\" content=\"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP\" \/>\n<meta property=\"og:description\" content=\"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/\" \/>\n<meta property=\"og:site_name\" content=\"Magazine\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-19T04:30:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1067\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"smeup\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"smeup\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/\"},\"author\":{\"name\":\"smeup\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"headline\":\"Dynamo: la replicazione automatica dei nodi\",\"datePublished\":\"2020-04-19T04:30:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/\"},\"wordCount\":1311,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2021\\\/03\\\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg\",\"keywords\":[\"Dynamo\",\"replicazione automatica dei nodi\"],\"articleSection\":[\"News da smeup\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/\",\"name\":\"Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2021\\\/03\\\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg\",\"datePublished\":\"2020-04-19T04:30:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"description\":\"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2021\\\/03\\\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg\",\"contentUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2021\\\/03\\\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg\",\"width\":1600,\"height\":1067},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/dynamo-per-la-replicazione-automatica-dei-nodi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamo: la replicazione automatica dei nodi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\",\"name\":\"Magazine\",\"description\":\"smeup\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\",\"name\":\"smeup\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"caption\":\"smeup\"},\"sameAs\":[\"https:\\\/\\\/www.smeup.com\"],\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP","description":"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/","og_locale":"it_IT","og_type":"article","og_title":"Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP","og_description":"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.","og_url":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/","og_site_name":"Magazine","article_published_time":"2020-04-19T04:30:11+00:00","og_image":[{"width":1600,"height":1067,"url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg","type":"image\/jpeg"}],"author":"smeup","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"smeup","Tempo di lettura stimato":"7 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#article","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/"},"author":{"name":"smeup","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"headline":"Dynamo: la replicazione automatica dei nodi","datePublished":"2020-04-19T04:30:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/"},"wordCount":1311,"commentCount":0,"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg","keywords":["Dynamo","replicazione automatica dei nodi"],"articleSection":["News da smeup"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/","url":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/","name":"Dynamo per la replicazione automatica dei nodi - Gruppo Sme.UP","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#primaryimage"},"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg","datePublished":"2020-04-19T04:30:11+00:00","author":{"@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"description":"Dynamo per la replicazione automatica dei nodi \u00e8 controllato da regole ben precise non sempre intuitive. Approfondisci in questo articolo.","breadcrumb":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#primaryimage","url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg","contentUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2021\/03\/dynamo-per-la-replicazione-automatica-dei-nodi.jpg","width":1600,"height":1067},{"@type":"BreadcrumbList","@id":"https:\/\/www.smeup.com\/magazine\/blog\/dynamo-per-la-replicazione-automatica-dei-nodi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.smeup.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Dynamo: la replicazione automatica dei nodi"}]},{"@type":"WebSite","@id":"https:\/\/www.smeup.com\/magazine\/#website","url":"https:\/\/www.smeup.com\/magazine\/","name":"Magazine","description":"smeup","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.smeup.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7","name":"smeup","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","caption":"smeup"},"sameAs":["https:\/\/www.smeup.com"],"url":"https:\/\/www.smeup.com\/magazine\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/51105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/comments?post=51105"}],"version-history":[{"count":0,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/51105\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media\/51106"}],"wp:attachment":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media?parent=51105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/categories?post=51105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/tags?post=51105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}