Dynamo
Primer for v2.0
Italiano
Italiano
  • Informazioni
  • Introduzione
    • Che cos'è Dynamo e come funziona?
    • Guida introduttiva, comunità e piattaforma di Dynamo
  • Installazione per Dynamo
  • Interfaccia utente
    • Area di lavoro
    • Libreria
  • Nodi e fili
  • Nodi e concetti essenziali
    • Indice dei nodi
    • Geometria per la progettazione computazionale
      • Panoramica sulla geometria
      • Vettore, piano e sistema di coordinate
      • Punti
      • Curve
      • Superfici
      • Solidi
      • Mesh
    • Elementi di base dei programmi
      • Dati
      • Matematica
      • Logica
      • Stringhe
      • Colore
    • Progettazione con elenchi
      • Che cos'è un elenco?
      • Utilizzo di elenchi
      • Elenchi di elenchi
      • Elenchi n-dimensionali
    • Dizionari in Dynamo
      • Che cos'è un dizionario?
      • Nodi Dictionary
      • Dizionari nei blocchi di codice
      • Casi di utilizzo di Revit
  • Pacchetti e nodi personalizzati
    • Nodi personalizzati
      • Introduzione ai nodi personalizzati
      • Creazione di un nodo personalizzato
      • Pubblicazione nella libreria
    • Pacchetti
      • Introduzione ai pacchetti
      • Case study di un pacchetto - Mesh Toolkit
      • Sviluppo di un pacchetto
      • Pubblicazione di un pacchetto
      • Importazione zero-touch
  • Dynamo per Revit
    • Correlazione con Revit
    • Selezione
    • Modifica
    • Creazione
    • Personalizzazione
    • Documentazione
  • Dynamo for Civil 3D
    • Connessione a Civil 3D
    • Per iniziare
    • Libreria di nodi
    • Esempi di workflow
      • Strade
        • Posizionamento di lampioni
      • Gestione catastale
        • Posizionamento dei servizi
      • Impianti di pubblica utilità
        • Ridenominazione di strutture
      • Ferrovia
        • Sagoma dello spazio libero
      • Rilievi
        • Gestione di gruppi di punti
    • Argomenti avanzati
      • Unione di oggetti
      • Python e Civil 3D
    • Dynamo Player
    • Pacchetti utili
    • Risorse
  • Dynamo in Forma Beta
    • Impostazione di Dynamo Player in Forma
    • Aggiunta e condivisione di grafici in Dynamo Player
    • Esecuzione di grafici in Dynamo Player
    • Differenze tra Dynamo compute service e Desktop Dynamo
  • Codifica in Dynamo
    • Blocchi di codice e DesignScript
      • Cos'è un blocco di codice?
      • Sintassi di DesignScript
      • Sintassi abbreviata
      • Funzioni
    • Geometria con DesignScript
      • Nozioni di base della geometria DesignScript
      • Primitive geometriche
      • Matematica vettoriale
      • Curve: punti interpolati e di controllo
      • Traslazione, rotazione e altre trasformazioni
      • Superfici: punti interpolati e di controllo, loft, rivoluzione
      • Parametrizzazione geometrica
      • Intersezione e taglio
      • Operazioni booleane geometriche
      • Generatori di punti di Python
    • Python
      • Nodi Python
      • Python e Revit
      • Impostazione del modello di Python personalizzato
    • Modifiche al linguaggio
  • Procedure ottimali
    • Strategie sui grafici
    • Strategie di scripting
    • Riferimento per lo scripting
    • Gestione del programma
    • Utilizzo efficiente di set di dati di grandi dimensioni in Dynamo
  • Esempi di workflow
    • Introduzione ai workflow
      • Vaso parametrico
      • Punti attrattore
    • Indice concettuale
  • Guida introduttiva per sviluppatori
    • Compilazione di Dynamo dalla sorgente
      • Compilazione di DynamoRevit dalla sorgente
      • Gestione e aggiornamento delle dipendenze in Dynamo
    • Sviluppo per Dynamo
      • Per iniziare
      • Case study zero-touch - Nodo griglia
      • Esecuzione di script Python in nodi zero-touch (C#)
      • Ulteriori informazioni sul concetto di zero-touch
      • Personalizzazione avanzata dei nodi di Dynamo
      • Utilizzo di tipi COM (interoperabilità) nei pacchetti di Dynamo
      • Case study NodeModel - Interfaccia utente personalizzata
      • Aggiornamento di pacchetti e librerie di Dynamo per Dynamo 2.x
      • Aggiornamento di pacchetti e librerie di Dynamo per Dynamo 3.x
      • Estensioni
      • Definizione dell'organizzazione di pacchetti personalizzati (Dynamo 2.0 e versioni successive)
      • Interfaccia della riga di comando di Dynamo
      • Integrazione per Dynamo
      • Sviluppo per Dynamo for Revit
      • Pubblicazione di un pacchetto
      • Creazione di un pacchetto da Visual Studio
      • Estensioni come pacchetti
    • Richieste pull
    • Aspettative di test
    • Esempi
  • Appendice
    • Domande frequenti
    • Programmazione visiva e Dynamo
    • Risorse
    • Note di rilascio
    • Pacchetti utili
    • File di esempio
    • Mappa di integrazione host
    • Download del file PDF
    • Tasti di scelta rapida di Dynamo
Powered by GitBook
On this page
  • Che cos'è un elenco?
  • Indici in base zero
  • Input e output
  • Collegamento
  • Cos'è la replica?
  • Esercizio
  • L'elenco più breve
  • L'elenco più lungo
  • Globale
Edit on GitHub
Export as PDF
  1. Nodi e concetti essenziali
  2. Progettazione con elenchi

Che cos'è un elenco?

PreviousProgettazione con elenchiNextUtilizzo di elenchi

Last updated 5 days ago

Che cos'è un elenco?

Un elenco è una raccolta di elementi o voci. Si prenda, ad esempio, un casco di banane. Ogni banana è una voce all'interno dell'elenco (o del casco). È più semplice raccogliere un casco di banane piuttosto che ogni singola banana e ciò vale anche per il raggruppamento di elementi secondo relazioni parametriche in una struttura di dati.

Quando si fanno acquisti nei negozi di alimentari, si mettono tutti gli oggetti acquistati in una borsa. Questa borsa è anche un elenco. Per fare il pane alla banana, occorrono 3 caschi di banane (servono per fare molto pane alla banana). La borsa rappresenta un elenco di caschi di banane e ogni casco rappresenta un elenco di banane. La borsa è un elenco di elenchi (bidimensionali) e il casco di banane è un elenco (unidimensionale).

In Dynamo, i dati dell'elenco vengono ordinati e la prima voce di ogni elenco ha un indice 0. Di seguito, saranno descritte la modalità di definizione degli elenchi in Dynamo e la modalità di relazione reciproca tra più elenchi.

Indici in base zero

Una cosa che potrebbe sembrare strana all'inizio è che il primo indice di un elenco è sempre 0; non 1. Così, quando si parla della prima voce di un elenco, si intende in realtà la voce che corrisponde all'indice 0.

Ad esempio, se si dovesse contare il numero di dita della mano destra, è probabile aver contato da 1 a 5. Tuttavia, se si dovessero inserire le dita in un elenco, in Dynamo sarebbero stati assegnati loro indici compresi tra 0 e 4. Sebbene questo possa sembrare un po' strano ai principianti in fatto di programmazione, l'indice in base zero è una pratica standard nella maggior parte dei sistemi di calcolo.

Nell'elenco sono ancora presenti 5 voci, questo perché l'elenco sta utilizzando un sistema di conteggio in base zero. E le voci memorizzate nell'elenco non devono essere solo numeri. Possono essere qualsiasi tipo di dati supportato da Dynamo, ad esempio punti, curve, superfici, famiglie e così via.

a. Indice

b. Punto

c. Elemento

Spesso il modo più semplice per esaminare il tipo di dati memorizzati in un elenco è collegare un nodo di controllo all'output di un altro nodo. Per default, il nodo di controllo mostra automaticamente tutti gli indici sul lato sinistro dell'elenco e visualizza gli elementi di dati sul lato destro.

Questi indici sono un elemento fondamentale quando si utilizzano gli elenchi.

Input e output

Per quanto riguarda gli elenchi, input e output variano a seconda del nodo di Dynamo utilizzato. Ad esempio, è possibile utilizzare un elenco di 5 punti e collegare questo output a due diversi nodi di Dynamo: PolyCurve.ByPoints e Circle.ByCenterPointRadius:

  1. L'input points per PolyCurve.ByPoints cerca “Point[]”. Rappresenta un elenco di punti.

  2. L'output per PolyCurve.ByPoints è una PolyCurve singola creata da un elenco di cinque punti.

  3. L'input centerPoint per Circle.ByCenterPointRadius richiede "Point".

  4. L'output per Circle.ByCenterPointRadius è un elenco di cinque cerchi i cui centri corrispondono all'elenco originale di punti.

I dati di input per PolyCurve.ByPoints e Circle.ByCenterPointRadius sono gli stessi, tuttavia il nodo Polycurve.ByPoints fornisce una PolyCurve mentre il nodo Circle.ByCenterPointRadius fornisce 5 cerchi con centri in ogni punto. In modo intuitivo, questa operazione ha senso: la PolyCurve viene disegnata come curva che collega i 5 punti, mentre i cerchi creano un cerchio diverso in ogni punto. Quindi cosa sta succedendo con i dati?

Posizionando il cursore sull'input points per Polycurve.ByPoints, si noterà che l'input cerca “Point[]”. Notare le parentesi alla fine. Rappresenta un elenco di punti e, per creare una PolyCurve, l'input deve essere un elenco per ogni PolyCurve. Questo nodo comprimerà pertanto ogni elenco in una PolyCurve.

Dall'altro lato, l'input centerPoint per Circle.ByCenterPointRadius richiede "Point". Questo nodo cerca un punto, come elemento, per definire il punto centrale del cerchio. Per questo motivo, si ottengono cinque cerchi dai dati di input. Riconoscere queste differenze con gli input in Dynamo aiuta a comprendere meglio il funzionamento dei nodi durante la gestione dei dati.

Collegamento

La corrispondenza dei dati è un problema senza una soluzione chiara. Si verifica quando un nodo ha accesso a input di dimensioni diverse. La modifica dell'algoritmo di corrispondenza dei dati può portare a risultati molto diversi.

Si immagini un nodo che crea segmenti di linea tra punti (Line.ByStartPointEndPoint). Avrà due parametri di input che forniscono entrambi le coordinate dei punti:

L'elenco più breve

Il modo più semplice consiste nel collegare gli input uno ad uno finché uno dei flussi non si esaurisce. Viene definito l'algoritmo "l'elenco più breve". Questo è il funzionamento di default per i nodi di Dynamo:

L'elenco più lungo

L'algoritmo "l'elenco più lungo" continua a collegare gli input e a riutilizzare gli elementi, finché tutti i flussi non si esauriscono:

Globale

Infine, il metodo Globale rende possibili tutti i collegamenti:

Come si può vedere, esistono diversi modi in cui è possibile disegnare linee tra questi gruppi di punti. Per trovare le opzioni del collegamento, fare clic con il pulsante destro del mouse sul centro di un nodo e scegliere il menu Collegamento.

Cos'è la replica?

Si immagini di avere un grappolo d'uva. Per ottenere il succo d'uva, non bisogna spremere ogni acino singolarmente, ma metterli tutti insieme nello spremiagrumi. La replica in Dynamo funziona in modo simile: anziché applicare un'operazione ad un elemento alla volta, Dynamo può applicarla ad un intero elenco in un'unica operazione.

I nodi di Dynamo riconoscono automaticamente quando stanno lavorando con gli elenchi e applicano le loro operazioni a più elementi. Ciò significa che non è necessario scorrere manualmente gli elementi, ma semplicemente che questo avviene. Ma come fa Dynamo a decidere come elaborare gli elenchi quando ce n'è più di uno?

Esistono due modi principali:

Replica cartesiana

Supponiamo di trovarci in cucina a preparare succhi di frutta. Si ha un elenco di frutti: {apple, orange, pear} e una quantità fissa di acqua per ogni succo: 1 cup. Si vuole fare un succo con ogni frutto, con la stessa quantità d'acqua. In questo caso, entra in gioco la replica cartesiana.

In Dynamo, ciò significa che si inserisce l'elenco di frutti nell'input fruit del nodo Juice.Maker, mentre l'input water rimane costante a 1 tazza. Il nodo elabora quindi ogni frutto singolarmente, combinandolo con la quantità fissa di acqua. Il risultato è:

apple juice with 1 cup of water orange juice with 1 cup of water pear juice with 1 cup of water

Ogni frutto è abbinato alla stessa quantità di acqua.

Replica in formato .zip

La replica in formato .zip funziona in modo leggermente diverso. Se si avessero due elenchi, uno per i frutti: {apple, orange, pear} e un altro per le quantità di zucchero: {2 tbsp, 3 tbsp, 1 tbsp}, la replica in formato .zip combinerebbe gli elementi corrispondenti di ciascun elenco. Ad esempio:

apple juice with 2 tablespoons of sugar orange juice with 3 tablespoons of sugar pear juice with 1 tablespoon of sugar

Ogni frutto è abbinato alla sua corrispondente quantità di zucchero.

Esercizio

Scaricare il file di esempio facendo clic sul collegamento seguente.

Un elenco completo di file di esempio è disponibile nell'Appendice.

Per dimostrare le operazioni di collegamento riportate di seguito, si utilizzerà questo file di base per definire l'elenco più breve, l'elenco più lungo e il collegamento globale.

Si modificherà il collegamento in Point.ByCoordinates, ma non cambierà nient'altro del grafico riportato sopra.

L'elenco più breve

Scegliendo Più breve come opzione di collegamento (anche l'opzione di default), si ottiene una linea diagonale di base composta da cinque punti. I cinque punti indicano la lunghezza dell'elenco minore, pertanto il collegamento con l'elenco più breve viene interrotto dopo che si è arrivati alla fine di un elenco.

L'elenco più lungo

Modificando il collegamento in Più lungo, si ottiene una linea diagonale che si estende verticalmente. Con lo stesso metodo del diagramma concettuale, l'ultima voce nell'elenco di 5 voci verrà ripetuta per raggiungere la lunghezza dell'elenco più lungo.

Globale

Modificando il collegamento in Globale, si ottiene ogni combinazione tra ciascun elenco, fornendo una griglia di punti 5 x 10. Si tratta di una struttura di dati equivalente secondo il metodo globale come mostrato nel diagramma concettuale riportato sopra, tranne per il fatto che i dati sono ora un elenco di elenchi. Collegando una PolyCurve, è possibile vedere che ogni elenco viene definito dal relativo valore X, restituendo una riga di linee verticali.

Foto di .

Per ulteriori informazioni sul funzionamento, consultare la pagina .

Augustus Binu
Replication and Lacing Guides
3KB
Lacing.dyn
Banane
Esempi di input
Esempi di input
Esempi di input
Esempi di input