Sviluppo per Dynamo

Indipendentemente dal livello di esperienza, la piattaforma Dynamo è progettata per consentire a tutti gli utenti di contribuire. Esistono diverse opzioni di sviluppo che si rivolgono a diversi livelli di abilità e competenze, ciascuno con i suoi punti di forza e di debolezza a seconda dell'obiettivo. Di seguito illustreremo le diverse opzioni e come scegliere una piuttosto che un'altra.

Tre ambienti di sviluppo: Visual Studio, l'editor Python Editor e la sintassi DesignScript di Code Block

Quali sono le opzioni disponibili?

Le opzioni di sviluppo per Dynamo si suddividono principalmente in due categorie: per Dynamo anziché in Dynamo. Le due categorie possono essere considerate come segue: "in" Dynamo implica che il contenuto creato con l'IDE Dynamo deve essere utilizzato in Dynamo e "per" Dynamo implica che devono essere utilizzati strumenti esterni per creare il contenuto da importare in Dynamo. Sebbene questa guida si concentri sullo sviluppo per Dynamo, le risorse per tutti i processi sono descritte qui di seguito.

Per Dynamo

Questi nodi consentono il massimo grado di personalizzazione. Molti pacchetti vengono creati con questo metodo ed è necessario per contribuire ai file di origine di Dynamo. Il processo di creazione sarà descritto in questa guida.

  • Nodi zero-touch

  • Nodi derivati da NodeModel

  • Estensioni

La Guida introduttiva contiene una guida sull'importazione di librerie zero-touch.

Per la discussione seguente, Visual Studio viene utilizzato come ambiente di sviluppo per i nodi zero-touch e NodeModel.

L'interfaccia di Visual Studio con un progetto che verrà sviluppato

In Dynamo

Sebbene questi processi esistano nell'area di lavoro di programmazione visiva e siano relativamente semplici, sono tutte opzioni valide per personalizzare Dynamo. La Guida introduttiva li tratta ampiamente e fornisce suggerimenti e pratiche ottimali di scripting nel capitolo Strategie di scripting.

  • I Code Block espongono DesignScript nell'ambiente di programmazione visiva, consentendo workflow flessibili per gli script di testo e i nodi. Una funzione in un Code Block può essere chiamata da qualsiasi elemento dell'area di lavoro.

    Scaricare un esempio di Code Block (fare clic con il pulsante destro del mouse e salvare con nome) o vedere una simulazione dettagliata nella Guida introduttiva.

  • I nodi personalizzati sono contenitori per raccolte di nodi o anche interi grafici. Sono un modo efficace per raccogliere le routine utilizzate più di frequente e condividerle con la comunità.

    Scaricare un esempio di nodo personalizzato (fare clic con il pulsante destro del mouse e salvare con nome) o vedere una simulazione dettagliata nella Guida introduttiva.

  • I nodi Python sono un'interfaccia di scripting nell'area di lavoro di programmazione visiva, simile ai Code Block. Le librerie Autodesk.DesignScript utilizzano una notazione con punto simile a DesignScript.

    Scaricare un esempio di nodo Python (fare clic con il pulsante destro del mouse e salvare con nome) o vedere una simulazione dettagliata nella Guida introduttiva

Lo sviluppo nell'area di lavoro di Dynamo è un potente strumento per ottenere un feedback immediato.

Sviluppo nell'area di lavoro di Dynamo con il nodo Python

Quali sono i vantaggi/gli svantaggi di ciascuna opzione?

Le opzioni di sviluppo per Dynamo sono state progettate per soddisfare la complessità di un'esigenza di personalizzazione. Sia che si tratti di scrivere uno script ricorsivo in Python o di creare un'interfaccia utente del nodo completamente personalizzata, esistono opzioni per l'implementazione del codice che comportano solo lo stretto necessario per essere operativi.

Code Block, nodo Python e nodi personalizzati in Dynamo

Si tratta di opzioni semplici per la scrittura di codice nell'ambiente di programmazione visiva Dynamo. L'area di lavoro di programmazione visiva di Dynamo consente di accedere a Python, DesignScript e alla possibilità di contenere più nodi all'interno di un nodo personalizzato.

Con questi metodi è possibile:

  • Iniziare a scrivere Python o DesignScript quasi senza alcuna impostazione.

  • Importare le librerie di Python in Dynamo.

  • Condividere Code Block, nodi Python e nodi personalizzati con la comunità Dynamo come parte di un pacchetto.

Nodi zero-touch

Il termine zero-touch si riferisce ad un semplice metodo di puntamento e clic per l'importazione di librerie C#. Dynamo consentirà di leggere i metodi pubblici di un file .dll e di convertirli in nodi di Dynamo. È possibile utilizzare il metodo zero-touch per sviluppare nodi e pacchetti personalizzati.

Con questo metodo è possibile:

  • Importare una libreria non necessariamente sviluppata per Dynamo e creare automaticamente una suite di nuovi nodi, come l'esempio AForge nella Guida introduttiva.

  • Scrivere metodi C# e utilizzare facilmente i metodi come nodi in Dynamo.

  • Condividere una libreria C# come nodi con la comunità Dynamo in un pacchetto.

Nodi derivati da NodeModel

Questi nodi sono un livello più basso nella struttura di Dynamo. Si basano sulla classe NodeModel e sono scritti in C#. Sebbene questo metodo offra la massima flessibilità e potenza, la maggior parte degli aspetti del nodo deve essere definita esplicitamente e le funzioni devono risiedere in un assieme separato.

Con questo metodo è possibile:

  • Creare un'interfaccia utente del nodo completamente personalizzabile con dispositivi di scorrimento, immagini, colori e così via (ad esempio, nodo ColorRange).

  • Accedere a ciò che accade nell'area di disegno di Dynamo e intervenire.

  • Personalizzare il collegamento.

  • Caricare elementi in Dynamo come pacchetto.

Informazioni sul controllo sulle modifiche all'API e delle versioni di Dynamo (1.x → 2.x)

Poiché Dynamo viene aggiornato regolarmente, potrebbero essere apportate modifiche a parte dell'API utilizzata da un pacchetto. Il monitoraggio di queste modifiche è importante per garantire che i pacchetti esistenti continuino a funzionare correttamente.

Le modifiche all'API vengono registrate nella pagina Wiki di Dynamo su GitHub. Vengono descritte le modifiche apportate a DynamoCore, alle librerie e alle aree di lavoro.

Un esempio di modifica significativa imminente è la transizione dal formato di file XML a JSON nella versione 2.0. I nodi derivati da NodeModel ora richiedono un costruttore JSON, altrimenti non si apriranno in Dynamo 2.0.

La documentazione sull'API di Dynamo attualmente copre le funzionalità principali: http://dynamods.github.io/DynamoAPI.

Autorizzazione alla distribuzione di file binari in un pacchetto

Tenere presente che i file .dll inclusi in un pacchetto vengono caricati nel gestore di pacchetti. Se l'autore del pacchetto non ha creato il file .dll, deve disporre dei diritti per condividerlo.

Se un pacchetto include file binari, al momento del download si deve richiedere conferma agli utenti che il pacchetto contiene file binari.

Last updated