Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo è un'applicazione di programmazione visiva che può essere scaricata ed eseguita in modalità "Sandbox" indipendente o come plug-in per altri software come Revit, FormIt o Civil 3D.
Ulteriori informazioni sulla differenza tra Dynamo Core/Revit/Sandbox.
Dynamo consentirà di lavorare all'interno di un processo di programmazione visiva in cui si collegano gli elementi per definire le relazioni e le sequenze di azioni che compongono algoritmi personalizzati. Si possono utilizzare gli algoritmi per una vasta gamma di applicazioni, dall'elaborazione dei dati alla generazione della geometria, il tutto in tempo reale e senza dover scrivere una riga di code
.
Nodi e fili sono i componenti chiave di Dynamo per supportare un processo di programmazione visiva. Consente di stabilire forti relazioni visive e sistemiche tra le parti di un progetto. Con un semplice clic del mouse è possibile collegare facilmente i nodi, sviluppando e ottimizzando il workflow di progettazione.
Dall'utilizzo della programmazione visiva per i workflow dei progetti allo sviluppo di strumenti personalizzati, Dynamo è un aspetto integrante di un'ampia gamma di applicazioni straordinarie.
Dynamo è una piattaforma di programmazione visiva open source per progettisti.
È appena stata aperta Dynamo Primer, una guida completa alla programmazione visiva in Autodesk Dynamo. Questa guida introduttiva è un progetto in corso per condividere i principi fondamentali della programmazione. Gli argomenti trattati includono: uso della geometria computazionale, procedure ottimali per la progettazione basata su regole, applicazioni di programmazione interdisciplinari e altro ancora con la piattaforma Dynamo.
La potenza di Dynamo si trova in un'ampia gamma di attività correlate alla progettazione. Dynamo consente di accedere ad un elenco in espansione di modi facilmente accessibili per iniziare:
Esplorare la programmazione visiva per la prima volta
Connettere i workflow in diversi tipi di software
Coinvolgere una comunità attiva di utenti, collaboratori e sviluppatori
Sviluppare una piattaforma open source per un miglioramento costante
Nell'ambito di questa attività e per l'interessante opportunità di lavorare con Dynamo, occorre un documento dello stesso calibro, Dynamo Primer.
Fare riferimento alla Guida introduttiva per scoprire cosa ci si può aspettare di imparare da questo documento.
Stiamo migliorando costantemente Dynamo, pertanto alcune funzionalità potrebbero avere un aspetto diverso da quello rappresentato in questa guida introduttiva. Tuttavia, tutte le modifiche alle funzionalità verranno rappresentate correttamente.
Il progetto Dynamo Primer è open source. Siamo dedicati a fornire contenuto di qualità e apprezziamo qualsiasi eventuale feedback fornito. Se si desidera segnalare un problema su qualsiasi aspetto, pubblicare il messaggio nella pagina dei problemi su GitHub: https://github.com/DynamoDS/DynamoPrimer/issues
Per contribuire ad una nuova sezione, a modifiche o a qualsiasi altro elemento del progetto, controllare il repository su GitHub per iniziare: https://github.com/DynamoDS/DynamoPrimer.
Dynamo Primer è un progetto open source avviato da Matt Jezyk e dal team di sviluppo di Dynamo di Autodesk.
Mode Lab è stata incaricata di scrivere la prima edizione della Guida introduttiva. La ringraziamo per tutti gli sforzi profusi nel creare questa preziosa risorsa.
John Pierson del team Parallax è stato incaricato di aggiornare la Guida introduttiva in modo che rifletta le revisioni di Dynamo 2.0.
Matterlab è stato incaricato di aggiornare la Guida introduttiva in modo che rifletta le revisioni di Dynamo 2.13.
Matterlab è stato incaricato di aggiornare la Guida introduttiva in modo che rifletta le revisioni di Dynamo 2.17.
Wood Rodgers è stato incaricato di aggiornare la Guida introduttiva con il contenuto per Dynamo for Civil 3D.
Un ringraziamento speciale va a Ian Keough per aver avviato e guidato il progetto Dynamo.
Grazie a Matt Jezyk, Ian Keough, Zach Kron, Racel Amour e Colin McCrone per la collaborazione entusiasta e l'opportunità di partecipare ad un'ampia gamma di progetti Dynamo.
Dynamo Consultare i seguenti siti per la release stabile più recente di Dynamo.
http://dynamobim.com/download/ o http://dynamobuilds.com
*Nota: a partire da Revit 2020, Dynamo è incluso con le release di Revit e pertanto non è necessaria l'installazione manuale. Ulteriori informazioni sono disponibili in questo post del blog.
DynamoBIM La migliore fonte per ulteriori informazioni, contenuto di formazione e forum è il sito Web di DynamoBIM.
http://dynamobim.org
Dynamo GitHub Dynamo è un progetto di sviluppo open source su GitHub. Per contribuire, visitare la pagina di DynamoDS.
https://github.com/DynamoDS/Dynamo
Contatto In caso di eventuali problemi relativi a questo documento, è possibile contattarci.
Dynamo@autodesk.com
Copyright 2023 Autodesk
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Dynamo è un progetto di sviluppo open source attivo. Scoprire l'elenco di software che supporta Dynamo.
Dynamo viene preinstallato con software come Revit3D, FormIt, Civil3D e così via.
Per ulteriori informazioni sull'utilizzo di Dynamo con un software specifico, si consiglia di consultare le seguenti sezioni:
Se si desidera utilizzare Dynamo come applicazione indipendente, continuare la lettura per ottenere consigli sul download di Sandbox.
L'applicazione Dynamo è disponibile nel sito Web di Dynamo. Le versioni ufficiali, passate o pre-rilasciate sono disponibili nella pagina di download. Visitare la pagina Get Dynamo e fare clic su Download per la versione ufficiale rilasciata.
Se si cercano release di sviluppo precedenti o "bleeding edge", tutte le versioni sono disponibili nella sezione inferiore della stessa pagina.
La release di sviluppo "bleeding edge" potrebbe includere alcune funzionalità nuove e sperimentali che non sono ancora state testate completamente, quindi potrebbe essere instabile. Utilizzando questo strumento, si potrebbero scoprire bug o problemi; per aiutarci a migliorare l'applicazione segnalare i problemi al nostro team.
Ai principianti viene consigliato di scaricare la release ufficiale stabile.
Prima di avviare qualsiasi versione scaricata, è necessario decomprimere il contenuto nella cartella scelta.
Scaricare e installare 7zip nel computer per questo passaggio.
Fare clic con il pulsante destro del mouse sul file .zip e selezionare Estrai tutto.
Scegliere una destinazione per decomprimere tutti i file.
Nella cartella di destinazione, fare doppio clic su DynamoSandbox.exe per avviarlo.
Verrà visualizzata la schermata di avvio di Dynamo Sandbox come indicato di seguito.
Congratulazioni, è stata completata l'installazione per l'utilizzo di Dynamo Sandbox.
Geometry è una funzionalità aggiuntiva in Dynamo Sandbox che è disponibile solo per gli utenti che dispongono di una licenza o di un abbonamento corrente per il seguente software Autodesk: Revit, Robot Structural Analysis, FormIt e Civil 3D. Geometry consente agli utenti di importare, creare, modificare ed esportare la geometria da Dynamo Sandbox.
L'interfaccia utente per Dynamo è organizzata in cinque aree principali. Verrà illustrata brevemente la panoramica qui e verranno descritte ulteriormente l'area di lavoro e la Libreria nelle sezioni seguenti.
Menu
Barra degli strumenti
Libreria
Area di lavoro
Barra di esecuzione
Di seguito sono riportati i menu per le funzionalità di base dell'applicazione Dynamo. Come la maggior parte del software Windows, i primi due menu sono relativi alla gestione dei file, alle operazioni di selezione e modifica del contenuto. I menu rimanenti sono più specifici di Dynamo.
Informazioni generali e impostazioni sono disponibili nel menu a discesa di Dynamo.
Informazioni su: indica la versione di Dynamo installata nel computer in uso.
Contratto per raccogliere dati di usabilità: consente di aderire o meno alla condivisione dei dati utente per migliorare Dynamo.
Preferenze: include impostazioni quali la definizione della precisione decimale e della qualità di rendering della geometria dell'applicazione.
Chiudi Dynamo.
Se si è bloccati, consultare il menu ?. È possibile accedere ad uno dei siti Web di riferimento di Dynamo tramite il browser Internet.
Introduzione: mostra una breve introduzione all'utilizzo di Dynamo.
Guide interattive -
Esempi: fornisce file di esempio di riferimento.
Dizionario di Dynamo: rappresenta una risorsa con documentazione su tutti i nodi.
Sito Web di Dynamo: consente di visualizzare il progetto di Dynamo su GitHub.
Wiki progetto di Dynamo: consente di visitare la pagina Wiki per informazioni sullo sviluppo mediante l'API di Dynamo, gli strumenti e le librerie di supporto.
Visualizza pagina iniziale: consente di tornare alla pagina iniziale di Dynamo quando ci si trova all'interno di un documento.
Segnala un bug: consente di aprire un problema in GitHub.
La barra degli strumenti di Dynamo contiene una serie di pulsanti per l'accesso rapido ai file, nonché i comandi Annulla [CTRL+Z] e Ripeti [CTRL+Y]. All'estrema destra è presente un altro pulsante che consente di esportare un'istantanea dell'area di lavoro, che è estremamente utile per la documentazione e la condivisione.
La Libreria di Dynamo è una raccolta di librerie funzionali, ciascuna contenente nodi raggruppati per categoria. È costituita da librerie di base che vengono aggiunte durante l'installazione di default di Dynamo. Nel corso dell'introduzione del suo l'utilizzo, verrà illustrato come estendere le funzionalità di base con nodi personalizzati e pacchetti aggiuntivi. La sezione Libreria fornirà una guida più dettagliata sull'utilizzo di questa funzionalità.
L'area di lavoro è il luogo dove vengono creati i programmi visivi; è possibile modificare anche l'impostazione Anteprima per visualizzare le geometrie 3D da qui. Per ulteriori dettagli, fare riferimento a Area di lavoro.
Eseguire lo script di Dynamo da qui. Fare clic sull'icona dell'elenco a discesa sul pulsante di esecuzione per passare da una modalità all'altra.
Automatico: consente di eseguire automaticamente lo script. Le modifiche vengono aggiornate in tempo reale.
Manuale: lo script viene eseguito solo quando si fa clic sul pulsante Esegui. È utile per quando si apportano modifiche ad uno script complesso e "pesante".
Periodico: questa opzione è disattivata per default. È disponibile solo quando viene utilizzato il nodo DateTime.Now. È possibile impostare l'esecuzione automatica del grafico ad un intervallo specificato.
Dalle sue origini come componente aggiuntivo per il Building Information Modeling (BIM) in Revit, Dynamo è maturato fino a diventare molte cose. Soprattutto, è una piattaforma che consente ai progettisti di esplorare la programmazione visiva, risolvere i problemi e creare i loro strumenti. Per iniziare il viaggio con Dynamo, occorre impostare un contesto: che cos'è e come utilizzarlo?
In Dynamo, i nodi sono gli oggetti collegati per formare un programma visivo. Ogni nodo esegue un'operazione; talvolta può essere semplice come memorizzare un numero o può essere un'azione più complessa come creare o sottoporre a query la geometria.
La maggior parte dei nodi in Dynamo è composta da cinque parti. Sebbene vi siano eccezioni, ad esempio i nodi di input, la struttura di ogni nodo può essere descritta come segue:
Nome: il nome del nodo con una convenzione di denominazione
Category.Name
.Corpo principale: il corpo principale del nodo. Facendo clic con il pulsante destro del mouse qui vengono visualizzate le opzioni a livello dell'intero nodo.
Porte (entrata e uscita): i ricettori dei fili che forniscono i dati di input al nodo e i risultati dell'azione del nodo.
Valore di default: fare clic con il pulsante destro del mouse su una porta di input. Alcuni nodi presentano valori di default che è possibile utilizzare o meno.
Gli input e gli output per i nodi sono denominati porte e fungono da prese per i fili. I dati entrano nel nodo mediante le porte a sinistra e fuoriescono dal nodo dopo che è stata eseguita l'operazione a destra.
Si prevede che le porte ricevano dati di un certo tipo. Ad esempio, se si collega un numero come 2.75 alle porte su un nodo Point.ByCoordinates, la creazione di un punto verrà eseguita correttamente. Se tuttavia si specifica Red nella stessa porta, verrà generato un errore.
Suggerimento Posizionare il cursore su una porta per visualizzare una descrizione comando contenente il tipo di dati previsto.
Etichetta della porta
Descrizione comando
Tipo di dati
Default Value
In Dynamo viene fornita un'indicazione dello stato di esecuzione del programma visivo tramite il rendering dei nodi con diversi schemi di colori basati sullo stato di ogni nodo. La gerarchia degli stati segue questa sequenza: Errore > Avviso > Informazioni > Anteprima.
Se si posiziona il cursore o si fa clic con il pulsante destro del mouse sul nome o sulle porte, vengono visualizzate informazioni e opzioni aggiuntive.
Input soddisfatti: un nodo con barre verticali blu sulle relative porte di input è collegato correttamente e tutti i relativi input sono connessi correttamente.
Input non soddisfatti: è necessario che tali input siano collegati ad un nodo con una barra verticale rossa su una o più porte di input.
Funzione: un nodo che genera una funzione e presenta una barra verticale grigia su una porta di output è un nodo di funzione.
Selezionato: i nodi attualmente selezionati hanno un'evidenziazione verde acqua sul bordo.
Congelato: un nodo blu traslucido viene congelato, sospendendo l'esecuzione del nodo.
Avviso: una barra di stato gialla sotto il nodo indica lo stato di avviso, ovvero nel nodo se risultano mancanti dati di input o se sono presenti tipi di dati errati.
Errore: una barra di stato rossa sotto il nodo indica che il nodo si trova in uno stato di errore.
Informazioni: una barra di stato blu al di sotto del nodo indica lo stato Informazioni, che contrassegna le informazioni utili sui nodi. Questo stato può essere attivato quando si avvicina ad un valore massimo supportato dal nodo, utilizzando un nodo in un modo che ha potenziali impatti sulle prestazioni e così via.
Suggerimento Con queste informazioni sulla descrizione comando, esaminare i nodi a monte per verificare se la struttura di dati o il tipo di dati richiesto è errato.
Descrizione comando di avviso: impossibile interpretare un valore "null" o i dati come Double, ossia un numero.
Utilizzare il nodo Watch per esaminare i dati di input.
A monte il nodo Number memorizza Red e non un numero.
In alcune situazioni, è possibile impedire l'esecuzione di nodi specifici nel programma visivo. A tale scopo, è possibile congelare il nodo, un'opzione presente nel menu di scelta rapida del nodo.
Congelando un nodo si congelano anche i nodi a valle. In altre parole, verranno congelati anche tutti i nodi che dipendono dall'output di un nodo congelato.
I fili si collegano tra i nodi per creare relazioni e stabilire il flusso del programma visivo. Si può pensare ai fili letteralmente come fili elettrici che trasmettono impulsi di dati da un oggetto a quello successivo.
I fili collegano la porta di output di un nodo alla porta di input di un altro nodo. Questa direzionalità definisce il flusso di dati nel programma visivo.
Le porte di input sono sul lato sinistro e le porte di output si trovano sul lato destro dei nodi, pertanto, è possibile generalmente affermare che il flusso del programma si sposta da sinistra a destra.
Creare un filo facendo clic con il pulsante sinistro del mouse su una porta, quindi facendo clic con il pulsante sinistro del mouse sulla porta di un altro nodo per creare un collegamento. Mentre è in corso il processo di creazione di un collegamento, il filo risulterà tratteggiato e verrà eseguito lo snap per diventare linee continue quando è stato collegato correttamente.
I dati fluiscono sempre attraverso questo filo dall'output all'input. È tuttavia possibile creare il filo in entrambe le direzioni in termini di una sequenza di clic sulle porte collegate.
Spesso è necessario regolare il flusso di programma nel programma visivo modificando i collegamenti rappresentati dai fili. Per modificare un filo, fare clic sulla porta di input del nodo già collegato. Si hanno ora a disposizione due opzioni:
Per modificare il collegamento in una porta di input, fare clic con il pulsante sinistro del mouse su un'altra porta di input.
Per rimuovere il filo, trascinarlo e fare clic con il pulsante sinistro del mouse sull'area di lavoro.
Ricollegare più fili utilizzando MAIUSC+clic con pulsante sinistro del mouse.
Duplicare un filo mediante CTRL+clic con il pulsante sinistro del mouse.
Per default, i fili verranno visualizzati in anteprima con un tratto di colore grigio. Quando si seleziona un nodo, verrà eseguito il rendering di qualsiasi filo collegato con la stessa evidenziazione di color azzurro del nodo.
Filo evidenziato
Filo di default
Occultamento di fili per default
Se si preferisce nascondere i fili nel grafico, è possibile trovare questa opzione da Vista > Connettori > deselezionare Mostra connettori.
Con questa impostazione, solo i nodi selezionati e i relativi fili di unione verranno mostrati con una leggera evidenziazione verde acqua.
È anche possibile nascondere solo il filo selezionato facendo clic con il pulsante destro del mouse sull'output Nodi > selezionare Nascondi fili.
L'area di lavoro di Dynamo è costituita da quattro elementi principali.
Tutte le schede attive.
Modalità anteprima
Controlli di zoom/panoramica
Nodo nell'area di lavoro
Quando si apre un nuovo file, per default, viene aperta una nuova area di lavoro iniziale.
È possibile creare un nodo personalizzato e aprirlo in un'area di lavoro del nodo personalizzato.
È consentita una sola area di lavoro iniziale in ogni finestra di Dynamo, ma è possibile avere più aree di lavoro del nodo personalizzato aperte nelle schede.
Sono disponibili tre metodi per passare da un'anteprima all'altra:
a. Utilizzando le icone in alto a destra
b. Fare clic con il pulsante destro del mouse nell'area di lavoro
Passare dall'anteprima 3D all'anteprima del grafico
Passare dall'anteprima del grafico all'anteprima 3D
c. Utilizzando i tasti di scelta rapida (CTRL+B)
È possibile utilizzare le icone o un mouse per spostarsi all'interno di una delle due aree di lavoro.
a. In modalità di anteprima del grafico
Utilizzando le icone:
Utilizzando il mouse:
Fare clic con il pulsante sinistro del mouse - Seleziona
Fare clic con il pulsante sinistro del mouse e trascinare - Casella di selezione per selezionare più nodi
Scorrere il pulsante centrale del mouse su/giù - Zoom avanti/indietro
Fare clic con il pulsante centrale del mouse e trascinare - Panoramica
Fare clic con il pulsante destro del mouse in un punto qualsiasi dell'area di disegno - Aprire la casella di ricerca nell'area di disegno
b. In modalità di anteprima 3D
Utilizzando le icone:
Utilizzando il mouse:
Scorrere il pulsante centrale del mouse su/giù - Zoom avanti/indietro
Fare clic con il pulsante centrale del mouse e trascinare - Panoramica
Fare clic con il pulsante destro del mouse e trascinare - Orbita
Fare clic con il pulsante sinistro del mouse per selezionare un nodo qualsiasi.
Per selezionare più nodi, fare clic e trascinare per creare un riquadro di selezione.
La Libreria contiene tutti i nodi caricati, compresi i dieci nodi delle categorie di default forniti con l'installazione, nonché eventuali pacchetti o nodi personalizzati caricati aggiuntivi. I nodi della Libreria sono organizzati in modo gerarchico all'interno di librerie, categorie e, se necessario, sottocategorie.
Nodi di base: vengono forniti con l'installazione di default.
Nodi personalizzati: consentono di memorizzare le routine o il grafico speciale utilizzati più di frequente come nodi personalizzati. È inoltre possibile condividere i nodi personalizzati con la community.
Nodi di Package Manager: raccolta di nodi personalizzati pubblicati.
Sfogliare queste categorie è il modo più rapido per comprendere la gerarchia di ciò che è possibile aggiungere all'area di lavoro e il modo migliore per scoprire nuovi nodi non utilizzati in precedenza.
Sfogliare la Libreria facendo clic sui menu per espandere ogni categoria e la relativa sottocategoria.
Geometry è un menu di grande utilità per iniziare ad esplorare poiché contiene la maggior quantità di nodi.
Libreria
Categoria
Sottocategoria
Nodo
Questi consentono di suddividere ulteriormente i nodi nella stessa sottocategoria in base al fatto se i nodi creano dei dati, eseguono un'Azione o una Query sui dati.
Posizionare il cursore del mouse su un nodo per visualizzare informazioni più dettagliate oltre al nome e all'icona. Questo offre un modo rapido per comprendere cosa fa il nodo, cosa richiederà per gli input e cosa verrà fornito come output.
Descrizione: descrizione con linguaggio normale del nodo
Icona: versione più grande dell'icona nel menu Libreria
Input: nome, tipo di dati e struttura di dati
Output: tipo di dati e struttura
Se si conosce con relativa specificità il nodo che si desidera aggiungere all'area di lavoro, digitare nel campo di ricerca per cercare tutti i nodi corrispondenti.
Scegliere facendo clic sul nodo che si desidera aggiungere o premere INVIO per aggiungere i nodi evidenziati al centro dell'area di lavoro.
Oltre a utilizzare le parole chiave per cercare di trovare i nodi, è possibile digitare la gerarchia separata con un punto nel campo di ricerca o con i Code Block (che utilizzano il linguaggio testuale di Dynamo).
La gerarchia di ogni libreria si riflette nel nome dei nodi aggiunti all'area di lavoro.
Digitando parti differenti della posizione del nodo nella gerarchia della Libreria nel formato library.category.nodeName
, vengono restituiti risultati diversi:
library.category.nodeName
category.nodeName
nodeName
o keyword
In genere, il nome del nodo nell'area di lavoro verrà sottoposto a rendering nel formato category.nodeName
, con alcune eccezioni significative, in particolare nelle categorie Input e View.
Tenere presente i nodi denominati in modo simile e osservare la differenza della categoria:
I nodi della maggior parte delle librerie includeranno il formato della categoria.
Point.ByCoordinates
e UV.ByCoordinates
hanno lo stesso nome ma provengono da categorie differenti.
Eccezioni importanti includono funzioni integrate, Core.Input, Core.View e operatori.
Con centinaia di nodi inclusi nell'installazione di base di Dynamo, quali sono essenziali per lo sviluppo dei programmi visivi? Ci si concentrerà su quelli che consentono di definire i parametri del programma (Input), vedere i risultati dell'azione di un nodo (Watch) e definire gli input o le funzionalità mediante una scorciatoia (Code Block).
I nodi di input sono il mezzo principale per l'utente del programma visivo, sia che si tratti dell'utente corrente sia di qualcun altro, per interfacciarsi con i parametri chiave. Di seguito sono riportate alcune informazioni disponibili nella Libreria principale:
I nodi Watch sono essenziali per gestire i dati che fluiscono nel programma visivo. È possibile visualizzare il risultato di un nodo tramite l'anteprima dei dati del nodo posizionando il cursore del mouse sul nodo.
Sarà utile per mantenere la visualizzazione in un nodo Watch.
In alternativa, è possibile visualizzare i risultati della geometria tramite un nodo Watch 3D.
Entrambi sono disponibili nella categoria View della libreria Core.
Suggerimento Talvolta l'anteprima 3D può distrarre l'utente quando il programma visivo contiene molti nodi. Per visualizzare l'anteprima della geometria, è consigliabile deselezionare l'opzione Mostra anteprima sfondo 3D nel menu Impostazioni e utilizzare un nodo Watch 3D.
I nodi Code Block possono essere utilizzati per definire un blocco di codice con righe separate da punti e virgola. Può essere semplice come X/Y
.
Di seguito è disponibile una semplice dimostrazione (con le istruzioni) per l'utilizzo di Code Block nello script.
Fare doppio clic per creare un nodo Code Block.
Circle.ByCenterPointRadius(x,y);
Tipo
Fare clic sull'area di lavoro per annullare la selezione e aggiungere automaticamente gli input x
e y
.
Creare un nodo Point.ByCoordinates e Number Slider, quindi collegarli agli input di Code Block.
Il risultato dell'esecuzione del programma visivo viene mostrato come cerchio nell'anteprima 3D.
Per iniziare ad utilizzarlo, avviarlo dal gruppo della barra degli strumenti. A seconda del software utilizzato, l'icona di avvio è in genere disponibile in Menu > scheda Gestisci. Fare clic sull'icona di Dynamo per avviarlo.
Nuovo: consente di creare un nuovo file .dyn.
Apri: consente di aprire un file .dyn (area di lavoro) o .dyf (nodo personalizzato) esistente.
Salva/Salva con nome: consente di salvare il file .dyn o .dyf attivo.
Annulla: consente di annullare l'ultima azione.
Ripeti: consente di ripetere l'azione successiva.
Esporta area di lavoro come immagine: consente di esportare l'area di lavoro visibile come file PNG.
Icona di collegamento: indica l' specificata per gli input dell'elenco corrispondenti (verranno fornite ulteriori informazioni in seguito).
Anteprima disattivata: una barra di stato grigia sotto il nodo e un'icona a forma di occhio indicano che l'anteprima della geometria per il nodo è disattivata.
Se il programma visivo contiene avvertimenti o errori, in Dynamo verranno fornite ulteriori informazioni sul problema. Qualsiasi nodo giallo avrà anche una descrizione comando sopra il nome. Posizionare il cursore del mouse sull'icona della descrizione comando relativo all’avviso o all’errore per espanderla.
Adatta alla finestra
Eseguire lo zoom in avanti
Eseguire lo zoom indietro
Panoramica
Adatta alla finestra
Eseguire lo zoom in avanti
Eseguire lo zoom indietro
Panoramica
Orbita
Si esamineranno le categorie della , si mostreranno come eseguire e si apprenderanno delle informazioni su alcuni dei tra di essi.
Crea: consente di creare o costruire la geometria da zero. Ad esempio, un cerchio.
Azione: consente di eseguire un'azione su un oggetto. Ad esempio, la messa in scala di un cerchio.
Query: consente di ottenere una proprietà di un oggetto già esistente. Ad esempio, ottenere il raggio di un cerchio.
Nodo | Nodo |
---|
È inoltre possibile utilizzare i Code Block come scorciatoia per definire un input numerico o chiamare la funzionalità di un altro nodo. La sintassi per eseguire questa operazione segue la convenzione di denominazione del linguaggio testuale di Dynamo, .
In questa sezione, vengono introdotti i nodi essenziali disponibili nella libreria di Dynamo che consentono di creare un programma visivo personalizzato come un professionista.
Geometria per la progettazione computazionale: come si lavora con gli elementi geometrici in Dynamo? Si esplorano diversi modi per creare geometrie semplici o complesse da primitive.
Elementi di base di programmi: che cosa sono i "dati" e quali sono i tipi di elementi fondamentali che è possibile iniziare a utilizzare nei programmi? Inoltre, è descritto come incorporare le operazioni matematiche e logiche nel workflow di progettazione.
Progettazione con elenchi: come gestire e coordinare le strutture di dati? Sono fornite ulteriori informazioni sul concetto di elenco e su come utilizzarlo per gestire i dati di progettazione in modo efficiente.
Dizionari in Dynamo: che cosa sono i dizionari? È descritto come utilizzare i dizionari per cercare dati e valori specifici dai risultati esistenti.
Boolean | Numero |
String | Number Slider |
Directory Path | Integer Slider |
File Path |
Un punto è definito da niente di più che uno o più valori denominati coordinate. Il numero di valori delle coordinate necessari per definire il punto dipende dal sistema di coordinate o dal contesto in cui si trova.
Il tipo di punto più comune in Dynamo è presente nel sistema di coordinate globali tridimensionale e dispone di tre coordinate [X,Y,Z] (punto 3D in Dynamo).
Un punto 2D in Dynamo ha due coordinate [X,Y].
I parametri per le curve e le superfici sono continui e si estendono oltre il bordo della geometria specificata. Poiché le forme che definiscono lo spazio del parametro risiedono in un sistema di coordinate globali tridimensionale, è sempre possibile convertire una coordinata parametrica in una coordinata "globale". Il punto [0.2, 0.5] sulla superficie, ad esempio, è uguale al punto [1.8, 2.0, 4.1] nelle coordinate globali.
Punto nelle coordinate XYZ globali supposte
Punto rispetto ad un determinato sistema di coordinate (cilindrico)
Punto come coordinata UV su una superficie
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Se la geometria è il linguaggio di un modello, i punti sono l'alfabeto. I punti sono la base su cui vengono create tutte le altre geometrie: sono necessari almeno due punti per creare una curva, almeno tre punti per creare un poligono o una faccia della mesh e così via. La definizione della posizione, dell'ordine e della relazione tra i punti (provare una funzione seno) consente di definire una geometria di ordine più alto, ad esempio oggetti riconosciuti come cerchi o curve.
Un cerchio che utilizza le funzioni
x=r*cos(t)
ey=r*sin(t)
Una curva seno che utilizza le funzioni
x=(t)
ey=r*sin(t)
I punti possono esistere anche in un sistema di coordinate bidimensionale. La convenzione ha una notazione di lettere diversa a seconda del tipo di spazio impiegato. È possibile che si stia utilizzando [X,Y] su un piano o [U,V] se si è su una superficie.
Un punto nel sistema di coordinate euclideo: [X,Y,Z]
Un punto in un sistema di coordinate di parametri delle curve: [t]
Un punto in un sistema di coordinate di parametri delle superfici: [U,V]
Questa guida introduttiva include capitoli sviluppati con Mode Lab. Questi capitoli sono incentrati sugli elementi essenziali necessari per imparare a sviluppare i propri programmi visivi con Dynamo e sulle informazioni essenziali su come far evolvere Dynamo.
Questa guida è stata progettata per fornire ai lettori contenuti su diversi livelli di esperienza e competenza. L'introduzione generale sull'impostazione di Dynamo, sull'interfaccia utente e sui concetti chiave è disponibile nelle seguenti sezioni. Si consiglia ai nuovi utenti di approfondire i seguenti argomenti:
Per gli utenti che desiderano sviluppare una comprensione più approfondita di ciascun elemento, ad esempio un nodo specifico e il concetto che sta alla base, vengono trattati i concetti fondamentali nel capitolo dedicato.
Se si desidera visualizzare la dimostrazione dei workflow di Dynamo, sono stati inclusi alcuni grafici nella sezione Esempi di workflow. Seguire le istruzioni allegate per creare grafici di Dynamo personalizzati.
Nei capitoli successivi sono disponibili altri esercizi specifici per gli argomenti, poiché vengono trattati argomenti diversi su Dynamo. Gli esercizi sono in genere disponibili nell'ultima sezione di ogni pagina.
Dynamo non sarebbe quello che è senza un forte gruppo di utenti avidi e collaboratori attivi. Per coinvolgere la comunità, è possibile seguire il blog, aggiungere il proprio lavoro alla galleria o discutere di Dynamo nel forum.
Dynamo è concepito come uno strumento di programmazione visiva per i progettisti che consente di realizzare strumenti i quali sfruttano le librerie esterne o qualsiasi prodotto Autodesk dotato di un'API. Con Dynamo Sandbox è possibile sviluppare programmi in un'applicazione di tipo "sandbox", ma l'ecosistema di Dynamo continua a crescere.
Il codice sorgente del progetto è open source e permette di estenderne le funzionalità nel modo desiderato. È possibile consultare il progetto su GitHub e individuare le iniziative in corso di personalizzazione di Dynamo da parte degli utenti.
È possibile sfogliare, creare una copia tramite fork e iniziare ad estendere Dynamo in base alle proprie esigenze.
La geometria è il linguaggio per la progettazione. Quando un ambiente o un linguaggio di programmazione ha un kernel geometrico alla base, si possono sfruttare le possibilità di progettazione di modelli precisi ed efficienti, di automazione delle routine di progettazione e di generazione delle iterazioni di progettazione con algoritmi.
La comprensione dei tipi di geometria e della relativa correlazione consente di spostarsi all'interno della raccolta di nodi della geometria disponibili nella libreria. I nodi della geometria sono organizzati in ordine alfabetico, anziché gerarchico. Qui vengono visualizzati in modo simile al loro layout nell'interfaccia di Dynamo.
Inoltre, la realizzazione di modelli in Dynamo e la connessione dell'anteprima di ciò che viene visualizzato nell'anteprima sfondo al flusso di dati nel grafico dovrebbero diventare più intuitive nel tempo.
Si noti il sistema di coordinate presunto sottoposto a rendering mediante griglia e assi colorati.
I nodi selezionati eseguiranno il rendering della geometria corrispondente (se il nodo crea la geometria) nel colore di evidenziazione dello sfondo.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
La geometria, tradizionalmente definita, è lo studio della forma, della dimensione, della posizione relativa delle figure e delle proprietà dello spazio. Questo campo ha una ricca storia che risale a migliaia di anni fa. Con l'avvento e la diffusione del computer, si è ottenuto un potente strumento per definire, esplorare e generare la geometria. È ora così semplice calcolare il risultato di interazioni geometriche complesse; il fatto che lo stiamo facendo è quasi trasparente.
Se si è curiosi di vedere come la geometria complessa e diversificata possa utilizzare la potenza del computer, eseguire una rapida ricerca sul Web del coniglio Stanford, un modello canonico utilizzato per testare gli algoritmi.
La comprensione della geometria nel contesto di algoritmi, elaborazione e complessità può sembrare scoraggiante; tuttavia, esistono alcuni principi chiave, relativamente semplici, che si possono stabilire come concetti fondamentali per iniziare a creare applicazioni più avanzate:
La geometria riguarda dati: per il computer e Dynamo, un coniglio non è poi così diverso da un numero.
La geometria si basa sull'astrazione: fondamentalmente, gli elementi geometrici sono descritti da numeri, relazioni e formule all'interno di un determinato sistema di coordinate spaziali.
La geometria ha una gerarchia: i punti sono uniti per creare linee, le linee si uniscono per creare superfici e così via.
La geometria descrive contemporaneamente sia la parte che il tutto: quando si ha una curva, è sia la forma che tutti i punti possibili lungo di essa.
In pratica, questi principi implicano che bisogna essere consapevoli di ciò che si sta utilizzando (quale tipo di geometria, com'è stata creata, ecc.) in modo da poter comporre, scomporre e ricomporre in modo fluido diverse geometrie durante lo sviluppo di modelli più complessi.
Sarà esaminata la relazione tra le descrizioni astratte e gerarchiche della geometria. Poiché questi due concetti sono correlati, ma non sempre ovvi all'inizio, è possibile arrivare rapidamente ad una barriera concettuale quando si iniziano a sviluppare modelli o workflow più profondi. Per i principianti, verrà utilizzata la dimensionalità come un facile descrittore del "materiale" che si modella. Il numero di dimensioni necessarie per descrivere una forma offre una finestra che mostra come la geometria è organizzata gerarchicamente.
Un punto (definito dalle coordinate) non ha dimensioni; sono solo numeri che descrivono ogni coordinata.
Una linea (definita da due punti) ora presenta una dimensione: è possibile "percorrere" la linea in avanti (direzione positiva) o all'indietro (direzione negativa).
Un piano (definito da due linee) presenta due dimensioni: ora è possibile passeggiare più a sinistra o più a destra.
Un parallelepipedo (definito da due piani) ha tre dimensioni: è possibile definire una posizione rispetto all'alto o al basso.
La dimensionalità è un metodo comodo per iniziare a classificare la geometria, ma non è necessariamente il migliore. Dopotutto, non si modellano solo con punti, linee, piani e parallelepipedi. E se si desidera qualcosa di curvo? Inoltre, esiste un'altra categoria di tipi geometrici che sono completamente astratti, ossia definiscono proprietà quali l'orientamento, il volume o le relazioni tra le parti. Non è possibile afferrare un vettore in modo da definirlo rispetto a ciò che viene visualizzato nello spazio? Una categorizzazione più dettagliata della gerarchia geometrica dovrebbe riflettere la differenza tra tipi astratti o "helper", ognuno dei quali può essere raggruppato in base alle operazioni che essi consentono di fare e ai tipi che consentono di descrivere la forma degli elementi del modello.
La creazione di modelli in Dynamo non è limitata a ciò che è possibile generare con i nodi. Di seguito sono riportati alcuni metodi chiave per portare il processo al livello successivo con la geometria:
Dynamo consente di importare file. Provare ad utilizzare un file CSV per le nuvole di punti o un file SAT per l'importazione di superfici.
Quando si utilizza Revit, è possibile fare riferimento ad elementi di Revit da utilizzare in Dynamo.
Dynamo Package Manager offre funzionalità aggiuntive per le operazioni e i tipi di geometria estesi. Visitare la pagina sul pacchetto Mesh Toolkit.
Come ambiente di programmazione visiva, Dynamo consente di definire il modo in cui vengono elaborati i dati. I dati sono numeri o testo, ma così è anche la geometria. Come indicato dal computer, la geometria, o talvolta denominata geometria computazionale, rappresenta i dati che è possibile utilizzare per creare modelli straordinari, complessi o basati sulle prestazioni. A tale scopo, è necessario comprendere gli input e gli output dei vari tipi di geometria utilizzabili.
Il vettore è una rappresentazione dell'intensità e della direzione, che è possibile visualizzare come una freccia che accelera verso una specifica direzione ad una determinata velocità. È un componente chiave per i modelli in Dynamo. Notare che, poiché si trovano nella categoria astratta di "helper", quando si crea un vettore, non verrà visualizzato alcun elemento nell'anteprima sfondo.
È possibile utilizzare una linea come supporto in un'anteprima vettoriale.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Il piano è una superficie bidimensionale, che può essere visualizzata come superficie piana che si estende all'infinito. Ciascun piano ha un'origine, una direzione X, una direzione Y e una direzione Z (su).
Sebbene siano astratti, i piani hanno una posizione di origine in modo da poterli posizionare nello spazio.
In Dynamo, il rendering dei piani viene eseguito nell'anteprima sfondo.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Il sistema di coordinate è un sistema che consente di determinare la posizione di punti o altri elementi geometrici. Nell'immagine seguente è illustrato l'aspetto che ha in Dynamo e ciò che ogni colore rappresenta.
Sebbene siano astratti, anche i sistemi di coordinate hanno una posizione di origine in modo da poterli individuare nello spazio.
In Dynamo, i sistemi di coordinate vengono sottoposti a rendering nell'anteprima sfondo come punto (origine) e linee che definiscono gli assi (X è rosso, Y è verde e Z è blu in base alla seguente convenzione).
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Vettori, piani e sistemi di coordinate costituiscono il gruppo principale dei tipi di geometria astratta. Aiutano a definire la posizione, l'orientamento e il contesto spaziale della geometria di cui è necessario determinare la forma. Se dico che sono a New York, tra la 42° strada e Broadway (sistema di coordinate), a livello strada (piano), guardando verso nord (vettore), ho utilizzato questi "helper" per definire dove sono. Lo stesso vale per una custodia per il cellulare o un grattacielo. Per sviluppare il modello, è necessario questo contesto.
Un vettore è una quantità geometrica che descrive la direzione e l'intensità. I vettori sono astratti, ossia rappresentano una quantità, non un elemento geometrico. I vettori possono essere facilmente confusi con i punti perché sono entrambi composti da un elenco di valori. Tuttavia, esiste una differenza fondamentale: i punti descrivono una posizione in un determinato sistema di coordinate, mentre i vettori descrivono una differenza relativa nella posizione, che è identica a quella indicata come "direzione".
Se l'idea della differenza relativa è confusa, pensare al vettore AB come "Sono in piedi nel punto A, guardando verso il punto B." La direzione, da qui (A) a qui (B), è il vettore.
Suddividere ulteriormente i vettori nelle loro parti utilizzando la stessa notazione AB:
Il punto iniziale del vettore è denominato base.
Il **punto finale **del vettore è denominato punta o senso.
Il vettore AB non è uguale al vettore BA, il quale punta nella direzione opposta.
Per una visione in chiave comica dei vettori (e della loro definizione astratta), guardare la commedia classica L'aereo più pazzo del mondo e ascoltare la frase ironica, citata spesso:
Roger, Roger. Qual è il nostro vettore, Victor?
I piani sono "helper" astratti bidimensionali. Più in particolare, i piani sono concettualmente "piatti" e si estendono all'infinito in due direzioni. In genere, viene eseguito il rendering di un rettangolo più piccolo vicino all'origine.
Si potrebbe pensare: "Aspetta! Origine? Sembra un sistema di coordinate... come quello che utilizzo per modellare nel mio software CAD!"
Ed è corretto. La maggior parte del software di modellazione sfrutta i piani di costruzione o i "livelli" per definire un contesto bidimensionale locale in cui disegnare. Il piano XY, XZ, YZ (o nord, sudest) potrebbe sembrare più familiare. Sono tutti piani, che definiscono un contesto "piatto" infinito. I piani non hanno profondità, ma ci aiutano a descrivere anche la direzione.
Se si sono ben compresi i piani, non è difficile capire i sistemi di coordinate. Un piano ha tutte le stesse parti di un sistema di coordinate, a condizione che si tratti di un sistema di coordinate "euclideo" o "XYZ" standard.
Sono presenti, tuttavia, altri sistemi di coordinate alternativi, ad esempio cilindrici o sferici. Come si vedrà nelle sezioni successive, anche i sistemi di coordinate possono essere applicati ad altri tipi di geometria per definire una posizione su tale geometria.
Aggiunta di sistemi di coordinate alternativi - cilindrici, sferici
Una volta pronti ad approfondire lo sviluppo di programmi visivi, sarà necessario acquisire una comprensione più dettagliata degli elementi di base che si utilizzeranno. In questo capitolo sono presentati i concetti fondamentali relativi ai dati, ovvero gli oggetti che attraversano i fili del programma Dynamo.
Nel campo della modellazione computazionale, le sono una delle forme più pervasive di rappresentazione della geometria 3D. La geometria delle mesh è generalmente composta da una raccolta di quadrilateri o triangoli, può essere un'alternativa leggera e flessibile all'utilizzo di NURBS e le mesh vengono utilizzate in tutto, dal rendering e dalle visualizzazioni alla fabbricazione digitale e alla stampa 3D.
Dynamo definisce le mesh utilizzando una struttura di dati di faccia-vertice. Al livello più elementare, questa struttura è semplicemente una raccolta di punti raggruppati in poligoni. I punti di una mesh sono denominati vertici, mentre i poligoni simili a superfici sono denominati facce.
Per creare una mesh, è necessario un elenco di vertici e un sistema per raggruppare tali vertici in facce denominate gruppo di indici.
Elenco dei vertici
Elenco dei gruppi di indici per definire le facce
La libreria fornisce inoltre strumenti per modificare e correggere la mesh o estrarre sezioni orizzontali da utilizzare nella fabbricazione.
Una mesh è una raccolta di quadrilateri e triangoli che rappresenta una geometria di superfici o solidi. Analogamente ai solidi, la struttura di un oggetto mesh include vertici, bordi e facce. Sono disponibili ulteriori proprietà che rendono anche univoche le mesh, come le normali.
Vertici della mesh
Bordi della mesh *I bordi con una sola faccia adiacente vengono denominati "nudi". Tutti gli altri bordi sono "vestiti"
Facce della mesh
I vertici di una mesh sono semplicemente un elenco di punti. L'indice dei vertici è molto importante quando si costruisce una mesh o si ottengono informazioni sulla struttura di una mesh. Per ogni vertice, esiste anche una normale del vertice corrispondente (vettore) che descrive la direzione media delle facce associate e consente di comprendere l'orientamento in ingresso e in uscita della mesh.
Vertici
Normali dei vertici
Una faccia è un elenco ordinato di tre o quattro vertici. La rappresentazione della "superficie" di una faccia della mesh è pertanto implicita in base alla posizione dei vertici indicizzati. Si dispone già dell'elenco dei vertici che compongono la mesh, quindi, invece di fornire singoli punti per definire una faccia, si utilizza semplicemente l'indice dei vertici. Questo consente anche di utilizzare lo stesso vertice in più di una faccia.
Una faccia quadrangolare composta con indici 0, 1, 2 e 3
Una faccia triangolare composta con indici 1, 4 e 2; notare che i gruppi di indici possono essere spostati nel loro ordine - purché la sequenza sia ordinata in senso antiorario, la faccia verrà definita correttamente
Quali sono le differenze tra la geometria della mesh e la geometria NURBS? Quando è consigliabile utilizzare una al posto dell'altra?
In un capitolo precedente, si è visto che le superfici NURBS sono definite da una serie di curve NURBS che vanno in due direzioni. Queste direzioni sono etichettate U
e V
e consentono la parametrizzazione di una superficie NURBS in base ad un dominio di superficie bidimensionale. Le curve stesse sono memorizzate come equazioni nel computer, consentendo il calcolo delle superfici risultanti ad un grado di precisione arbitrariamente ridotto. Può essere difficile, tuttavia, combinare insieme più superfici NURBS. L'unione di due superfici NURBS determina una polisuperficie, in cui diverse sezioni della geometria avranno parametri UV e definizioni delle curve differenti.
Superficie
Curva isoparametrica (isoparm)
Punto di controllo della superficie
Poligono di controllo della superficie
Punto isoparametrico
Cornice della superficie
Mesh
Bordo nudo
Rete della mesh
Spigoli mesh
Normale del vertice
Faccia della mesh/Normale della faccia della mesh
Le mesh, invece, sono costituite da un numero discreto di facce e vertici esattamente definiti. La rete di vertici in genere non può essere definita da coordinate UV
semplici e, poiché le facce sono distinte, il grado di precisione viene integrato nella mesh e può essere modificato solo mediante l'affinamento della mesh e l'aggiunta di più facce. La mancanza di descrizioni matematiche consente alle mesh di gestire in modo più flessibile la geometria complessa all'interno di una singola mesh.
Un'altra importante differenza è rappresentata dall'entità con cui una modifica locale nella geometria della mesh o NURBS influisce sull'intera forma. Lo spostamento di un vertice di una mesh influisce solo sulle facce adiacenti a tale vertice. Nelle superfici NURBS, l'entità dell'influenza è più complessa e dipende dal grado della superficie, nonché dai pesi e dai nodi dei punti di controllo. In generale, tuttavia, lo spostamento di un singolo punto di controllo in una superficie NURBS crea un cambiamento più uniforme e più esteso nella geometria.
Superficie NURBS: lo spostamento di un punto di controllo ha un'influenza che si estende lungo la forma.
Geometria della mesh: lo spostamento di un vertice influisce solo sugli elementi adiacenti.
Un'analogia che può essere utile è confrontare un'immagine vettoriale (composta da linee e curve) con un'immagine raster (composta da singoli pixel). Se si esegue lo zoom avanti di un'immagine vettoriale, le curve restano nitide e chiare, mentre lo zoom avanti di un'immagine raster consente di ottenere pixel più grandi. In questa analogia, le superfici NURBS possono essere confrontate con un'immagine vettoriale perché esiste una relazione matematica uniforme, mentre la mesh si comporta in modo simile ad un'immagine raster con una risoluzione impostata.
Se si desidera costruire modelli più complessi che non possono essere creati da una singola superficie o se si vuole definire un volume esplicito, occorre ora entrare nel regno dei (e delle PolySurface). Anche un cubo semplice è sufficientemente complesso da richiedere sei superfici, una per ogni faccia. I solidi introducono due concetti chiave a differenza delle superfici: una descrizione topologica più rifinita (facce, spigoli, vertici) e operazioni booleane.
Si possono utilizzare le per modificare i solidi. Si utilizzeranno alcune operazioni booleane per creare una palla riccio.
Sphere.ByCenterPointRadius: creare il solido di base.
Topology.Faces, Face.SurfaceGeometry: eseguire una query sulle facce del solido e convertirle in geometria di superficie. In questo caso, la sfera presenta un'unica faccia.
Cone.ByPointsRadii: costruire coni utilizzando punti sulla superficie.
Solid.UnionAll: unire i coni e la sfera.
Topology.Edges: eseguire una query sugli spigoli del nuovo solido.
Solid.Fillet: raccordare gli spigoli della palla riccio.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Le operazioni booleane sono complesse e possono essere lente da calcolare. È possibile utilizzare la funzionalità Congela per sospendere l'esecuzione dei nodi selezionati e dei nodi a valle interessati.
1. Utilizzare il menu contestuale accessibile con il pulsante destro del mouse per congelare l'operazione di unione dei solidi.
2. Il nodo selezionato e tutti i nodi a valle verranno visualizzati in anteprima in modalità semitrasparente di colore grigio chiaro e i fili interessati verranno visualizzati come linee tratteggiate. Anche l'anteprima della geometria interessata sarà semitrasparente. È ora possibile modificare i valori a monte senza calcolare l'unione booleana.
3. Per scongelare i nodi, fare clic con il pulsante destro del mouse e deselezionare Congela.
4. Tutti i nodi interessati e le anteprime della geometria associata verranno aggiornati e ripristineranno la modalità di anteprima standard.
I solidi sono costituiti da una o più superfici che contengono volume mediante un contorno chiuso che definisce l'"entrata" o l'"uscita". Indipendentemente dal numero di superfici presenti, è necessario che formino un volume "ermetico" per essere considerate un solido. È possibile creare solidi unendo superfici o PolySurface o utilizzando operazioni quali loft, sweep e rivoluzione. Anche le primitive sfera, cubo, cono e cilindro sono solidi. Un cubo con almeno una faccia rimossa viene considerato come PolySurface, che presenta proprietà simili, ma non è un solido.
Un piano è composto da una singola superficie e non è un solido.
Una sfera è costituita da una superficie, ma è un solido.
Un cono è composto da due superfici unite per creare un solido.
Un cilindro è composto da tre superfici unite per creare un solido.
Un cubo è composto da sei superfici unite per creare un solido.
I solidi sono costituiti da tre tipi di elementi: vertici, spigoli e facce. Le facce sono le superfici che compongono il solido. Gli spigoli sono le curve che definiscono il collegamento tra facce adiacenti, mentre i vertici rappresentano i punti iniziale e finale di tali curve. Questi elementi possono essere sottoposti a query utilizzando i nodi della topologia.
Facce
Spigoli
Vertici
I solidi possono essere modificati raccordando o smussando i loro spigoli per eliminare angoli acuti. L'operazione di smusso crea una superficie rigata tra due facce, mentre un raccordo si unisce tra le facce per mantenere la tangenza.
Cubo
Cubo smussato
Cubo raccordato
Le operazioni booleane sui solidi sono metodi per combinare due o più solidi. Una singola operazione booleana significa in realtà eseguire quattro operazioni:
Intersecare due o più oggetti.
Dividerli in corrispondenza delle intersezioni.
Eliminare le parti della geometria indesiderate.
Unire tutto di nuovo insieme.
Unione: consente di rimuovere le parti sovrapposte dei solidi e di unirle in un unico solido.
Differenza: consente di sottrarre un solido da un altro. Il solido da sottrarre è noto come strumento. Si noti che è possibile cambiare il solido che costituisce lo strumento per mantenere il volume inverso.
Intersezione: consente di mantenere solo il volume intersecante dei due solidi.
UnionAll: operazione di unione con sfera e coni rivolti verso l'esterno.
DifferenceAll: operazione di differenza con sfera e coni rivolti verso l'interno.
Le sono il primo tipo di dati geometrici descritto e hanno un insieme più familiare di proprietà descrittive della forma. Quanto curve o diritte? Quanto lunghe o corte? Ricordarsi che i punti sono ancora i blocchi predefiniti per definire qualsiasi elemento da una linea ad una spline e tutti i tipi di curva compresi tra loro.
Linea
Polilinea
Arco
Cerchio
Ellisse
Curva NURBS
PolyCurve
NurbsCurve.ByControlPoints utilizza l'elenco di punti come punti di controllo.
NurbsCurve.ByPoints disegna una curva attraverso l'elenco di punti.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Il termine curva è generalmente un elemento interessante per tutte le diverse forme curve (anche se diritte). La Curva con la "C" maiuscola è la categorizzazione principale per tutti questi tipi di forma: linee, cerchi, spline e così via. Più tecnicamente, una curva descrive ogni possibile punto che si può trovare immettendo "t" in una raccolta di funzioni, che possono variare dal semplice (x = -1.26*t, y = t
) alle funzioni che prevedono il calcolo infinitesimale. Indipendentemente dal tipo di curva utilizzata, questo parametro denominato "t" è una proprietà che è possibile valutare. Inoltre, indipendentemente dall'aspetto della forma, tutte le curve hanno anche un punto iniziale e un punto finale, che si allineano in modo coincidente con i valori t minimo e massimo utilizzati per creare la curva. Questo aiuta anche a capire la sua direzionalità.
È importante notare che Dynamo presuppone che il dominio dei valori "t" per una curva sia compreso tra 0.0 e 1.0.
Tutte le curve presentano inoltre diverse proprietà o caratteristiche che possono essere utilizzate per descriverle o analizzarle. Quando la distanza tra i punti iniziale e finale è pari a zero, la curva è "chiusa". Inoltre, ogni curva presenta diversi punti di controllo; se tutti questi punti si trovano nello stesso piano, la curva è "planare". Alcune proprietà si applicano alla curva nel suo insieme, mentre altre si applicano solo a punti specifici lungo la curva. Ad esempio, la planarità è una proprietà globale, mentre un vettore tangente in corrispondenza di un determinato valore t è una proprietà locale.
Le linee sono la forma più semplice di curve. Potrebbero non sembrare curve, ma in realtà sono curve, solo senza alcuna curvatura. Esistono diversi modi per creare linee, dove la più intuitiva è dal punto A al punto B. La forma della linea AB verrà disegnata tra i punti ma matematicamente si estende all'infinito in entrambe le direzioni.
Quando si collegano due linee, è presente una polilinea. Di seguito è riportata una rappresentazione diretta di che cos'è un punto di controllo. La modifica di una qualsiasi di queste posizioni dei punti modificherà la forma della polilinea. Se la polilinea è chiusa, si ha un poligono. Se le lunghezze dei bordi del poligono sono tutte uguali, vengono descritte come normali.
Man mano che si aggiunge maggiore complessità alle funzioni parametriche che definiscono una forma, è possibile fare un passo avanti rispetto ad una linea per creare un arco, un cerchio, un arco di ellisse o un'ellisse descrivendo uno o due raggi. Le differenze tra la versione dell'arco e il cerchio o l'ellisse sono solo se la forma è chiusa o meno.
NURBS (spline a base razionale non uniformi) sono rappresentazioni matematiche che consentono di modellare in modo accurato qualsiasi forma, da una semplice linea bidimensionale, un cerchio, un arco o un rettangolo, fino alla curva organica di forma libera tridimensionale più complessa. Grazie alla loro flessibilità (relativamente pochi punti di controllo, ma interpolazione uniforme basata sulle impostazioni dei gradi) e alla loro precisione (legata ad una matematica affidabile), i modelli NURBS possono essere utilizzati in qualsiasi processo, dall'illustrazione e dall'animazione fino alla produzione.
Grado: il grado della curva determina l'intervallo di influenza dei punti di controllo su una curva; dove più alto è il grado, maggiore sarà l'intervallo. Il valore del grado è un numero intero positivo. Questo numero è in genere 1, 2, 3 o 5, ma può essere qualsiasi numero intero positivo. Le linee e le polilinee NURBS sono in genere di grado 1 e la maggior parte delle curve di forma libera è di grado 3 o 5.
Punti di controllo: i punti di controllo sono un elenco di punti di almeno grado+1. Uno dei modi più semplici per modificare la forma di una curva NURBS consiste nello spostare i punti di controllo.
Peso: ai punti di controllo è associato un numero denominato peso. In genere i pesi sono numeri positivi. Quando i punti di controllo di una curva hanno tutti lo stesso peso (in genere 1), la curva viene chiamata non razionale, altrimenti la curva viene chiamata razionale. La maggior parte delle curve NURBS non è razionale.
Nodi: i nodi sono un elenco di numeri (grado+N-1), dove N è il numero di punti di controllo. I nodi vengono utilizzati insieme ai pesi per controllare l'influenza dei punti di controllo sulla curva risultante. Un uso per i nodi è creare deviazioni in determinati punti nella curva.
Grado = 1
Grado = 2
Grado = 3
Notare che più alto è il valore del grado, maggiore sarà il numero di punti di controllo utilizzati per interpolare la curva risultante.
Si utilizza una nel modello per rappresentare gli oggetti presenti nel mondo tridimensionale. Mentre le curve non sono sempre piane, ossia sono tridimensionali, lo spazio che definiscono è sempre associato ad una dimensione. Le superfici offrono un'altra dimensione e una raccolta di proprietà aggiuntive utilizzabili in altre operazioni di modellazione.
Importare e valutare una superficie in corrispondenza di un parametro in Dynamo per vedere il tipo di informazioni che è possibile estrarre.
Surface.PointAtParameter restituisce il punto in corrispondenza di una coordinata UV specificata.
Surface.NormalAtParameter restituisce il vettore normale in corrispondenza di una determinata coordinata UV.
Surface.GetIsoline restituisce la curva isoparametrica in corrispondenza di una coordinata U o V. Notare l'input isoDirection.
Scaricare i file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Una superficie è una forma matematica definita da una funzione e due parametri. Anziché t
per le curve, si utilizzano U
e V
per descrivere lo spazio del parametro corrispondente. Ciò significa che sono presenti più dati geometrici in base a cui eseguire disegni quando si utilizza questo tipo di geometria. Ad esempio, le curve hanno vettori tangenti e piani normali (che possono ruotare o torcersi per la lunghezza della curva), mentre le superfici hanno vettori normali e piani tangenti che saranno coerenti nel loro orientamento.
Superficie
Isocurva U
Isocurva V
Coordinata UV
Piano perpendicolare
Vettore normale
Dominio di superficie: un dominio di superficie viene definito come intervallo di parametri (U,V) che vengono valutati in un punto tridimensionale su tale superficie. Il dominio in ogni dimensione (U o V) viene in genere descritto come due numeri (U minimo a U massimo) e (V da minimo a V massimo).
Sebbene la forma della superficie non sembri "rettangolare" e localmente potrebbe avere un insieme di isocurve più serrato o più ampio, lo "spazio" definito dal relativo dominio è sempre bidimensionale. In Dynamo, le superfici sono sempre note per aver un dominio definito da un minimo di 0.0 e un massimo di 1.0 in entrambe le direzioni U e V. Le superfici piane o tagliate possono avere domini diversi.
Isocurva (o curva isoparametrica): una curva definita da un valore U o V costante sulla superficie e da un dominio di valori per l'altra direzione U o V corrispondente.
Coordinata UV: il punto nello spazio del parametro UV definito da U, V e talvolta W.
Piano perpendicolare: un piano perpendicolare ad entrambe le isocurve U e V in corrispondenza di una determinata coordinata UV.
Vettore normale: un vettore che definisce la direzione di "alto" rispetto al piano perpendicolare.
Le superfici NURBS sono molto simili alle curve NURBS. Le superfici NURBS possono essere considerate come una griglia di curve NURBS che vanno in due direzioni. La forma di una superficie NURBS è definita da diversi punti di controllo e dal grado di tale superficie nelle direzioni U e V. Gli stessi algoritmi vengono utilizzati per calcolare la forma, le normali, le tangenti, le curvature e altre proprietà mediante punti di controllo, spessori e grado.
Nel caso delle superfici NURBS, vi sono due direzioni implicite nella geometria, poiché le superfici NURBS sono, indipendentemente dalla forma vista, griglie rettangolari dei punti di controllo. Anche se queste direzioni sono spesso arbitrarie rispetto al sistema di coordinate globale, verranno utilizzate di frequente per analizzare i modelli o generare altra geometria in base alla superficie.
Grado (U,V) = (3,3)
Grado (U,V) = (3,1)
Grado (U,V) = (1,2)
Grado (U,V) = (1,1)
Le PolySurface sono costituite da superfici unite su uno spigolo. Le PolySurface offrono più di una definizione UV bidimensionale nel senso che ora è possibile muoversi tra le forme collegate tramite la loro topologia.
Sebbene la "topologia" in genere descriva un concetto che illustra come le parti sono collegate e/o la topologia correlata, in Dynamo è anche un tipo di geometria. In particolare, si tratta di una categoria principale per superfici, PolySurface e solidi.
Talvolta chiamate superfici chiuse, unire le superfici in questo modo consente di creare forme più complesse e definire i dettagli attraverso la giuntura. Comodamente è possibile applicare un'operazione di raccordo o smusso agli spigoli di una PolySurface.
I dati sono gli oggetti dei nostri programmi. Viaggiano attraverso i fili, fornendo input per i nodi in cui vengono elaborati in una nuova forma di dati di output. Quindi si esaminerà la definizione di dati e la relativa struttura e si inizierà ad utilizzarli in Dynamo.
I dati sono un insieme di valori di variabili qualitative o quantitative. Il formato più semplice di dati è costituito da numeri quali 0
, 3.14
o 17
. Tuttavia, i dati possono anche essere di diversi tipi: una variabile che rappresenta numeri che cambiano (height
), caratteri (myName
), geometria (Circle
) o un elenco di elementi di dati (1,2,3,5,8,13,...
).
In Dynamo vengono aggiunti/inviati dati alle porte di input dei nodi, pertanto è possibile disporre di dati senza eseguire alcuna azione, ma per eseguire le azioni rappresentate dai nodi sono necessari i dati. Quando è stato aggiunto un nodo all'area di lavoro, se non sono stati forniti eventuali input, il risultato sarà una funzione, non il risultato dell'azione stessa.
Dati semplici
Dati ed esecuzione corretta di un'azione (un nodo)
Restituzione di una funzione generica tramite un'azione (nodo) senza input di dati
Attenzione ai valori null. Il tipo 'null'
rappresenta l'assenza di dati. Sebbene si tratti di un concetto astratto, è probabile incontrarlo utilizzando la programmazione visiva. Se un'azione non crea un risultato valido, il nodo restituirà un valore null.
I test per i valori null e la rimozione dei valori null dalla struttura dei dati sono una parte fondamentale per la creazione di programmi efficienti.
Quando si è in presenza della programmazione visiva, è possibile generare molto rapidamente parecchi dati e richiedere un metodo per gestirne la gerarchia. Questo è il ruolo delle strutture dei dati, ovvero gli schemi organizzativi in cui si memorizzano i dati. Le specifiche delle strutture dei dati e il loro utilizzo variano a seconda del linguaggio di programmazione.
In Dynamo, si aggiunge la gerarchia ai dati tramite gli elenchi. Questo argomento verrà approfondito nei capitoli successivi. Si inizierà in maniera semplice:
Un elenco rappresenta una raccolta di elementi posizionati in una struttura di dati:
Ho cinque dita (elementi) sulla mia mano (elenco).
Ci sono dieci case (elementi) sulla mia strada (elenco).
Un nodo Number Sequence definisce un elenco di numeri utilizzando un input start, amount e step. Con questi nodi, sono stati creati due elenchi distinti di dieci numeri, uno che comprende 100-109 e un altro che include 0-9.
Il nodo List.GetItemAtIndex seleziona una voce di un elenco in corrispondenza di un indice specifico. Quando si sceglie 0, viene visualizzata la prima voce dell'elenco (in questo caso 100).
Applicando lo stesso processo al secondo elenco, si ottiene un valore di 0, la prima voce dell'elenco.
Ora si uniscono i due elenchi in uno utilizzando il nodo List.Create. Notare che il nodo crea un elenco di elenchi. Questa operazione modifica la struttura dei dati.
Quando si utilizza di nuovo List.GetItemAtIndex, con l'indice impostato su 0, si ottiene il primo elenco nell'elenco di elenchi. Questo è ciò che significa considerare un elenco come voce, che è in qualche modo diverso da altri linguaggi di scripting. Nei capitoli successivi verranno fornite informazioni più avanzate sulla manipolazione degli elenchi e sulla struttura dei dati.
Il concetto chiave da comprendere sulla gerarchia dei dati in Dynamo: rispetto alla struttura dei dati, gli elenchi vengono considerati come voci. In altre parole, Dynamo funziona con un processo dall'alto in basso per la comprensione delle strutture dei dati. Ciò che cosa significa? Si esaminerà un esempio.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
In questo primo esempio, si assembla un cilindro svuotato che mostra la gerarchia della geometria descritta in questa sezione.
1. Aggiungere Point.ByCoordinates: dopo aver aggiunto il nodo all'area di disegno, viene visualizzato un punto in corrispondenza dell'origine della griglia di anteprima di Dynamo. I valori di default degli input x, y e z sono 0.0, per fornire un punto in questa posizione.
2. Plane.ByOriginNormal: il passaggio successivo nella gerarchia della geometria è un piano. Esistono diversi modi per costruire un piano e si sta utilizzando un'origine e una normale per l'input. L'origine è il nodo del punto creato nel passaggio precedente.
Vector.ZAxis: questo è un vettore unitario nella direzione z. Notare che non sono presenti input, ma solo un vettore di valore [0,0,1]. Viene utilizzato come input normal per il nodo Plane.ByOriginNormal. In questo modo si ottiene un piano rettangolare nell'anteprima di Dynamo.
3. Circle.ByPlaneRadius: passando al livello superiore nella gerarchia, a questo punto si crea una curva dal piano del passaggio precedente. Dopo il collegamento al nodo, si ottiene un cerchio in corrispondenza dell'origine. Il raggio di default sul nodo è il valore di 1.
4. Curve.Extrude: ora è possibile far comparire questo oggetto assegnandogli profondità e rendendolo tridimensionale. Questo nodo crea una superficie da una curva tramite l'estrusione. La distanza di default sul nodo è 1. Nella finestra dovrebbe essere visualizzato un cilindro.
5. Surface.Thicken: questo nodo fornisce un solido chiuso eseguendo l'offset della superficie ad una determinata distanza e chiudendo la forma. Il valore dello spessore di default è 1. Nella finestra viene visualizzato un cilindro svuotato in linea con questi valori.
6. Number Slider: anziché utilizzare i valori di default per tutti questi input, aggiungere al modello un controllo parametrico.
Modifica del dominio: dopo aver aggiunto il dispositivo di scorrimento numerico all'area di disegno, fare clic sull'accento circonflesso in alto a sinistra per visualizzare le opzioni di dominio.
Min/Max/Step - modificare rispettivamente i valori min, max e step in 0,2 e 0.01. Questa operazione consente di controllare la dimensione della geometria complessiva.
7. Number Slider: in tutti gli input di default, copiare e incollare questo dispositivo di scorrimento numerico (selezionare il dispositivo di scorrimento, premere CTRL+C, quindi CTRL+V) più volte, finché tutti gli input con valori di default non mostreranno un dispositivo di scorrimento. Alcuni dei valori del dispositivo di scorrimento devono essere maggiori di zero per far funzionare la definizione (ossia, è necessaria una profondità di estrusione per avere una superficie da ispessire).
8. Ora è stato creato un cilindro svuotato parametrico con questi dispositivi di scorrimento. Provare a regolare alcuni di questi parametri e vedere l'aggiornamento dinamico della geometria nella finestra di Dynamo.
Dispositivi di scorrimento: per fare un ulteriore passo avanti, sono stati aggiunti molti dispositivi di scorrimento all'area di disegno e occorre ripulire l'interfaccia dello strumento appena creato. Fare clic con il pulsante destro del mouse su un dispositivo di scorrimento, selezionare Rinomina e assegnare ad ogni dispositivo di scorrimento il nome appropriato per il relativo parametro (thickness, radius, height, etc).
9. A questo punto, è stato creato un fantastico cilindro ispessito. Attualmente, questo è un oggetto. Si può vedere come creare una serie di cilindri che restano dinamicamente collegati. Per eseguire questa operazione, si creerà un elenco di cilindri, anziché utilizzare un singolo elemento.
Aggiunta (+): l'obiettivo è aggiungere una fila di cilindri accanto al cilindro creato. Se si desidera aggiungere un cilindro adiacente a quello corrente, è necessario considerare sia il raggio del cilindro che lo spessore dell'involucro. Si ottiene questo numero aggiungendo i due valori dei dispositivi di scorrimento.
10. Questo passaggio è più complicato, quindi occorre esaminarlo lentamente: l'obiettivo finale è creare un elenco di numeri che definiscano le posizioni di ogni cilindro in una riga.
a. Moltiplicazione (*): per prima cosa, si desidera moltiplicare il valore del passaggio precedente per 2. Il valore del passaggio precedente rappresenta un raggio e si desidera spostare il cilindro in base al diametro completo.
b. Number Sequence: viene creata una serie di numeri con questo nodo. Il primo input è il nodo della moltiplicazione del passaggio precedente che viene collegato al valore step. Il valore start può essere impostato su 0.0 utilizzando un nodo Number.
c. Dispositivo di scorrimento di numeri interi: per il valore amount, collegare un dispositivo di scorrimento di numeri interi. In questo modo si definirà il numero di cilindri creati.
d. Output: questo elenco mostra la distanza di spostamento per ogni cilindro nella serie e viene parametricamente determinato dai dispositivi di scorrimento originali.
11. Questo passaggio è abbastanza semplice: collegare la sequenza definita nel passaggio precedente all'input x del nodo Point.ByCoordinates originale. Questa operazione sostituirà il dispositivo di scorrimento pointX che è possibile eliminare. Ora nella finestra è visibile una serie di cilindri (assicurarsi che il dispositivo di scorrimento di numeri interi sia maggiore di 0).
12. La catena di cilindri è ancora collegata dinamicamente a tutti i dispositivi di scorrimento. Regolare ogni dispositivo di scorrimento per controllare l'aggiornamento della definizione.
Le funzionalità della mesh di Dynamo possono essere estese installando il pacchetto . Dynamo Mesh Toolkit fornisce strumenti per importare mesh da formati di file esterni, creare mesh da oggetti della geometria di Dynamo e generare manualmente mesh in base ai vertici e agli indici.
Visitare i , ad esempio sull'utilizzo di questo pacchetto.
YÈ possibile leggere ulteriori informazioni sul congelamento dei nodi nella sezione .
Ciò rende le operazioni booleane sui solidi un potente processo che consente di risparmiare tempo. Sono disponibili tre operazioni booleane sui solidi che consentono di distinguere quali parti della geometria vengono mantenute.
Oltre a queste tre operazioni, in Dynamo sono disponibili i nodi Solid.DifferenceAll e Solid.UnionAll per l'esecuzione di operazioni di differenza e unione con più solidi.
La è costituita da un gruppo di punti; ogni linea ha almeno 2 punti. Uno dei metodi più comuni per creare una linea in Dynamo consiste nell'utilizzare Line.ByStartPointEndPoint
per creare una linea in Dynamo.
è un modello utilizzato per rappresentare in modo accurato curve e superfici. Si procederà con la creazione di una curva seno in Dynamo utilizzando due diversi metodi per creare curve NURBS e confrontare i risultati.
Icona | Nome/Sintassi | Input | Output |
---|
Object.IsNull | obj | booleano |
In questo indice sono fornite informazioni aggiuntive su tutti i nodi utilizzati in questa guida introduttiva, nonché su altri componenti che potrebbero risultare utili. Questa è solo un'introduzione ad alcuni dei 500 nodi disponibili in Dynamo.
**In altri termini se si crea una larghezza del cuboide (asse X) pari a 10 e la si trasforma in un CoordinateSystem con scalatura 2x per l'asse X, il valore della larghezza resterà 10. ASM non consente l'estrazione dei vertici di un corpo in un ordine prevedibile, pertanto non è possibile determinare le dimensioni dopo una trasformazione.
Se il formato più semplice di dati è rappresentato dai numeri, il modo più semplice per correlare tali numeri è la matematica. Dai semplici operatori come la divisione fino alle funzioni trigonometriche e alle formule più complesse, la matematica è un ottimo modo per iniziare ad esplorare relazioni e modelli numerici.
Gli operatori sono un insieme di componenti che utilizzano funzioni algebriche con due valori di input numerico, che producono un valore di output (addizione, sottrazione, moltiplicazione, divisione e così via). Questi sono disponibili in Operators > Actions.
Icona | Nome (Sintassi) | Input | Output |
---|---|---|---|
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Combinare operatori e variabili per formare una relazione più complessa mediante le formule. Utilizzare i dispositivi di scorrimento per creare una formula che possa essere controllata con i parametri di input.
1. Creare una sequenza di numeri che rappresenta la "t" nell'equazione parametrica, pertanto si desidera utilizzare un elenco di dimensioni sufficienti per definire una spirale.
Number Sequence: definire una sequenza di numeri in base a tre input: start, amount e step.
2. Con il passaggio precedente è stato creato un elenco di numeri per definire il dominio parametrico. Quindi, creare un gruppo di nodi che rappresenta l'equazione della spirale aurea.
La spirale aurea viene definita come l'equazione:
L'immagine seguente rappresenta la spirale aurea sotto forma di programmazione visiva. Quando si scorre il gruppo di nodi, provare a prestare attenzione al parallelo tra il programma visivo e l'equazione scritta.
a. Number Slider: aggiungere due dispositivi di scorrimento numerici all'area di disegno. Questi dispositivi di scorrimento rappresenteranno le variabili a e b dell'equazione parametrica. Rappresentano una costante flessibile o parametri che è possibile regolare per ottenere il risultato desiderato.
b. Multiplication (*): il nodo della moltiplicazione è rappresentato da un asterisco. Questa opzione verrà utilizzata ripetutamente per collegare le variabili della moltiplicazione.
c. Math.RadiansToDegrees: i valori "t" devono essere convertiti in gradi per la loro valutazione nelle funzioni trigonometriche. Tenere presente che, in Dynamo, per default vengono utilizzati i gradi per valutare queste funzioni.
d. Math.Pow: come funzione di "t" e del numero "e" si crea la sequenza di Fibonacci.
e. Math.Cos e Math.Sin: queste due funzioni trigonometriche differenziano rispettivamente la coordinata x e la coordinata y di ogni punto parametrico.
f. Watch: ora è possibile vedere che l'output comprende due elenchi, che saranno le coordinate x e y dei punti utilizzati per generare la spirale.
Ora, la maggior parte dei nodi del passaggio precedente funzionerà correttamente, ma richiede molto lavoro. Per creare un workflow più efficiente, esaminare DesignScript per definire una stringa di espressioni di Dynamo in un nodo. In questa serie successiva di passaggi, verrà utilizzata l'equazione parametrica per disegnare la spirale di Fibonacci.
Point.ByCoordinates: collegare il nodo della moltiplicazione superiore all'input "x" e quello inferiore all'input "y". Viene visualizzata una spirale parametrica di punti sullo schermo.
Polycurve.ByPoints: collegare Point.ByCoordinates del passaggio precedente a points. È possibile lasciare connectLastToFirst senza input perché non si sta creando una curva chiusa. In questo modo si crea una spirale che passa per ogni punto definito nel passaggio precedente.
A questo punto è stata completata la spirale di Fibonacci. Da qui procedere ulteriormente con due esercizi separati, che si chiameranno Nautilus e Girasole. Si tratta di astrazioni di sistemi naturali, ma le due diverse applicazioni della spirale di Fibonacci saranno ben rappresentate.
Circle.ByCenterPointRadius: in questo caso, verrà utilizzato un nodo Circle con gli stessi input del passaggio precedente. Il valore di default del raggio è 1.0, pertanto viene visualizzato un output immediato dei cerchi. Diventa immediatamente evidente l'ulteriore divergenza dei punti rispetto all'origine.
Number Sequence: questa è la serie originale di "t". Collegando questo valore al valore del raggio di Circle.ByCenterPointRadius, i centri dei cerchi sono ancora più divergenti dall'origine, ma il raggio dei cerchi aumenta, creando uno stravagante grafico a forma di cerchio di Fibonacci.
Punti bonus se lo si rende 3D.
Ora che è stata creata una conchiglia Nautilus circolare, si può passare alle griglie parametriche. Si utilizzerà una rotazione di base sulla spirale di Fibonacci per creare una griglia di Fibonacci e il risultato verrà modellato dopo la crescita dei semi di girasole.
Come punto di partenza, iniziare con lo stesso passaggio dell'esercizio precedente: la creazione di una serie di punti della spirale con il nodo Point.ByCoordinates.
![](../images/5-3/2/math-part IV-01.jpg)
Quindi, seguire questi mini passaggi per generare una serie di spirali con rotazione diversa.
a. Geometry.Rotate: sono disponibili diverse opzioni di Geometry.Rotate; assicurarsi di aver scelto il nodo con geometry, basePlane e degrees come input. Collegare Point.ByCoordinates all'input geometry. Fare clic con il pulsante destro del mouse su questo nodo e verificare che il collegamento sia impostato su Globale.
b. Plane.XY: collegare all'input basePlane. Si ruoterà attorno all'origine, che è la stessa posizione della base della spirale.
c. Range: per l'input degrees, si desidera creare più rotazioni. È possibile farlo rapidamente con un componente di Range. Collegarlo all'input degrees.
d. Number: per definire l'intervallo di numeri, aggiungere tre nodi di numeri all'area di disegno in ordine verticale. Dall'alto verso il basso, assegnare rispettivamente i valori di 0.000, 360.000 e 120.000. Questi determinano la rotazione della spirale. Notare i risultati di output del nodo Range dopo aver collegato i tre nodi di numero al nodo stesso.
L'output sta iniziando a somigliare ad un vortice. Regolare alcuni dei parametri di Range e vedere come cambiano i risultati.
Modificare la dimensione di incremento del nodo Range da 120.000 a 36.600. Notare che in questo modo si creano più rotazioni e quindi si fornisce una griglia più densa.
Modificare la dimensione di incremento del nodo Range da 36.000 a 3.600. In questo modo si ottiene una griglia molto più densa e la direzionalità della spirale non è chiara. Ecco, è stato creato un girasole.
Formalmente, una stringa è una sequenza di caratteri che rappresenta una costante letterale o un tipo di variabile. Informalmente, una stringa sta programmando un linguaggio per il testo. Sono stati utilizzati i numeri, sia interi che decimali, per determinare i parametri ed è possibile fare lo stesso con il testo.
Le stringhe possono essere utilizzate per una vasta gamma di applicazioni, tra cui la definizione di parametri personalizzati, l'annotazione di gruppi di documentazione e l'analisi tramite set di dati basati su testo. Il nodo String si trova in Core > Input Category.
I nodi di esempio riportati sopra sono stringhe. Un numero può essere rappresentato come una stringa, una lettera o un'intera matrice di testo.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
È possibile analizzare una grande quantità di dati rapidamente eseguendo una query sulle stringhe. Saranno descritte alcune operazioni di base che possono accelerare un workflow e aiutare ad ottenere l'interoperabilità del software.
Nell'immagine riportata di seguito è mostrata una stringa di dati proveniente da un foglio di calcolo esterno. La stringa rappresenta i vertici di un rettangolo nel piano XY. Si eseguiranno alcune operazioni di divisione delle stringhe nel mini-esercizio:
Il separatore ";" divide ogni vertice del rettangolo. In questo modo viene creato un elenco con 3 voci per ogni vertice.
Premendo il pulsante "+" al centro del nodo, si crea un nuovo separatore.
Aggiungere una stringa "," all'area di disegno e collegarla all'input del nuovo separatore.
Il risultato è ora un elenco di dieci voci. Il nodo viene prima diviso in base a separator0, quindi in base a separator1.
Sebbene possa sembrare che l'elenco di voci riportato sopra contenga numeri, tali elementi vengono comunque considerati come singole stringhe in Dynamo. Per creare punti, è necessario convertire il tipo di dati da una stringa in un numero. Questa operazione viene eseguita con il nodo String.ToNumber.
Questo nodo è semplice. Collegare i risultati di String.Split all'input. L'output non risulta diverso, ma il tipo di dati è ora un numero anziché una stringa.
Con alcune operazioni aggiuntive di base, ora si dispone di un triangolo disegnato in corrispondenza dell'origine in base all'input di stringa originale.
Poiché una stringa è un oggetto di testo generico, ospita un'ampia gamma di applicazioni. Si esamineranno alcune delle principali azioni in Core > String Category in Dynamo:
Questo metodo consente di unire insieme due stringhe in ordine. In questo modo, si acquisisce ogni stringa letterale in un elenco e si crea una stringa unita.
Nell'immagine seguente è rappresentata la concatenazione di tre stringhe:
Aggiungere o sottrarre stringhe alla concatenazione facendo clic sui pulsanti +/- al centro del nodo.
L'output fornisce una stringa concatenata, con spazi e segni di punteggiatura inclusi.
Il metodo di unione è molto simile a quello della concatenazione, tranne per il fatto che presenta un livello aggiunto di punteggiatura.
Se è stato utilizzato Excel, è possibile che sia stato notato un file CSV. Questo è l'acronimo di Comma Separated Values, ossia valori separati da virgola. Per creare una struttura dei dati simile, si potrebbe utilizzare una virgola (o in questo caso, due trattini) come separatore con il nodo String.Join.
Nell'immagine seguente è rappresentata l'unione di due stringhe:
L'input separator consente di creare una stringa che divide le stringhe unite.
In questo esercizio, si utilizzeranno i metodi di esecuzione delle query e manipolazione delle stringhe per analizzare l'ultima strofa di Fermandosi accanto a un bosco in una sera di neve di Robert Frost. Non è l'applicazione più pratica, ma aiuterà a cogliere le azioni concettuali delle stringhe mentre vengono applicate alle righe leggibili di ritmo e rima.
Iniziare con una stringa di base divisa della strofa. Si noti innanzitutto che la scrittura è formattata in base alle virgole. Questo formato verrà utilizzato per separare ogni riga in singoli elementi.
La stringa di base viene incollata in un nodo String.
Un altro nodo String viene utilizzato per indicare il separatore. In questo caso, si utilizza una virgola.
Un nodo String.Split viene aggiunto all'area di disegno e collegato alle due stringhe.
L'output ora mostra che le righe sono state separate in singoli elementi.
Ora, viene la parte interessante della poesia: le ultime due righe. La strofa originale era un elemento di dati. Questi dati sono stati separati in singoli elementi nel primo passaggio. Ora occorre cercare il testo in questione. E sebbene sia possibile farlo selezionando le ultime due voci dell'elenco, se si trattasse di un intero libro, non si vorrebbe leggere tutto e isolare manualmente gli elementi.
Invece di cercare manualmente, utilizzare un nodo String.Contains per eseguire una ricerca di un set di caratteri. Questa operazione è simile all'esecuzione del comando "Trova" in un elaboratore di testi. In questo caso, se all'interno della voce viene trovata una sottostringa, viene restituito "true" o "false".
Nell'input searchFor, definire una sottostringa che si sta cercando all'interno della strofa. Utilizzare un nodo String con il testo "And miles".
L'output fornisce un elenco di false e true. Questa logica booleana verrà utilizzata per filtrare gli elementi nel passaggio successivo.
List.FilterByBoolMask è il nodo che si desidera utilizzare per escludere false e true. L'output "in" restituisce le istruzioni con un input "mask" di "true", mentre l'output "out" restituisce quelle che sono "false".
L'output di "in" è come previsto e fornisce le due righe finali della strofa.
Ora, si desidera enfatizzare la ripetizione della strofa unendo insieme le due righe. Quando si visualizza l'output del passaggio precedente, si noterà che nell'elenco sono presenti due voci:
Utilizzando due nodi List.GetItemAtIndex, è possibile isolare le voci utilizzando i valori di 0 e 1 come l'input index.
L'output per ogni nodo fornisce, in ordine, le due righe finali.
Per unire questi due voci in una, utilizzare il nodo String.Join:
Dopo aver aggiunto il nodo String.Join, si noterà che è necessario un separatore.
Per creare il separatore, aggiungere un nodo String all'area di disegno e digitare una virgola.
L'output finale ha unito le ultime due voci in un unico elemento.
Può sembrare complesso isolare le ultime due righe ed è vero, perché le operazioni di stringa spesso richiedono un lavoro iniziale. Ma sono scalabili e possono essere applicate a set di dati di grandi dimensioni con relativa facilità. Se si lavora in modo parametrico con fogli di calcolo e interoperabilità, assicurarsi di tenere a mente le operazioni di stringa.
Gli elenchi rappresentano il modo in cui vengono organizzati i dati. Nel sistema operativo del computer, sono presenti file e cartelle. In Dynamo, è possibile considerare questi elementi rispettivamente come voci ed elenchi. Analogamente al sistema operativo in uso, esistono molti modi per creare, modificare e sottoporre a query i dati. In questo capitolo, verrà descritto come vengono gestiti gli elenchi in Dynamo.
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.
Photo by Augustus Binu.
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.
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.
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:
L'input points per PolyCurve.ByPoints cerca “Point\[]”. Rappresenta un elenco di punti.
L'output per PolyCurve.ByPoints è una PolyCurve singola creata da un elenco di cinque punti.
L'input centerPoint per Circle.ByCenterPointRadius richiede "Point".
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.
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:
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'algoritmo "l'elenco più lungo" continua a collegare gli input e a riutilizzare gli elementi, finché tutti i flussi non si esauriscono:
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.
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.
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.
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.
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.
La logica, o più specificatamente, la logica condizionale, consente di specificare un'azione o un gruppo di azioni in base ad un test. Dopo aver valutato il test, sarà presente un valore booleano che rappresenta True
o False
che è possibile utilizzare per controllare il flusso del programma.
Le variabili numeriche possono memorizzare un intero intervallo di numeri diversi. Le variabili booleane possono memorizzare solo due valori indicati come True o False, Yes o No, 1 o 0. Per eseguire i calcoli, raramente vengono utilizzati valori booleani a causa del loro intervallo limitato.
L'istruzione "If" è un concetto chiave nella programmazione: "Se ciò è vero, allora accade questo, altrimenti succede qualcos'altro. L'azione risultante dell'istruzione è determinata da un valore booleano. Esistono diversi modi per definire un'istruzione "If" in Dynamo:
Icona | Nome (Sintassi) | Input | Output |
---|---|---|---|
Si esaminerà un breve esempio per ciascuno di questi tre nodi in azione utilizzando l'istruzione "If" condizionale.
In questa immagine, Boolean è impostato su True, ovvero il risultato è una stringa che riporta: "This is the result if true”. I tre nodi che creano l'istruzione If funzionano in modo identico in questo contesto.
Anche in questo caso, i nodi funzionano in modo identico. Se Boolean viene modificato in False, il risultato è il numero Pi, come definito nell'istruzione If originale.