Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Daniele Marelli

Members
  • Portfolio

    Portfolio
  • Content Count

    17
  • Joined

  • Last visited

  • Days Won

    2

Reputation Activity

  1. Like
    Daniele Marelli got a reaction from VKTproject in Importare edifici da OpenStreetMap in Revit   
    Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 
     
    Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH
    È necessario Dynamo 2.0 o versione superiore.
     

     
    OpenStreetMap
    OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.
     
    Pacchetti utilizzati
     
    GIS2BIM (facoltativo) - Per il download diretto della mappa Elk - Per l'analisi del file OSM Clockwork - Per una veloce operazione su una lista Springs - Per la creazione delle masse in Revit  
    Download della mappa
    Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM. 
     
    Download manuale
    Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.
     

     
     
    Download da GIS2BIM
    Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

    Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 
     
    Estrazione dei dati dal file .osm
    Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

    Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili
     
    Creazione dei solidi
    Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.
     
    Definizione dell'altezza degli edifici
    Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

    La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.
     
    Sottrazione dei vuoti

    Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.
     
    Creazione delle masse
    Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).
     
     
    Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.
  2. Like
    Daniele Marelli reacted to emilierollandin in Notre Dame de Paris   
    Carino il render ma per il resto un progetto simile mi fa orrore.
    Viene considerata come un qualunque rooftop di un centro commerciale da cui godersi il panorama. È un luogo di culto!
    Guardo queste immagini che apprezzo dal punto di vista grafico ma mi chiedo dove sia la "preghiera"? Ah si, sento forse la mia, perché non venga realizzata la copertura in questa forma.
  3. Like
    Daniele Marelli reacted to ferruccio della schiava in PREZZARIO REGIONALE DEI LAVORI PUBBLICI E NOTE CHIAVE #BIMREVIT · parte 1°   
    Prima parte di una miniguida #BIM #Revit, relativa alla possibilità di utilizzare il PREZZARIO REGIONALE DEI LAVORI PUBBLICI per creare una lista di note chiave, da usare nei progetti di Revit. Occorre lavorarci un po' ma non c'è nulla di complicato.
    La guida si riferisce alla mia regione ma il processo è unico ed è valido anche per i prezzari relativi ad altre regioni.
     

     
    Innanzitutto ti spiego cos'è il prezzario e per farlo userò quanto scritto nel sito regionale: Il prezzario contiene un sistema codificato di voci che descrivono gli oneri compresi o esclusi dal prezzo dei magisteri, i prezzi di una serie di materiali a piè d’opera, dei noli, i costi orari della manodopera. Il file contenente queste voci, per solo Friuli Venezia Giulia, si scarica dal portale regionale www.regione.fvg.it e direttamente a questo LINK.
    Dopo aver scaricato il file "Prezzario_FVG_2018_SA" in formato *.xlsx lo apri con Excel e vediamo insieme cosa contiene.
     

     
    Le colonne presenti definiscono le informazioni relative a:
    "Codice" codice numerico non parlante quale indicatore progressivo delle varie voci e separato da punti; "Breve" descrizione univoca della voce di computo; "Des.U.M." descrizione del'unità di misura della voce; "Prezzo" il costo per unità di misura o a corpo; "% manodopera" valore in percentuale relativa all'addizionale per la realizzazione.  
    Per far si che il prezzario sia leggibile da Revit lo devi esportare in un formato compatibile, ovvero un file con estensione *.txt, tenendo in considerazione che Revit legge solo le prime due colonne, nel nostro caso: "Codice" e "Breve" e che le stesse devono rimanere inalterate nel loro formato, quindi controlla: Formato celle / Categoria / Generale. Se questo è quello che vuoi ottenere devi eliminare tutta la riga "1", contenente i titoli ed anche le colonne che non ti interessano, ovvero la "C", la "D", la "E".
     

     
    Passiamo ora all'esportazione del file.
    In Excel, seleziona dalla scheda File il comando Esporta e da qui l'opzione Cambia tipo di file (il dischetto blu a sinistra), ora devi dire ad Excel in quale formato vuoi salvare, in Altri tipi di file, scegli l'opzione Testo (con valori delimitati da tabulazioni) (*.txt) e concludi salvando con l'altro dischetto blu in basso, in una cartella di tua preferenza e con il nome che preferisci. Io preferisco mantenere quello originale "Prezzario_FVG_2018_SA".
     

     
    Conclusa la prima parte occorre segnalare a Revit in quale cartella abbiamo salvato il file del prezzario da usare come data base per le note chiave dei tuoi progetti. Dopo aver aperto un file qualsiasi in Revit, dal menu Annota sotto Nota chiave seleziona il comando Impostazioni nota chiave, dove andrà indicato il nuovo percorso all'interno del tuo computer. In questa finestra puoi anche Visualizzare il contenuto del data base o Ricaricare il file scelto in caso di modifica.
     

     
    Un avviso ti notifica che il file non si trova nelle librerie di Revit, meglio così perché in caso di re-installazione quelle cartelle vengono sovrascritte eliminando i files aggiunti; l'avviso seguente ti informa della corretta lettura.
     

     
    Con l'operazione di verifica si è conclusa la prima parte di questo #tutorial #BIMREVIT. Ora puoi utilizzare le voci del prezzario regionale nei tuoi progetti ma senza le informazioni presenti nelle colonne che abbiamo dovuto eliminare; se il risultato che volevi è questo puoi pure fermarti qui ma se ti servono tutte le informazioni contenute, attendi la seconda parte che pubblicherò a breve.
     
    Se hai gradito questo tutorial puoi farmelo sapere mettendo un like (il pollicione alzato qui in basso a destra) o confermando una delle competenze presenti nel mio profilo linkedIN. Grazie.
    #corsibim #corsirevit #corsirevitudine
  4. Like
    Daniele Marelli reacted to Lucia Frascerra in Before you go   
    This image is inspired by the play "Fish Eye" by Lucas Kavner, a funny and emotional raw portrait of a couple struggling to hold on to one another without losing themselves. 
    In the scene, Anna and Max, the two main characters, are in their home in Manhattan. At some point in the play, Anna decides to move from NYC to Los Angeles to study and follow her dreams, leaving Max behind.
    The image shows a specific moment, a few days before Anna's departure. It's morning, Max lies awake in bed, pensive, thinking about his relationship with Anna, wishing she would have chosen him over her dreams.
    3Ds Max + Vray + Photoshop
  5. Thanks
    Daniele Marelli got a reaction from Akira93 in Creazione pavimentazione esterna con un motivo geometrico   
    Ho provato a dare un'occhiata alla famiglia. Il file .rfa è effettivamente un'unica piastrella come modello generico, nella quale è presente sia una geometria nativa di revit (un semplice parallelepipedo) che altra geometria importata che va ad appesantire il file. L'altro file è un template, .rte, e sinceramente non capisco perchè il produttore lo fornisca. Se provi a creare un pavimento nel file .rte uno dei due tipi disponibili è "Ferrari BK - Sasslong® - paving system", formato da un solo strato con il giusto materiale associato (le texture del materiale vengono fornite a parte, che apparirebbe altrimenti grigio, piatto e come un'unica lastra). 
    A questo punto tutto dipende dal tuo obiettivo. Ti sconsiglio di usare la piastrella singola e copiarla, a meno che il tuo obiettivo non sia avere l'esatta disposizione e conteggio di tutte le piastrelle. Potresti comunque creare un "modulo" di piastrelle e ripeterlo sulla superficie. 
    Se il tuo scopo è fare un render, usa il pavimento creato nel file .rte e copialo nel tuo file. Poi sistemi gli strati nel tuo pavimento con i materiali giusti delle piastrelle. Usa le texture fornite dal produttore per completare il materiale (manca la mappa bump, dovresti crearle te in photoshop o simile se vuoi un maggiore realismo nella fuga delle piastrelle). 
    Se invece quello che ti interessa sono viste di pianta o 3D non realistici, puoi creare un retino di modello con la disposizione delle piastrelle e assegnarlo come "Motivo superficie" al materiale.
  6. Like
    Daniele Marelli got a reaction from Akira93 in Creazione pavimentazione esterna con un motivo geometrico   
    Ciao, i pavimenti non sono famiglie caricabili di per se, sarebbe utile sapere qualche informazione in più sulla famiglia che hai scaricato. Si tratta di un file .rfa o .rvt? Puoi mettere qualche immagine o caricare direttamente il file?
  7. Like
    Daniele Marelli got a reaction from Eziosonoio in Importare edifici da OpenStreetMap in Revit   
    Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 
     
    Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH
    È necessario Dynamo 2.0 o versione superiore.
     

     
    OpenStreetMap
    OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.
     
    Pacchetti utilizzati
     
    GIS2BIM (facoltativo) - Per il download diretto della mappa Elk - Per l'analisi del file OSM Clockwork - Per una veloce operazione su una lista Springs - Per la creazione delle masse in Revit  
    Download della mappa
    Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM. 
     
    Download manuale
    Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.
     

     
     
    Download da GIS2BIM
    Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

    Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 
     
    Estrazione dei dati dal file .osm
    Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

    Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili
     
    Creazione dei solidi
    Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.
     
    Definizione dell'altezza degli edifici
    Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

    La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.
     
    Sottrazione dei vuoti

    Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.
     
    Creazione delle masse
    Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).
     
     
    Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.
  8. Like
    Daniele Marelli got a reaction from Akira93 in Importare famiglie in rvt   
    Per le famiglie di sistema (muri ecc.) o gruppi di famiglie può essere utile fare un semplice copia/incolla tra il file rvt che hai scaricato e quello del tuo progetto.
  9. Like
    Daniele Marelli reacted to Matteo Proia in RevEx plugin Revit - Interoperabilità Excell <-> Revit   
    Salve, mi fa piacere segnalarvi un plugin forse poco conosciuto ma veramente molto utile.
     
    Si chiama RevEx e non fa altro che esportare un abaco in formato Excell, permettere la compilazione dei parametri direttamente dal software Microsoft e quindi la re-importazione su Revit con la conseguente modifica del parametro o dell'elemento su Revit. In molti frangenti, soprattutto di compilazione, lo abbiamo trovato più semplice di Dynamo.
     
    Per quanto mi riguarda l'ho utilizzato per inserire i calcoli dei valori delle portate dei diffusori direttamente da Excell: posizionamento diffusori con parametro Portata vuoto, export da Revit dell'abaco con identificativo della stanza, compilazione con inserimento formula nei campi vuoti, importazione del documento compilato su Revit e auto-modifica dei parametri e dei tipi dei diffusori in funzione delle portate.
     
    Ora, spero di essermi spiegato bene, ma se ce ne è necessità posso fare un breve tutorial.
     
  10. Thanks
    Daniele Marelli reacted to ferruccio della schiava in Importare edifici da OpenStreetMap in Revit   
    Daniele aprezzo come sempre i tuoi interventi e ti ringrazio per l'impegno e per la semplicità espositiva. Ho sottomano un progetto utile su cui testare il preocedimento, intanto mi sono iscritto a OpenStreetMap e metà del lavoro è fatto! (...non credo proprio)
  11. Like
    Daniele Marelli got a reaction from ferruccio della schiava in Importare edifici da OpenStreetMap in Revit   
    Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 
     
    Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH
    È necessario Dynamo 2.0 o versione superiore.
     

     
    OpenStreetMap
    OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.
     
    Pacchetti utilizzati
     
    GIS2BIM (facoltativo) - Per il download diretto della mappa Elk - Per l'analisi del file OSM Clockwork - Per una veloce operazione su una lista Springs - Per la creazione delle masse in Revit  
    Download della mappa
    Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM. 
     
    Download manuale
    Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.
     

     
     
    Download da GIS2BIM
    Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

    Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 
     
    Estrazione dei dati dal file .osm
    Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

    Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili
     
    Creazione dei solidi
    Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.
     
    Definizione dell'altezza degli edifici
    Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

    La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.
     
    Sottrazione dei vuoti

    Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.
     
    Creazione delle masse
    Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).
     
     
    Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.
  12. Like
    Daniele Marelli got a reaction from Rockman in Importare edifici da OpenStreetMap in Revit   
    Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 
     
    Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH
    È necessario Dynamo 2.0 o versione superiore.
     

     
    OpenStreetMap
    OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.
     
    Pacchetti utilizzati
     
    GIS2BIM (facoltativo) - Per il download diretto della mappa Elk - Per l'analisi del file OSM Clockwork - Per una veloce operazione su una lista Springs - Per la creazione delle masse in Revit  
    Download della mappa
    Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM. 
     
    Download manuale
    Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.
     

     
     
    Download da GIS2BIM
    Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

    Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 
     
    Estrazione dei dati dal file .osm
    Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

    Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili
     
    Creazione dei solidi
    Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.
     
    Definizione dell'altezza degli edifici
    Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

    La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.
     
    Sottrazione dei vuoti

    Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.
     
    Creazione delle masse
    Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).
     
     
    Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.
  13. Like
    Daniele Marelli got a reaction from D@ve in Importare edifici da OpenStreetMap in Revit   
    Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 
     
    Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH
    È necessario Dynamo 2.0 o versione superiore.
     

     
    OpenStreetMap
    OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.
     
    Pacchetti utilizzati
     
    GIS2BIM (facoltativo) - Per il download diretto della mappa Elk - Per l'analisi del file OSM Clockwork - Per una veloce operazione su una lista Springs - Per la creazione delle masse in Revit  
    Download della mappa
    Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM. 
     
    Download manuale
    Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.
     

     
     
    Download da GIS2BIM
    Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

    Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 
     
    Estrazione dei dati dal file .osm
    Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

    Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili
     
    Creazione dei solidi
    Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.
     
    Definizione dell'altezza degli edifici
    Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

    La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.
     
    Sottrazione dei vuoti

    Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.
     
    Creazione delle masse
    Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).
     
     
    Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.
  14. Like
    Daniele Marelli reacted to ferruccio della schiava in Confronto CPU per Revit   
    Dopo anni di onorato servizio è arrivarta l'ora di aggiornare la workstation, ottima occasione per aggiornarsi su quanto offre attualmente il mercato delle CPU.
    Case, RAM e scheda video sono abbastanza sogettivi. Personalmente con 24 GB di RAM mi sono sempre trovato bene in differenti situazioni. Per la scheda video ritengo le Quadro sovrastimate in generale, quindi punterò su una 1060 da 6GB, al limite una 1070 Ti. Rimane da scegliere il processore che di conseguenza porterà alla scelta della scheda madre che so già essere una ASUS, per affidabilità data da esperienza personale.
    Non essendo un tecnico ma un appassionato mi sono diretto su google per fare ricerche, soprattutto sui nuovi processori AMD Ryzen così performanti dal lato prezzo/prestazioni. Premetto che non ho pregiudizi di marca o modello e per me uno vale l'altro, vorrei solo un prodotto duraturo, solido che non mi dia problemi e costruire una macchina che sia facilmente upgradabile in futuro, mantenendo la stessa scheda madre.
     
    Una premessa. Qui parliamo di Revit e su questo baso la mia scelta primaria, sulla velocità di gestione files e sulla velocità in viewport, la componente render, anche se marginale, è comunque tenuta in considerazione.
    Ho stillato un elenco guida al quale mi vorrei attenere:
    Più Core o Clock? Revit non è in grado di utilizzare più di una manciata di core. La frequenza invece offre le migliori prestazioni complessive per le attività di modellazione generale. Il rendering, tuttavia, può vedere guadagni di prestazioni con una CPU con numero di core maggiore.
    Quadro o GeForce? Le quadro sono certificate da Autodesk ma non ho trovato test che rilevassero differenze in termini prestazionali. Se non a svantaggio delle Quadro di fascia bassa rispetto alle equivalenti GTX.
    Quanta RAM? Come ho detto con 24 GB mi sono sempre trovato bene, punterei a 32 GB, in modo da averne abbastanza per altre applicazioni da eseguire contemporaneamente.
    Overclock? No. Il guadagno in prestazioni è modesto e preferisco stabilità e durata. Per la dissipazione assolutamente non a liquido.
     
    Cercando in rete ho trovato molti spunti tra i quali questo che è di un rivenditore hardware e può essere interessante.
     https://www.pugetsystems.com/labs/articles/Revit-2018-CPU-Comparison-1002/
    Ma quello che fa veramente la differenza sono le esperienze altrui, se ne avete o se avete una qualche opinione in merito, condividetela.
    Ferruccio.
  15. Like
    Daniele Marelli reacted to ferruccio della schiava in Revit aggiornamento 2018.2   
    Autodesk rilascia l'aggiornamento Revit 2018.2. Con una serie di correzioni, miglioramenti di stabilità e che include anche nuove funzionalità. "Sono le piccole cose che contano" dicono quelli di Autodesk. Vediamo cosa hanno migliorato seguendo i suggerimenti avuto dagli utenti e visionabili al seguente LINK.
    1) Migliorati i controlli del Riquadro di sezione, ora sono più facili da manipolare e evitandoci di selezionare accidentalmente qualcos'altro.
    2) Nel browser di progetto cliccando sul il tasto destro del mouse ci sono due nuovi comandi "Espandi tutto" e "Comprimi tutto".
    3) Rinnovamenti anche nella la finestra di dialogo delle Campiture. Innanzitutto è ridimensionabile, i tipi di motivo ora sono sopra e la visualizzazione della campitura, c'è un campo per la ricerca dei modelli, ed è consentita la selezione multipla. Non occorre ricaricare il modello (es. da file *.pat) per modificarne la scala.
    4) Revit ora ricorda l'ultima posizione dalla quale sono state caricare le famiglie.
    Aggiornamenti anche per la sezione MEP, Meccanica e Strutturale.
     
    Sul canale Autodesk di youtube ci sono già alcuni video esplicativi.
     
     
  16. Like
    Daniele Marelli got a reaction from ferruccio della schiava in Creare grafici con Mandrill   
    Una delle grandi differenze tra il BIM e la semplice modellazione 3D è la I di informazioni, molto spesso sottovalutata. Iniziamo subito con una distinzione, come ci ricorda la PAS-1192-2:2013:
    Dati: informazioni conservate ma non ancora interpretate o analizzate.
    Informazioni: rappresentazione dei dati in una maniera formale adatta alla comunicazione, interpretazione o alla lavorazione da parte di esseri umani o computer.
    Revit, per sua natura, è ottimo nella gestione dei dati e delle informazioni che ne derivano ma lascia a desiderare quando si tratta di rappresentarli, soprattutto nei grafici. Certo, potremmo esportare le tabelle in Excel e creare tutti i grafici che vogliamo da li. Se però vogliamo creare qualcosa di più del solito grafico a torta e per giunta senza uscire da Revit c'è un'altra strada.
     

    Qualcosa da non fare.
     
    D3.js e Mandrill
    D3.js è una libreria per JavaScript (un linguaggio di programmazione) per la manipolazione dei dati. Qui potete vedere alcuni fantastici esempi di grafici che è possibile creare: https://github.com/d3/d3/wiki/Gallery 
    Mandrill è la sua implementazione in Dynamo.
    Alcune informazioni su Mandrill: qui https://konradsobon.gitbooks.io/mandrill-primer/content/charts_main.html trovate un elenco dei grafici disponibili, a cui potete aggiungerne infiniti personalizzati se sapete programmare. I grafici una volta creati possono essere visualizzati in una finestra di Dynamo, nel vostro Browser o stampati in un file pdf (nei primi due casi sono perfino interattivi!).
    Andiamo al sodo e vediamo un esempio pratico. 
     
     
    Installare Mandrill
    Aprite Dynamo, andate in Pacchetti > Cerca pacchetto... e inserite "Mandrill" nella barra di ricerca. Premete su Installa. 
     
     
    Estrarre i dati da Revit
    Eccoci alla parte più complicata, estrarre ed organizzare i dati da Revit. Per prima cosa fissiamoci bene il nostro obiettivo: cosa vogliamo rappresentare e qual è il miglior modo di farlo? Decidiamo per esempio che in un progetto di una scuola vogliamo mostrare la superficie utilizzata da ciascuna categoria di locali. Scegliamo di utilizzare un grafico a ciambella (Donut Chart). 
    Nel nostro caso la categoria di ciascun locale è data dal parametro "Locali D.M. 18/07/1975". La prima cosa da fare è andare sul manuale di Mandrill, alla pagina del grafico a ciambella per vedere il formato dei dati da utilizzare, che sarà:
     
    name, value Sample 1,100 Sample 2,1000 Sample 3,800 Sample 4,400 Sample 5,200
    Dovremo quindi fornire due liste, una con i nomi delle categorie e una con i valori delle superfici.
    Iniziamo a estrarre tutti i locali dal nostro progetto e a riordinarli in liste a seconda della loro categoria, usando il nodo List.GroupByKey. 

    L'output saranno due liste: la prima, groups, con le istanze dei locali raggruppati per categoria, l'altro, unique keys, è un elenco dei nomi delle categorie (proprio come richiesto dal grafico a ciambella).
    Occupiamoci ora delle aree, estraiamole da ciascuna istanza, sommiamole e arrotondiamo a numero intero. Diamo poi tutto in pasto a DonutChart.Data.

     
    Creazione del grafico
    Per creare il grafico ci basterà usare il nodo DonutChart.Chart, a cui collegare DonutChart.Data (già creato) e il nodo DonutChart.Style. Per quanto riguarda quest'ultimo può anche essere usato così com'è di default, senza collegare niente. Nel mio caso ho dovuto modificare larghezza e margini per via della dimensione eccessiva dei nomi delle categorie.

    Il nodo CreateReport ci permette di impaginare il nostro grafico. È possibile impaginare anche più grafici con uno solo di questi nodi. Report Window aprirà una finestra come quella mostrata sotto, con all'interno il nostro grafico interattivo.

     
    Stampare in PDF
    Per stampare in PDF vi basterà utilizzare lo schema di nodi illustrato sotto, specificando il percorso del file da creare. Potete anche esportare il grafico in HTML e inserirlo su un sito Web.

  17. Thanks
    Daniele Marelli got a reaction from Francesco La Trofa in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
  18. Thanks
    Daniele Marelli got a reaction from Francesco La Trofa in Creare grafici con Mandrill   
    Una delle grandi differenze tra il BIM e la semplice modellazione 3D è la I di informazioni, molto spesso sottovalutata. Iniziamo subito con una distinzione, come ci ricorda la PAS-1192-2:2013:
    Dati: informazioni conservate ma non ancora interpretate o analizzate.
    Informazioni: rappresentazione dei dati in una maniera formale adatta alla comunicazione, interpretazione o alla lavorazione da parte di esseri umani o computer.
    Revit, per sua natura, è ottimo nella gestione dei dati e delle informazioni che ne derivano ma lascia a desiderare quando si tratta di rappresentarli, soprattutto nei grafici. Certo, potremmo esportare le tabelle in Excel e creare tutti i grafici che vogliamo da li. Se però vogliamo creare qualcosa di più del solito grafico a torta e per giunta senza uscire da Revit c'è un'altra strada.
     

    Qualcosa da non fare.
     
    D3.js e Mandrill
    D3.js è una libreria per JavaScript (un linguaggio di programmazione) per la manipolazione dei dati. Qui potete vedere alcuni fantastici esempi di grafici che è possibile creare: https://github.com/d3/d3/wiki/Gallery 
    Mandrill è la sua implementazione in Dynamo.
    Alcune informazioni su Mandrill: qui https://konradsobon.gitbooks.io/mandrill-primer/content/charts_main.html trovate un elenco dei grafici disponibili, a cui potete aggiungerne infiniti personalizzati se sapete programmare. I grafici una volta creati possono essere visualizzati in una finestra di Dynamo, nel vostro Browser o stampati in un file pdf (nei primi due casi sono perfino interattivi!).
    Andiamo al sodo e vediamo un esempio pratico. 
     
     
    Installare Mandrill
    Aprite Dynamo, andate in Pacchetti > Cerca pacchetto... e inserite "Mandrill" nella barra di ricerca. Premete su Installa. 
     
     
    Estrarre i dati da Revit
    Eccoci alla parte più complicata, estrarre ed organizzare i dati da Revit. Per prima cosa fissiamoci bene il nostro obiettivo: cosa vogliamo rappresentare e qual è il miglior modo di farlo? Decidiamo per esempio che in un progetto di una scuola vogliamo mostrare la superficie utilizzata da ciascuna categoria di locali. Scegliamo di utilizzare un grafico a ciambella (Donut Chart). 
    Nel nostro caso la categoria di ciascun locale è data dal parametro "Locali D.M. 18/07/1975". La prima cosa da fare è andare sul manuale di Mandrill, alla pagina del grafico a ciambella per vedere il formato dei dati da utilizzare, che sarà:
     
    name, value Sample 1,100 Sample 2,1000 Sample 3,800 Sample 4,400 Sample 5,200
    Dovremo quindi fornire due liste, una con i nomi delle categorie e una con i valori delle superfici.
    Iniziamo a estrarre tutti i locali dal nostro progetto e a riordinarli in liste a seconda della loro categoria, usando il nodo List.GroupByKey. 

    L'output saranno due liste: la prima, groups, con le istanze dei locali raggruppati per categoria, l'altro, unique keys, è un elenco dei nomi delle categorie (proprio come richiesto dal grafico a ciambella).
    Occupiamoci ora delle aree, estraiamole da ciascuna istanza, sommiamole e arrotondiamo a numero intero. Diamo poi tutto in pasto a DonutChart.Data.

     
    Creazione del grafico
    Per creare il grafico ci basterà usare il nodo DonutChart.Chart, a cui collegare DonutChart.Data (già creato) e il nodo DonutChart.Style. Per quanto riguarda quest'ultimo può anche essere usato così com'è di default, senza collegare niente. Nel mio caso ho dovuto modificare larghezza e margini per via della dimensione eccessiva dei nomi delle categorie.

    Il nodo CreateReport ci permette di impaginare il nostro grafico. È possibile impaginare anche più grafici con uno solo di questi nodi. Report Window aprirà una finestra come quella mostrata sotto, con all'interno il nostro grafico interattivo.

     
    Stampare in PDF
    Per stampare in PDF vi basterà utilizzare lo schema di nodi illustrato sotto, specificando il percorso del file da creare. Potete anche esportare il grafico in HTML e inserirlo su un sito Web.

  19. Thanks
    Daniele Marelli got a reaction from piron88 in Creare grafici con Mandrill   
    Una delle grandi differenze tra il BIM e la semplice modellazione 3D è la I di informazioni, molto spesso sottovalutata. Iniziamo subito con una distinzione, come ci ricorda la PAS-1192-2:2013:
    Dati: informazioni conservate ma non ancora interpretate o analizzate.
    Informazioni: rappresentazione dei dati in una maniera formale adatta alla comunicazione, interpretazione o alla lavorazione da parte di esseri umani o computer.
    Revit, per sua natura, è ottimo nella gestione dei dati e delle informazioni che ne derivano ma lascia a desiderare quando si tratta di rappresentarli, soprattutto nei grafici. Certo, potremmo esportare le tabelle in Excel e creare tutti i grafici che vogliamo da li. Se però vogliamo creare qualcosa di più del solito grafico a torta e per giunta senza uscire da Revit c'è un'altra strada.
     

    Qualcosa da non fare.
     
    D3.js e Mandrill
    D3.js è una libreria per JavaScript (un linguaggio di programmazione) per la manipolazione dei dati. Qui potete vedere alcuni fantastici esempi di grafici che è possibile creare: https://github.com/d3/d3/wiki/Gallery 
    Mandrill è la sua implementazione in Dynamo.
    Alcune informazioni su Mandrill: qui https://konradsobon.gitbooks.io/mandrill-primer/content/charts_main.html trovate un elenco dei grafici disponibili, a cui potete aggiungerne infiniti personalizzati se sapete programmare. I grafici una volta creati possono essere visualizzati in una finestra di Dynamo, nel vostro Browser o stampati in un file pdf (nei primi due casi sono perfino interattivi!).
    Andiamo al sodo e vediamo un esempio pratico. 
     
     
    Installare Mandrill
    Aprite Dynamo, andate in Pacchetti > Cerca pacchetto... e inserite "Mandrill" nella barra di ricerca. Premete su Installa. 
     
     
    Estrarre i dati da Revit
    Eccoci alla parte più complicata, estrarre ed organizzare i dati da Revit. Per prima cosa fissiamoci bene il nostro obiettivo: cosa vogliamo rappresentare e qual è il miglior modo di farlo? Decidiamo per esempio che in un progetto di una scuola vogliamo mostrare la superficie utilizzata da ciascuna categoria di locali. Scegliamo di utilizzare un grafico a ciambella (Donut Chart). 
    Nel nostro caso la categoria di ciascun locale è data dal parametro "Locali D.M. 18/07/1975". La prima cosa da fare è andare sul manuale di Mandrill, alla pagina del grafico a ciambella per vedere il formato dei dati da utilizzare, che sarà:
     
    name, value Sample 1,100 Sample 2,1000 Sample 3,800 Sample 4,400 Sample 5,200
    Dovremo quindi fornire due liste, una con i nomi delle categorie e una con i valori delle superfici.
    Iniziamo a estrarre tutti i locali dal nostro progetto e a riordinarli in liste a seconda della loro categoria, usando il nodo List.GroupByKey. 

    L'output saranno due liste: la prima, groups, con le istanze dei locali raggruppati per categoria, l'altro, unique keys, è un elenco dei nomi delle categorie (proprio come richiesto dal grafico a ciambella).
    Occupiamoci ora delle aree, estraiamole da ciascuna istanza, sommiamole e arrotondiamo a numero intero. Diamo poi tutto in pasto a DonutChart.Data.

     
    Creazione del grafico
    Per creare il grafico ci basterà usare il nodo DonutChart.Chart, a cui collegare DonutChart.Data (già creato) e il nodo DonutChart.Style. Per quanto riguarda quest'ultimo può anche essere usato così com'è di default, senza collegare niente. Nel mio caso ho dovuto modificare larghezza e margini per via della dimensione eccessiva dei nomi delle categorie.

    Il nodo CreateReport ci permette di impaginare il nostro grafico. È possibile impaginare anche più grafici con uno solo di questi nodi. Report Window aprirà una finestra come quella mostrata sotto, con all'interno il nostro grafico interattivo.

     
    Stampare in PDF
    Per stampare in PDF vi basterà utilizzare lo schema di nodi illustrato sotto, specificando il percorso del file da creare. Potete anche esportare il grafico in HTML e inserirlo su un sito Web.

  20. Like
    Daniele Marelli got a reaction from D@ve in Creare grafici con Mandrill   
    Una delle grandi differenze tra il BIM e la semplice modellazione 3D è la I di informazioni, molto spesso sottovalutata. Iniziamo subito con una distinzione, come ci ricorda la PAS-1192-2:2013:
    Dati: informazioni conservate ma non ancora interpretate o analizzate.
    Informazioni: rappresentazione dei dati in una maniera formale adatta alla comunicazione, interpretazione o alla lavorazione da parte di esseri umani o computer.
    Revit, per sua natura, è ottimo nella gestione dei dati e delle informazioni che ne derivano ma lascia a desiderare quando si tratta di rappresentarli, soprattutto nei grafici. Certo, potremmo esportare le tabelle in Excel e creare tutti i grafici che vogliamo da li. Se però vogliamo creare qualcosa di più del solito grafico a torta e per giunta senza uscire da Revit c'è un'altra strada.
     

    Qualcosa da non fare.
     
    D3.js e Mandrill
    D3.js è una libreria per JavaScript (un linguaggio di programmazione) per la manipolazione dei dati. Qui potete vedere alcuni fantastici esempi di grafici che è possibile creare: https://github.com/d3/d3/wiki/Gallery 
    Mandrill è la sua implementazione in Dynamo.
    Alcune informazioni su Mandrill: qui https://konradsobon.gitbooks.io/mandrill-primer/content/charts_main.html trovate un elenco dei grafici disponibili, a cui potete aggiungerne infiniti personalizzati se sapete programmare. I grafici una volta creati possono essere visualizzati in una finestra di Dynamo, nel vostro Browser o stampati in un file pdf (nei primi due casi sono perfino interattivi!).
    Andiamo al sodo e vediamo un esempio pratico. 
     
     
    Installare Mandrill
    Aprite Dynamo, andate in Pacchetti > Cerca pacchetto... e inserite "Mandrill" nella barra di ricerca. Premete su Installa. 
     
     
    Estrarre i dati da Revit
    Eccoci alla parte più complicata, estrarre ed organizzare i dati da Revit. Per prima cosa fissiamoci bene il nostro obiettivo: cosa vogliamo rappresentare e qual è il miglior modo di farlo? Decidiamo per esempio che in un progetto di una scuola vogliamo mostrare la superficie utilizzata da ciascuna categoria di locali. Scegliamo di utilizzare un grafico a ciambella (Donut Chart). 
    Nel nostro caso la categoria di ciascun locale è data dal parametro "Locali D.M. 18/07/1975". La prima cosa da fare è andare sul manuale di Mandrill, alla pagina del grafico a ciambella per vedere il formato dei dati da utilizzare, che sarà:
     
    name, value Sample 1,100 Sample 2,1000 Sample 3,800 Sample 4,400 Sample 5,200
    Dovremo quindi fornire due liste, una con i nomi delle categorie e una con i valori delle superfici.
    Iniziamo a estrarre tutti i locali dal nostro progetto e a riordinarli in liste a seconda della loro categoria, usando il nodo List.GroupByKey. 

    L'output saranno due liste: la prima, groups, con le istanze dei locali raggruppati per categoria, l'altro, unique keys, è un elenco dei nomi delle categorie (proprio come richiesto dal grafico a ciambella).
    Occupiamoci ora delle aree, estraiamole da ciascuna istanza, sommiamole e arrotondiamo a numero intero. Diamo poi tutto in pasto a DonutChart.Data.

     
    Creazione del grafico
    Per creare il grafico ci basterà usare il nodo DonutChart.Chart, a cui collegare DonutChart.Data (già creato) e il nodo DonutChart.Style. Per quanto riguarda quest'ultimo può anche essere usato così com'è di default, senza collegare niente. Nel mio caso ho dovuto modificare larghezza e margini per via della dimensione eccessiva dei nomi delle categorie.

    Il nodo CreateReport ci permette di impaginare il nostro grafico. È possibile impaginare anche più grafici con uno solo di questi nodi. Report Window aprirà una finestra come quella mostrata sotto, con all'interno il nostro grafico interattivo.

     
    Stampare in PDF
    Per stampare in PDF vi basterà utilizzare lo schema di nodi illustrato sotto, specificando il percorso del file da creare. Potete anche esportare il grafico in HTML e inserirlo su un sito Web.

  21. Like
    Daniele Marelli got a reaction from falcon76 in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
  22. Thanks
    Daniele Marelli got a reaction from piron88 in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
  23. Like
    Daniele Marelli got a reaction from ferruccio della schiava in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
  24. Thanks
    Daniele Marelli got a reaction from D@ve in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
  25. Like
    Daniele Marelli got a reaction from franco351 in Dynamo - Concetti base   
    Dynamo è una piattaforma di programmazione visuale open source per progettisti.

    Prima di iniziare a dare definizioni e spiegazioni vorrei soffermarmi su una caratteristica di Dynamo, l'essere open source. Questo non vuol dire solo gratuito, ma anche la possibilità di studiare, sviluppare e creare versioni alternative a quella ufficiale. Continuando a parlare di software libero, anche la sua guida ufficiale, il Dynamo Primer, è open source e da la possibilità di creare le proprie versioni o collaborare a quella ufficiale. Citando il sito di Dynamo, il Primer è "una risorsa introduttiva per principianti e un riferimento a lungo termine. Una spiegazione strutturata di ogni cosa, dalla gestione dei dati alla geometria computazionale e la collaborazione con Revit". Il Dynamo Primer è disponibile a questo indirizzo: http://dynamoprimer.com/en/ in inglese, tedesco, giapponese e taiwanese. Una buona notizia per quelli che preferiscono studiare argomenti come questi in italiano piuttosto che in inglese (o in taiwanese): qualche anno fa avevo iniziato a tradurre il Primer, purtroppo abbandonando il progetto per mancanza di tempo, ma traducendo comunque i primi quattro capitoli, sufficienti a dare un'introduzione generale ed a capire di cosa stiamo parlando. Lo potete trovare qui: https://github.com/Mareck1996/DynamoPrimer/tree/master/it Non ha la formattazione della guida ufficiale, ma dovrebbe essere comunque fruibile. cercate nelle singole cartelle e aprite i file .md per trovare la pagina che vi interessa. Vi consiglio di seguirlo in simultanea con la guida in inglese per avere un riferimento nella formattazione del testo. 
     
    Riporto qua sotto la sezione 1.1 - "Cosa è la programmazione visuale?". Alla fine trovate un'altra piccola spiegazione di alcuni termini utili.
     
     
    Cosa è la programmazione visuale?
    Progettare spesso richiede stabilire relazioni visive, sistemiche o geometriche tra le parti di un progetto. La maggior parte delle volte, queste relazioni sono sviluppate dal flusso di lavoro, che ci porta dal concept al risultato seguendo delle regole. Forse senza saperlo, noi lavoriamo algoritmicamente - definendo un serie di azioni passo dopo passo che segue una logica base di input, elaborazione e output. Programmare ci permette di continuare a lavorare in questo modo ma formalizzando il nostro algoritmo.
     
    Algoritmi in concreto
    Sebbene offra delle potenti opportunità, il termine Algoritmo può portare a dei fraintendimenti. Gli algoritmi possono generare risultati inaspettati, imprevedibili o fantastici, ma non sono magici. Infatti sono abbastanza semplici di per sé. Usiamo un esempio concreto come l'origami di una gru. Iniziamo con un pezzo di carta quadrato (input), seguiamo una serie di ripiegamenti (elaborazione), ed il risultato è una gru (output).
     

     
    Quindi dov'è l'algoritmo? È la serie astratta di azioni, che possiamo rappresentare in due modi - testualmente o graficamente.
     
    Istruzioni testuali:
    Inizia con un pezzo di carta quadrato, con una faccia colorata. Piegalo a metà e aprilo. Poi piegalo a metà, nell'altra direzione. Gira verso l'alto il lato bianco. Piega il foglio a metà, premi bene e apri. Piega ancora nell'altra direzione. Usando le pieghe che hai fatto, porta i tre angoli del modellino in alto sotto, all'angolo in basso. Appiattisci il modellino. Piega i lembi esterni verso il centro e riaprili. Piega la parte superiore del modellino verso il basso, piega bene e riapri. Apri il lembo inferiore del modello, portandolo verso l'alto e premendo i lati del modellino verso l'interno allo stesso tempo. Appiattisci, piegando bene. Capovolgi il modellino e ripeti i passi 4-6 sull'altro lato. Piaga i lembi superiori nel centro. Ripeti sull'altro lato. Piega entrambe le “gambe” del modellimo verso l'alto, piega molto bene, poi riapri. Ribalta verso l'interno e piega le “gambe” lungo le pieghe che hai appena fatto. Ribalta verso l'interno e piega un lato per fare la testa, poi piega verso il basso le ali. Ora hai una gru.  
    Istruzioni grafiche:
     

     
    Programmazione - Definizione
    Usando una qualunque di queste due serie di istruzioni dovresti ottenere una gru, e se hai seguito il procedimento tu stesso, hai applicato un algoritmo. La sola differenza è il metodo con cui leggiamo la formalizzazione di quella serie di istruzioni e questo ci porta al concetto di Programmazione. La programmazione è l'atto di formalizzare il processo di una serie di azioni in un programma eseguibile. Se trasformiamo le istruzioni scritte sopra per creare un origami in un formato che il nostro computer può leggere ed eseguire, stiamo programmando.
    La chiave ed il primo ostacolo che incontreremo nel capire la programmazione è che dovremo affidarci a una qualche forma di astrazione per comunicare efficacemente con il nostro computer. Questa può essere uno qualunque dei numerosi linguaggi di programmazione, come Javascript, Python o C. Se riusciamo a scrivere una serie di istruzioni ripetibili, come per l'origami della gru, ciò che dobbiamo fare è tradurla per il computer. Siamo sulla buona strada per rendere il computer capace di realizzare una gru, o perfino una moltitudine di gru diverse, con leggere differenze tra una e l'altra. Questo è la potenza della programmazione - il computer eseguirà ripetutamente qualsiasi compito, o serie di compiti, gli assegneremo, senza ritardi e senza errori umani.
     
    Programmazione visuale - Definizione
    Se fossi incaricato di scrivere le istruzioni per piegare l'origami della gru, come ti comporteresti? Useresti la grafica, il testo o una combinazione di entrambi?
    Se la tua risposta contiene la grafica, la Programmazione visuale fa senz'altro per te. Il processo è essenzialmente il medesimo sia per la programmazione che per la programmazione visuale. Utilizzano la stessa struttura e formalizzazione; ciò nonostante, definiamo le istruzioni e le relazioni del nostro programma tramite un'interfaccia utente grafica (o "visuale"). Invece di digitare le istruzioni testuali in una sintassi, ci basterà connettere dei nodi preconfezionati tra loro. Ecco un confronto dello stesso algoritmo - "disegna un cerchio sulla base di un punto" - programmato con i nodi e con il codice:
     
    Programma visuale:

     
    Programma testuale:
    myPoint = Point.ByCoordinates(0.0,0.0,0.0); x = 5.6; y = 11.5; attractorPoint = Point.ByCoordinates(x,y,0.0); dist = myPoint.DistanceTo(attractorPoint); myCircle = Circle.ByCenterPointRadius(myPoint,dist);  
    Il risultato dei nostri algoritmi:
     

     
    La caratteristica visiva della programmazione, in questo modo, riduce le barriere per la comprensione dell'algoritmo e spesso è più apprezzata dai progettisti. Dynamo ricade nel paradigma della programmazione visuale ma, come vedremo più avanti, possiamo anche utilizzare la programmazione testuale.
     
     
     
    Vorrei aggiungere infine qualche altra definizione che potrebbe essere utile usando Dynamo e non solo.
    API - Acronimo di Application Programming Interface (in italiano interfaccia di programmazione di un'applicazione), è l'insieme di procedure che un determinato programma mette a disposizione degli sviluppatori. Ad esempio, se un normale utente di Revit per creare una parete deve cliccare sull'icona "Muro" e cliccare ancora per dare un punto di inizio e fine, uno sviluppatore ha a disposizione un comando del tipo: 
    Wall.Create(Curve curve, WallType type) da inserire nel suo codice per creare all'istante una o cento pareti.
    DesignScript - Il linguaggio di programmazione sviluppato da Autodesk, alla base di Dynamo.
    Python - È un linguaggio di programmazione orientato ad oggetti, si può utilizzare in Dynamo per creare nodi personalizzati, creare estensioni per Revit (collegandosi all'API di Revit), data analysis, e molto molto altro. Ha una sintassi semplice rispetto ad altri linguaggi del suo livello. Vi farà risparmiare più tempo di quello impiegato per impararlo.
    Programmazione orientata agli oggetti (OOP) - Prima della programmazione orientata ad oggetti veniva usata la programmazione procedurale, i programmi erano una serie di comandi lineare. L'OOP ha introdotto il concetto di "oggetti", a cui è possibile  assegnare valori, regole, funzioni. Per fare un esempio un muro in Revit è un oggetto, con le sue regole, a cui è possibile assegnare parametri e valori. "Il BIM implica la rappresentazione di un progetto come combinazione di "oggetti" - vaghi e non definiti" (Chuck Eastman - "What is BIM?").
     
    Per qualsiasi altro dubbio o curiosità potete consultare il Dynamo Primer linkato sopra, o scrivere qua sotto.
×
×
  • Create New...
Aspetta! x