# Esempi

Se si cercano esempi su come sviluppare Dynamo, consultare le seguenti risorse:

#### Esempi di repository <a href="#sample-repositories" id="sample-repositories"></a>

Di seguito sono riportati alcuni esempi di modelli di Visual Studio che è possibile utilizzare per avviare un progetto personalizzato:

* [**ZeroTouchEssentials**](https://github.com/DynamoDS/ZeroTouchEssentials)**:** modello per i nodi zero-touch di base.
  * Restituire più output: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloNodeModel.cs#L15-L24)
  * Utilizzare un oggetto geometria nativo da Dynamo: [codice](https://github.com/DynamoDS/ZeroTouchEssentials/blob/9917fd8159afc9e7bdb2944c960155a496e0b2dc/ZeroTouchEssentials/ZeroTouchEssentials.cs#L86-L89)
  * Proprietà di esempio (nodo Query): [codice](https://github.com/DynamoDS/ZeroTouchEssentials/blob/9917fd8159afc9e7bdb2944c960155a496e0b2dc/ZeroTouchEssentials/ZeroTouchEssentials.cs#L48)
* [**HelloDynamo**](https://github.com/teocomi/HelloDynamo)**:** modelli per i nodi NodeModel di base e la personalizzazione della vista.
  * Modello NodeModel di base: [HelloNodeModel.cs](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/HelloNodeModel.cs)
    * Definire gli attributi del nodo (nomi di input/output, descrizioni, tipi): [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloNodeModel.cs#L15)
    * Restituire un nodo null se non sono presenti input: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloNodeModel.cs#L34-L36)
    * Creare una chiamata di funzione: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloNodeModel.cs#L39)
  * Modello di personalizzazione della vista NodeModel di base: [HelloGui.cs](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/HelloGui.cs), [HelloGuiNodeView.cs](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/HelloGuiNodeView.cs), [Slider.xaml](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/Slider.xaml), [Slider.xaml.cs](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/Slider.xaml.cs)
    * Avvisare l'interfaccia utente che un elemento deve essere aggiornato: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloGui.cs#L27)
    * Personalizzare NodeModel: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/HelloGuiNodeView.cs#L11)
    * Definire gli attributi del dispositivo di scorrimento: [codice](https://github.com/teocomi/HelloDynamo/blob/6c5333d731d58043c12e84cd3244cdbafbe74934/HelloDynamo/HelloNodeModel/Slider.xaml#L10)
    * Determinare la logica di interazione per il dispositivo di scorrimento: [codice](https://github.com/teocomi/HelloDynamo/blob/master/HelloDynamo/HelloNodeModel/Slider.xaml.cs)
* [**DynamoSamples**](https://github.com/DynamoDS/DynamoSamples)**:** modelli per nodi zero-touch, interfaccia utente personalizzata, test ed estensioni delle viste.
  * [Esempi di interfaccia utente](https://github.com/DynamoDS/DynamoSamples/tree/master/src/SampleLibraryUI)
    * Creare un nodo dell'interfaccia utente personalizzato di base: [CustomNodeModel.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryUI/Examples/CustomNodeModel.cs)
    * Creare un menu a discesa: [DropDown.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryUI/Examples/DropDown.cs)
  * [Test](https://github.com/DynamoDS/DynamoSamples/tree/master/src/SampleLibraryTests)
    * Test di sistema: [HelloDynamoSystemTests.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryTests/HelloDynamoSystemTests.cs)
    * Test zero-touch: [HelloDynamoZeroTouchTests.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryTests/HelloDynamoZeroTouchTests.cs)
  * [Esempi zero-touch](https://github.com/DynamoDS/DynamoSamples/tree/master/src/SampleLibraryZeroTouch/Examples):
    * Esempio di nodi zero-touch, incluso uno che implementa `IGraphicItem` per influenzare il rendering della geometria: [BasicExample.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryZeroTouch/Examples/BasicExample.cs)
    * Esempio di nodi zero-touch per colorare la geometria utilizzando `IRenderPackage`: [ColorExample.cs](https://github.com/DynamoDS/DynamoSamples/blob/master/src/SampleLibraryZeroTouch/Examples/ColorExample.cs)
  * [Esempi di estensione della vista](https://github.com/DynamoDS/DynamoSamples/tree/master/src/SampleViewExtension): un'implementazione IViewExtension che mostra una finestra non modale quando si fa clic sul relativo MenuItem.
* [**NodeModelsEssentials**](https://github.com/nonoesp/DynamoNodeModelsEssentials)**:** modelli per lo sviluppo di pacchetti di Dynamo avanzati utilizzando NodeModel.
  * Esempi di Essentials:
    * [Error](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/EssentialsError.cs)
    * [MultiOperation](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/EssentialsMultiOperation.cs)
    * [Multiply](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/EssentialsMultiply.cs)
    * [Timeout](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/EssentialsTimeout.cs)
  * Esempi di geometria:
    * [CustomPreview](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/GeometryCustomPreview.cs)
    * [SurfaceFrom4Points](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/GeometrySurfaceFrom4Points.cs)
    * [UVPlanesOnSurface](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/GeometryUVPlanesOnSurface.cs)
    * [WobblySurface](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/GeometryWobblySurface.cs)
  * Esempi di interfaccia utente:
    * [Button](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UIButton.cs)
    * [ButtonFunction](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UIButtonFunction.cs)
    * [CopyableWatch](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UICopyableWatch.cs)
    * [Slider](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UISlider.cs)
    * [SliderBound](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UISliderBound.cs)
    * [State](https://github.com/nonoesp/DynamoNodeModelsEssentials/blob/master/src/Essentials/NodeModelsEssentials/UIState.cs)

[**DynamoText**](https://github.com/DynamoDS/DynamoText)**:** una libreria zero-touch per la creazione di testo in Dynamo.

#### Case study <a href="#case-studies" id="case-studies"></a>

Gli sviluppatori di terze parti hanno apportato contributi significativi ed entusiasmanti alla piattaforma, molti dei quali sono anche open source. I seguenti progetti sono esempi eccezionali di ciò che si può fare con Dynamo.

**Ladybug** è una libreria Python che consente di caricare, analizzare e modificare i file EPW (EnergyPlus Weather).

<https://github.com/ladybug-tools/ladybug>

**Honeybee** è una libreria Python che consente di creare, eseguire e visualizzare i risultati della luce diurna (RADIANCE) e dell'analisi energetica (EnergyPlus/OpenStudio).

<https://github.com/ladybug-tools/honeybee>

**Bumblebee** è un plug-in per l'interoperabilità di Excel e Dynamo (GPL).

<https://github.com/ksobon/Bumblebee>

**Clockwork** è una raccolta di nodi personalizzati per le attività correlate a Revit, nonché altri scopi quali la gestione degli elenchi, le operazioni matematiche, le operazioni di tipo stringa, le operazioni geometriche (principalmente caselle di delimitazione, mesh, piani, punti, superfici, UV e vettori) e la suddivisione in pannelli.

<https://github.com/andydandy74/ClockworkForDynamo>
