Dynamo offre diversi metodi per la creazione di nodi personalizzati. È possibile creare nodi personalizzati da zero, da un grafico esistente o esplicitamente in C#. In questa sezione verrà descritta la creazione di un nodo personalizzato nell'interfaccia utente di Dynamo da un grafico esistente. Questo metodo è ideale per la pulizia dell'area di lavoro, nonché per la creazione di una sequenza di nodi da riutilizzare altrove.
Nell'immagine seguente, viene associato un punto da una superficie ad un'altra utilizzando le coordinate UV. Questo concetto verrà utilizzato per creare una superficie a pannelli che faccia riferimento alle curve nel piano XY. Qui verranno creati pannelli quadrangolari per la suddivisione in pannelli, ma utilizzando la stessa logica, è possibile creare una vasta gamma di pannelli con il mappaggio UV. Si tratta di un'ottima opportunità per lo sviluppo di nodi personalizzati perché si potrà ripetere più facilmente un processo simile in questo grafico o in altri workflow di Dynamo.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Iniziare creando un grafico che si desidera nidificare in un nodo personalizzato. In questo esempio, verrà creato un grafico che associa i poligoni da una superficie di base ad una superficie di destinazione utilizzando le coordinate UV. Questo processo di mappaggio UV è un metodo utilizzato di frequente, il che lo rende un buon candidato per un nodo personalizzato. Per ulteriori informazioni sulle superfici e sullo spazio UV, fare riferimento alla pagina Superficie . Il grafico completo è UVmapping_Custom-Node.dyn dal file .zip scaricato in precedenza.
Code Block: utilizzare questa linea per creare un intervallo di 10 numeri compreso tra -45 e 45
45..45..#10;
.Point.ByCoordinates: collegare l'output di Code Block agli input x e y e impostare il collegamento su Globale. Ora dovrebbe essere presente una griglia di punti.
Plane.ByOriginNormal: collegare l'output Point all'input origin per creare un piano in corrispondenza di ciascuno dei punti. Verrà utilizzato il vettore normale di default (0,0,1).
Rectangle.ByWidthLength: collegare i piani del passaggio precedente all'input plane e utilizzare un Code Block con un valore di 10 per specificare la larghezza e la lunghezza.
Ora dovrebbe essere visibile una griglia di rettangoli. Associare questi rettangoli ad una superficie di destinazione utilizzando le coordinate UV.
Polygon.Points: collegare l'output Rectangle.ByWidthLength del passaggio precedente all'input polygon per estrarre i punti degli angoli di ogni rettangolo. Questi sono i punti che verranno associati alla superficie di destinazione.
Rectangle.ByWidthLength: utilizzare un Code Block con un valore di 100 per specificare la larghezza e la lunghezza di un rettangolo. Sarà il contorno della superficie di base.
Surface.ByPatch: collegare l'output Rectangle.ByWidthLength del passaggio precedente all'input closedCurve per creare una superficie di base.
Surface.UVParameterAtPoint: collegare l'output Point del nodo Polygon.Points e l'output Surface del nodo Surface.ByPatch per restituire il parametro UV in ogni punto.
Ora che sono presenti una superficie di base e un gruppo di coordinate UV, è possibile importare una superficie di destinazione e associare i punti tra le superfici.
File Path: selezionare il percorso del file della superficie che si desidera importare. Il tipo di file deve essere .SAT. Fare clic sul pulsante Sfoglia... e individuare il file UVmapping_srf.sat nel file .zip scaricato in precedenza.
Geometry.ImportFromSAT: collegare il percorso del file per importare la superficie. La superficie importata dovrebbe essere visualizzata nell'anteprima della geometria.
UV: collegare l'output del parametro UV ad un nodo UV.U e UV.V.
Surface.PointAtParameter: collegare la superficie importata, nonché le coordinate u e v. Ora dovrebbe essere visualizzata una griglia di punti 3D sulla superficie di destinazione.
Il passaggio finale consiste nell'utilizzare i punti 3D per costruire superfici di chiusura rettangolari.
PolyCurve.ByPoints: collegare i punti sulla superficie per costruire una PolyCurve attraverso i punti.
Boolean: aggiungere un valore Boolean all'area di lavoro e collegarlo all'input connectLastToFirst e attivare True per chiudere le PolyCurve. Ora dovrebbero essere visualizzati i rettangoli associati alla superficie.
Surface.ByPatch: collegare le PolyCurve all'input "closedCurve" per costruire superfici di chiusura.
A questo punto, selezionare i nodi che si desidera nidificare in un nodo personalizzato, pensando agli input e agli output del nodo stesso. Si desidera che il nodo personalizzato sia il più flessibile possibile, pertanto dovrebbe essere associabile ad eventuali poligoni, non solo ai rettangoli.
Selezionare i seguenti nodi (a partire da Polygon.Points), fare clic con il pulsante destro del mouse sull'area di lavoro e selezionare Crea nodo personalizzato.
Nella finestra di dialogo Proprietà nodo personalizzato, assegnare un nome, una descrizione e una categoria al nodo personalizzato.
Nome: MapPolygonsToSurface
Descrizione: mappare i poligoni da una base ad una superficie di destinazione
Categoria di Moduli aggiuntivi: Geometry.Curve
Il nodo personalizzato ha notevolmente ripulito l'area di lavoro. Notare che gli input e gli output sono stati denominati in base ai nodi originali. Modificare il nodo personalizzato per rendere i nomi più descrittivi.
Fare doppio clic sul nodo personalizzato per modificarlo. Verrà aperta un'area di lavoro con uno sfondo giallo che rappresenta l'interno del nodo.
Input: modificare i nomi di input in baseSurface e targetSurface.
Output: aggiungere un altro output ai poligoni associati.
Salvare il nodo personalizzato e tornare all'area di lavoro iniziale. Tenere presente che il nodo MapPolygonsToSurface riflette le modifiche appena apportate.
È inoltre possibile potenziare la robustezza del nodo personalizzato mediante l'aggiunta di commenti personalizzati. I commenti possono aiutare a visualizzare suggerimenti sui tipi di input e output o spiegare le funzionalità del nodo. I commenti vengono visualizzati quando l'utente posiziona il cursore del mouse su un input o un output di un nodo personalizzato.
Fare doppio clic sul nodo personalizzato per modificarlo. Verrà riaperta l'area di lavoro con lo sfondo giallo.
Iniziare a modificare il Code Block Input. Per iniziare a scrivere un commento, digitare "//" seguito dal testo del commento. Digitare tutto ciò che potrebbe essere utile per chiarire il nodo. Qui verrà descritto l'input targetSurface.
Definire inoltre il valore di default per inputSurface impostando il tipo di input uguale ad un valore. Qui, si imposterà il valore di default sul nodo Surface.ByPatch originale impostato.
I commenti possono essere applicati anche agli output.
Modificare il testo nel Code Block Output. Digitare "//" seguito dal testo del commento. Qui verranno chiariti gli output Polygons e surfacePatches aggiungendo una descrizione più approfondita.
Posizionare il cursore del mouse sugli input del nodo personalizzato per visualizzare i commenti.
Con il valore di default impostato su inputSurface, è inoltre possibile eseguire la definizione senza un input Surface.
I nodi personalizzati vengono costruiti nidificando altri nodi e nodi personalizzati all'interno di un "nodo personalizzato di Dynamo", che è possibile immaginare concettualmente come un contenitore. Quando viene eseguito questo nodo contenitore nel grafico, tutto ciò che si trova all'interno verrà eseguito per consentire di riutilizzare e condividere una combinazione utile di nodi.
Quando nel grafico sono presenti più copie di un nodo personalizzato, è possibile aggiornarle tutte modificando il nodo personalizzato di base. Ciò consente di aggiornare il grafico in modo semplice adattandolo a eventuali modifiche che potrebbero verificarsi nel workflow o nella progettazione.
Probabilmente la migliore funzionalità dei nodi personalizzati è la loro capacità di condivisione del lavoro. Se un utente avanzato crea un grafico di Dynamo complesso e lo consegna ad un progettista che non conosce Dynamo, può condensare il grafico agli elementi essenziali per l'interazione progettuale. Il nodo personalizzato può essere aperto per modificare il grafico interno, ma il "contenitore" può essere mantenuto semplice. Con questo processo, i nodi personalizzati consentono agli utenti di Dynamo di progettare un grafico ordinato e intuitivo.
Si passerà all'ambiente dei nodi personalizzati e si creerà un nodo semplice per calcolare una percentuale. L'ambiente dei nodi personalizzati è diverso dall'ambiente dei grafici di Dynamo, ma l'interazione è fondamentalmente la stessa. Detto questo, procedere creando il primo nodo personalizzato.
Per creare un nodo personalizzato da zero, avviare Dynamo e selezionare Nodo personalizzato oppure digitare CTRL+MAIUSC+N nell'area di disegno.
Assegnare un nome, una descrizione e una categoria nella finestra di dialogo Proprietà nodo personalizzato.
Nome: Percentage
Descrizione: Calculate the percentage of one value in relation to another
Categoria: Math.Functions
Verrà aperta un'area di disegno con uno sfondo giallo, ad indicare che si sta lavorando all'interno di un nodo personalizzato. In questa area di disegno è possibile accedere a tutti i nodi di Dynamo principali, nonché ai nodi Input e Output, che etichettano il flusso di dati in entrata e in uscita nel nodo personalizzato. Sono disponibili in Input>Basic.
Input: i nodi di input creano porte di input nel nodo personalizzato. La sintassi per un nodo di input è input_name : datatype = default_value(optional).
È possibile salvare questo nodo personalizzato come file .dyf (anziché come file .dyn standard) e verrà aggiunto automaticamente alla sessione corrente e alle sessioni future. Il nodo personalizzato è reperibile nella libreria dalla sezione Add-ons.
Dopo aver creato il primo nodo personalizzato, nelle sezioni successive si approfondiranno la funzionalità dei nodi personalizzati e si spiegherà come pubblicare workflow generici. Nella seguente sezione verrà illustrato lo sviluppo di un nodo personalizzato che trasferisce la geometria da una superficie ad un'altra.
Esistono svariati modi per creare nodi personalizzati in Dynamo. Negli esempi riportati in questo capitolo, verranno creati nodi personalizzati direttamente dall'interfaccia utente di Dynamo. Se si è programmatori e si è interessati alla formattazione C# o zero-touch, è possibile fare riferimento nella Wiki di Dynamo per una revisione più approfondita.
Output: simili agli input, creeranno e assegneranno nomi alle porte di output nel nodo personalizzato. È possibile aggiungere un commento personalizzato alle porte di input e output per inserire un suggerimento nei tipi Input e Output. Questo argomento è descritto più dettagliatamente nella sezione .
Dynamo offre molti nodi principali per un'ampia gamma di attività di programmazione visiva. A volte una soluzione più rapida, più elegante o più facilmente condivisa consiste nella creazione di nodi personalizzati. Questi possono essere riutilizzati tra diversi progetti, rendono i grafici più chiari e più ordinati, possono essere trasmessi a Package Manager e condivisi con la comunità di Dynamo globale.
È stato appena creato un nodo personalizzato ed è stato applicato ad un processo specifico nel grafico di Dynamo. E dato che questo nodo è ben riuscito, si desidera mantenerlo nella libreria di Dynamo come riferimento in altri grafici. Per eseguire questa operazione, il nodo verrà pubblicato localmente. Questo è un processo simile alla pubblicazione di un pacchetto, che sarà esaminata più in dettaglio nel prossimo capitolo.
Se si pubblica un nodo localmente, questo sarà accessibile nella libreria di Dynamo quando si apre una nuova sessione. Senza pubblicare un nodo, un grafico di Dynamo che fa riferimento ad un nodo personalizzato deve anche contenere tale nodo personalizzato nella relativa cartella (o il nodo personalizzato deve essere importato in Dynamo utilizzando File > Importa libreria).
È possibile pubblicare nodi e pacchetti personalizzati da Dynamo Sandbox nella versione 2.17 e successive, purché non presentino dipendenze API host. Nelle versioni precedenti, la pubblicazione di nodi e pacchetti personalizzati è abilitata solo in Dynamo for Revit e Dynamo for Civil 3D.
Scaricare il file di esempio facendo clic sul collegamento seguente.
Un elenco completo di file di esempio è disponibile nell'Appendice.
Procedere con il nodo personalizzato creato nella sezione precedente. Una volta aperto il nodo personalizzato PointsToSurface, viene visualizzato il grafico nell'Editor nodi personalizzati di Dynamo. È inoltre possibile aprire un nodo personalizzato facendovi doppio clic nell'editor dei grafici di Dynamo.
Per pubblicare un nodo personalizzato localmente, è sufficiente fare clic con il pulsante destro del mouse sull'area di disegno e selezionare Pubblica questo nodo personalizzato.
Compilare le informazioni pertinenti simili a quelle mostrate nell'immagine riportata sopra e selezionare Pubblica localmente. Notare che il campo Gruppo (facoltativo) definisce l'elemento principale accessibile dal menu di Dynamo.
Scegliere una cartella in cui memorizzare tutti i nodi personalizzati che si prevede di pubblicare localmente. In Dynamo viene controllata questa cartella ad ogni caricamento del programma, quindi verificare che si trovi in una posizione permanente. Individuare la cartella e scegliere Seleziona cartella. Il nodo di Dynamo viene ora pubblicato localmente e rimarrà nella libreria di Dynamo ogni volta che si carica il programma.
Per verificare il percorso della cartella dei nodi personalizzati, accedere a Dynamo > Preferenze > Impostazioni pacchetto > Percorsi di nodi e pacchetti.
In questa finestra viene visualizzato un elenco di percorsi.
Documents\DynamoCustomNodes... si riferisce alla posizione dei nodi personalizzati pubblicati localmente.
AppData\Roaming\Dynamo... si riferisce alla posizione di default dei pacchetti di Dynamo installati in linea.
È possibile spostare il percorso della cartella locale in basso nell'ordine dell'elenco (facendo clic sul percorso sulla freccia giù a sinistra dei nomi dei percorsi). La cartella superiore è il percorso di default per le installazioni di pacchetti. Pertanto, se si mantiene il percorso di installazione di default del pacchetto di Dynamo come cartella di default, i pacchetti in linea verranno separati dai nodi pubblicati localmente.
È stato cambiato l'ordine dei nomi dei percorsi in modo da avere il percorso di default di Dynamo come posizione di installazione del pacchetto.
Accedendo a questa cartella locale, è possibile trovare il nodo personalizzato originale nella cartella dyf, che è l'estensione del file di un nodo personalizzato di Dynamo. Si può modificare il file in questa cartella e il nodo verrà aggiornato nell'interfaccia utente. È inoltre possibile aggiungere altri nodi alla cartella DynamoCustomNodes principale. In Dynamo verranno aggiunti alla libreria al riavvio.
Dynamo ora viene caricato ogni volta con PointsToSurface nel gruppo DynamoPrimer della libreria di Dynamo.