Testing Rhynamo

We are testing Rhynamo, a great beta tool for Dynamo, developed by Case. In particular, we focused on the importing nodes, that allow you to import elements from Rhinoceros to Dynamo.
Importing nodes: Breps, Nurbs Curves, Points, Polylines, Mesh, Arcs, Lines, Polycurves, NurbSurfaces, Curves, Circles.

We used each of these nodes and most of the time it worked very well with simple Rhino objects made ​​by us.


Here is a list of some of the successes:

SUCCESS:

Extruded curve:

Curve Type: open NURBS
Curve degree: 3
Rhynamo nodes:
 

 

 

Trimmed Surface:

Curve Type: open NURBS
Curve degree: 3
Rhynamo node:

 

Pimitive Box:
Polysurface
Rhynamo node:

Rhynamo import 0.jpg 

Extruded solid:

Polysurface
Rhynamo nodes:
_failed 
_Success

 

EAU Pavillon - Milan Expo 2015:

Finally we also tried to import a model of the GRC panels of the UAE pavillon of Expo 2015 by Foster and Partners, but the import failed.

Description of the process:

We had to make a Revit  BIM model of the GRC panels and to link it in the structural model. For this purpose we received the final Rhino model of the panels, in wich all the panels were polysurfaces separated each other, but it was impossible to receive the source geometry. So it was more difficult to repeat the generative process of the panels in Revit.


Image: model of the panels in Rhinoceros

At first we tried to import the panels in Dynamo through the Rhynamo nodes. We aimed to import the geometry and then to extract the panel vertices through Dynamo and apply adaptive panels to these points,  but in this case Rhynamo unexpectedly didn’t work. We tried using various importing nodes and also isolating geometries, but still didn't work.

 

Images: model of the panels in Rhinoceros

So in order to have a first fast model we imported the .sat file in a mass family and modeled the panels as walls by face.


Image: first Revit model, walls by face

In a second step we modeled the source geometries of the walls as masses and subdivided it with perpendicular plans generated in Dynamo, and then we applied six points panels for single curved panels and nine points panels for double curved ones, and then we cut the panels for passages and floors.

 
Images: portion of a wall (mass family), six points adaptive panel


Image: panels cut for passages and floors

This final model was fine and the panels were schedulable, but we had long working to check the correspondence between the two models and to adjust the exceptions.


Image: final Revit model

We are still trying to understand why Rhynamo didn’t work. In fact we tihink the workflow could be faster and more precise with it.

Mar, 21/10/2014 - 19:35
Dynamo: pensilina a sezione variabile

Dopo aver sperimentato con i curtain wall, sto continuando ad utilizzare Dynamo per creare relazioni tra parametri di istanza degli elementi caricati nel progetto.
Si tratta di uno dei modi più semplici per realizzare geometrie complesse nello spazio di progetto di Revit. 
Un altro metodo, forse più versatile, consiste nell’utilizzare Dynamo per controllare i punti delle famiglie adattive.

Il metodo delle famiglie adattive è caratterizzato da una corrispondenza visiva tra lo spazio di Dynamo e quello di Revit e quindi c’è un controllo geometrico della modellazione. Mentre nel metodo dei parametri di istanza c’è per necessità un approccio esclusivamente matematico alla modellazione e spesso anche un effetto a sorpresa finale.

Variazione di elementi posti lungo una curva:
una delle variazioni possibili, ottenibili con questo metodo è la ripetizione lungo una curva di elementi a sezione variabile.

Prima prova con un semplice pannello triangolare:
1: modellazione della famiglia, in cui la posizione del vertice è variabile con parametri di istanza.

2.Creazione di una curva su 3 punti: la posizione del puntocentrale lungo l’asse y è variabile con un double slider.

3. Suddivisione della curva in punti:

4. Utilizzando il nodo FamilyInstance.ByPoint, creo automaticamente un pannello posizionato su ognuno dei punti creati.

5. Modifico uno dei due parametri per ogni elemento della lista di elementi creati. In questo caso creo una successione numerica lineare, compresa tra 19 e x (modificabile con lo slider). E ripeto la stessa cosa con l’altro parametro.

Ecco un po’ di risultati:

Seconda prova: modellazione di una pensilina.
Ho utilizzato lo stesso tool creato per il pannello triangolare, per modellare una pensilina, la cui sezione è costituita da tre aste incernierate tra di loro e con il punto esterno a coordinate variabili.

In questo caso ho variato il parametro con funzioni di secondo grado:

Ecco un paio di variazioni:


Mar, 21/10/2014 - 19:30
Generare funzioni

Generiamo con dynamo una curva da una sequenza di punti ricordando che per definire un punto nello spazio abbiamo bisogno di 3 coordinate x,y,z. Cominciamo con il generare una sequenza di valori quindi ricerchiamo i nodi come compaiono in immagine.

Number sequence consente appunto di generare una lista di valori, richiede un valore dal quale cominciare, la quantità di valori richiesta e il loro passo.Questi appena generati saranno i valori che assumerà la nostra varibile della funzione parametrica che necessita quindi di valori x,y,z.

 

 

 

 

 

 

punti xyz.PNGPrendiamo i nodi formula che saranno le nostre funzioni generanti ognuna una lista di punti: cos(x) saranno i punti sull’asse x, sin(x) saranno i punti sull’asse y e per ora lavoriamo in due dimensioni quindi non ci sono valri che si muovono sull’asse z. Vediamo come i punti precedentemente generati vengono sostituiti contemporaneamente alla variabile di due funzioni generando a loro volta due liste differenti.

 

 

 

 

 

 

 

Adesso abbiamo bisogno di convogliare questi valori in un unico sistema di che genererà i punti come coordinate e per fare ciò ci avvaliamo del nodo Point by coordinates e colleghiamo i valori generati dalle funzioni coseno e seno agli input x,y,z. Si vede come i punti seguano l’andamento di una circonferenza e aumentando i valori della quantità di punti e variando il passo riusciamo a modificare la distrubuzione dei  punti.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Se a questo punto inseriamo la variabile x per la coordinata z, i punti si muoveranno anche su quest’asse. Possiamo ora creare la curva definita da queste coordinate utilizzando il nodo Nurbs Curve by Control Points.

Mar, 21/10/2014 - 19:29
Dynamo + Revit: Random Pattern Curtain Wall
Ciao,
Innanzitutto vorrei segnalare qualche link utile:
Hello,
I started experimenting with Dynamo (downloadable from here: http://autodeskvasari.com/dynamo). First let me point out a few useful links:
 
istruzioni e buone pratiche per diventare sviluppatori di Dynamo, come ad esempio le indicazioni su come si crea un nodo. Infatti attraverso il github chiunque può copiare il codice, fare delle modifiche e condividerle, utilizzando i linguaggi C# ed F# in Visual Studio.
instructions and best practices to become Dynamo developers, such as directions on how to create a node. In fact, through the github, anyone can copy the code, make changes, and share it, using C# and F# languages in Visual Studio.

 

https://github.com/DynamoDS/Dynamo/wiki/Learning-Dynamo:
pagina del github dedicata all’apprendimento di Dynamo.
github page dedicated to Dynamo learning.
 
 
 

serie di video tutorial per partire da zero con dynamo. Soprattutto i primi sono molto utili per conoscere l’interfaccia e capire qual è la logica del programma. Ad esempio molte delle cose che in Revit e Vasari spesso usiamo implicitamente, come coordinate cartesiane nello spazio e codici ID degli oggetti, spesso con Dynamo sono più esplicite, essendo i principali strumenti di dialogo tra i due software.

series of video tutorials to start from scratch with dynamo. Especially the former are very useful to know the interface and understand what is the logic of the program. For example, many of the things that we often use implicitly in Revit and Vasari, as Cartesian coordinates in space and objects ID numbers, often with Dynamo are more explicit, being the main instruments of dialogue between the two softwares.
 

 

http://buildz.blogspot.it/:

blog di Zach Kron, uno degli sviluppatori: c’è una lunga serie di post su Dynamo, la maggior parte riguarda la creazione di geometrie complesse.

Zach Kron's blog: there are many posts on Dynamo, most of them concerns the creation of complex geometries.

 

Acosa serve Dynamo?
Dynamo estende le capacità parametriche di Vasari e Revit, consentendo di utilizzare algoritmi anche complessi e soprattutto di stabilire nuovi tipi di relazioni, esplicitate graficamente. Infatti fa parte della famiglia dei software di visual programming, cioè programmazione effettuata manipolando graficamente gli elementi invece che utilizzando il linguaggio scritto, attraverso l’uso di nodi (Nodes) e connessioni (Wires) di input e output.
Dynamo è uno strumento molto flessibile, quindi è difficile elencare tutti i possibili impieghi, è  difficile anche solo immaginarli tutti. Cercando di sintetizzare, queste sono le principali categorie di nodi:
 
Trasformazioni geometriche: sia trasformazioni rigide (disposizione geometrica di componenti ed elementi nello spazio), sia deformazioni di masse e di componenti adattive (architetture con superfici complesse).
Analisi: analisi geometriche complesse (come calcolo dell’area di superfici) e altri tipi di analisi, come studio della radiazione solare. La cosa interessante degli strumenti analitici è che i dati possono essere messi in relazione diretta con i parametri e quindi generare trasformazioni essi stessi, per minimizzare o massimizzare i risultati (ad esempio relazione tra sun path e parametri di componenti ombreggianti: http://www.youtube.com/watch?v=Ek8kTNU0Imw , http://www.youtube.com/watch?v=8U15Q4FqCgw&list=PLk-weHTE00P3m-yK-UlLa_h0rzRdrKmvw).
Input e output: nodi che consentono il dialogo tra Revit e file esterni come ad esempio immagini raster e file excel; tra Revit e tra Revit e Hardware esterni, come Arduino.
What is Dynamo? 
Dynamo extends the parametric capabilities of Revit and Vasari, allowing to use complex algorithms and to establish new types of relationships, explained graphically. It is part of the family of visual programming softwares: programming done graphically manipulating the elements instead of using the written language , through the use of nodes and wires of input and output.
Dynamo is a very flexible tool, so it is difficult to list all possible uses, it is hard even to imagine them all. Trying to summarize, these are the main categories of nodes:
Geometric transformations: both rigid transfomation (geometric arrangement of components and elements in space), and deformation of masses and adaptive components (architectures with complex surfaces).
Analysis: complex geometric analysis (such as calculation of the area of surfaces) and other types of analysis, as the study of the solar radiation. The interesting thing about the analytical tools is that the data can be put in direct relation with the parameters and then generate transformations themselves, to minimize or maximize the results (for example, relationship between sun path and parameters of shading components:http://www.youtube.com/watch? v = Ek8kTNU0Imw, http://www.youtube.com/watch?v=8U15Q4FqCgw&list=PLk-weHTE00P3m-yK-UlLa_h...).
Input and output: nodes that enable dialogue between Revit and external files such as raster images and excel files; between Revit and external hardware such as Arduino.
 

 

Uno degli aspetti che più mi interessano è la possibilità di mettere in relazione e manipolare matematicamente i parametri di istanza delle famiglie direttamente nel progetto. In questa prima sperimentazione ho quindi voluto tentare di ampliare le potenzialità del curtain wall, uno degli strumenti più utili di Revit, ma che spesso si rivela troppo rigido.
One of the most interesting things is the ability to relate and manipulate mathematically the family instance parameters in the Revit project file. In this first experiment, I wanted to expand the potential of the curtain wall, one of the most useful tools in Revit, but often too rigid.
 
 

FACCIATA CONTINUA CON VUOTI CASUALI:

 

 

Ho voluto modellare una facciata continua simile a quella del nuovo teatro dell’opera di Firenze dello studio ABDR, con doghe di laterizio disposte a giunti verticali alternati, ma mancanti di alcuni elementi con una logica casuale.

CURTAIN WALL WITH RANDOM VOIDS
I wanted to model a facade similar to that of the new opera house in Florence, a project by ABDR architects, with slats of bricks arranged in alternating vertical joints, but missing some elements with a random logic.

Per prima cosa ho modellato la famiglia di pannello composta da due doghe sfalsate di un quarto rispetto alla dimensione del pannello, in maniera che si sovrappongano con giunti verticali alternati, ad imitazione della muratura.
First I modeled the family of panel composed of two slats staggered by one-fourth the size of the panel, so that they overlap with alternating vertical joints, in imitation of masonry.

 

 

Poi ho assegnato il parametro di istanza “visibilità 1” alla doga superiore e “visibilità 2” alla doga inferiore.

Then I assigned the instance parameter "visibility 1" to the top slat and "visibility 2" to the slat below.
 

 

Una volta caricato nel progetto il risultato è questo, con le doghe tutte visibili e quindi il rivestimento di facciata pieno:

This is the result, with all the slats visible.

 

A questo punto ho aperto il plug-in Dynamo dal pannello add-in. Per prima cosa ho selezionato tutte le istanze dello stesso tipo con il nodo “get family instances by type”, in questo modo le modifiche successive saranno assegnate a tutte le istanze.

At this point I launched Dynamo from the add-in panel. First I selected all instances of the same type with the node "get instances by family type", so that subsequent changes will be assigned to all instances.

 

Poi ho usato il nodo “Random number list”, ripetuto tante volte quante sono le istanze. In questo modo ho creato una lista di numeri casuali compresi tra 0,00 e 1,00 e, applicando il nodo “round” li ho arrotondati e trasformati in numeri interi, cioè in una serie fatta di numeri 1 oppure 0. 1 e 0 corrispondono a Yes or Not e quindi ho potuto assegnare questi valori al parametro “visibilità 1”, con il nodo “set family instance parameter” (notare come questo nodo e anche gran parte degli altri nodi può essere assegnato sia ad un singolo oggetto sia ad una lista di oggetti, come in Grasshopper).

Then I used the node "Random number list", repeated as many times as the number of instances. In this way I created a list of random numbers between 0.00 and 1.00 and, then using the node "round", I've rounded and converted these numbers into integers, creating a series of numbers 1 or 0. 1 and 0 are equal to Yes and Not, and then I was able to assign these values ​​to the parameter "visibility 1" using the node "set instance parameter family" (note that this node and also most of the other nodes can be assigned both to a single object or to a list of objects, such as in Grasshopper).

 

A questo punto, premendo il tasto Run, automaticamente in molti pannelli disposti casualmente sparisce la doga superiore.
Poi ripeto lo stesso procedimento anche per le doghe inferiori.
At this point, pressing the Run button, automatically in several panels the higher slat disappears. Then I do the same for the below slats.
 

 

Pur non conoscendo l’algoritmo che genera i numeri casuali,  posso notare che il numero di pieni e vuoti si equivale, ma non ho ancora modo di agire sul grado di apertura del rivestimento di facciata. Per farlo aggiungo un “number slider” con un dominio compreso tra -0,5 e 0,5 e poi lo sommo alla lista di numeri generati dal “random number list”. in questo modo facendo scorrere lo slider posso decidere di aumentare la quantità di 1 rispetto a 0 e viceversa. Cioè posso decidere di aumentare o diminuire il numero di vuoti.

I can see that the number of full and empty spaces is the same, but I have no way yet to change the amount of voids in the facade. To do so, I used the "number slider" node with a domain between -0.5 and 0.5 and then I added this number to the list of numbers generated by "random number list". In this way by sliding it I can decide to increase the amount of number 1 or number 0. That is, I can decide to increase or decrease the number of voids.
 

Slider quasi al minimo:
Slider almost to a minimum:

 

 

Slider quasi al massimo:

Slider almost to a maximum:

 

 

Questo è il video di tutto il procedimento:
And this is the video tutorial:
 
Mar, 21/10/2014 - 19:27
Dynamo, Visual Scripting for Revit

Ciao,

Ho fatto delle prime piccole sperimentazioni con Dynamo, che vorrei condividere con voi.

Dynamo è un progetto open source sviluppato da Ian Keough ( http://iankeough.com/wordpress/?cat=3 ), ed è tutt’ora in fase di sviluppo. E’ un’interfaccia (nato per project Vasari, ma adesso disponibile anche per Revit), che -  attraverso l’uso di nodi e connessioni - consente di creare relazioni parametriche e di svolgere funzioni. E’ molto simile a Grasshopper per Rhino.

Da qui è possibile scaricare l’ultimissima versione che viene continuamente aggiornata: https://github.com/ikeough/Dynamo

Purtroppo non sono ancora riuscito a installarla, perché, essendo in fase di sviluppo, bisogna convertire alcuni file .cs in .dll (o almeno credo che sia questo il problema).  C’è qualcuno che lo sa fare?

Quindi ho dovuto ripiegare su una versione più vecchia, dove mancano la maggior parte dei nodi, scaricabile da qui:http://wikihelp.autodesk.com/Vasari/enu/Community/Works_in_Progress/Dynamo_for_Vasari/Installation_and_Getting_Started

Un aspetto molto interessante di Dynamo è la sua interfaccia intuitiva in grado di compiere operazioni complesse senza dover ricorrere ai linguaggi di programmazione. E, ancora più importante, grazie alla visualizzazione grafica dei nodi e delle connessioni, è possibile condividere e replicare i lavori di altri anche solo attraverso uno screenshot. Ad esempio è così che si fa la tassellazione di una superficie:

Immagine presa da: http://autodeskvasari.com/forum/topics/watch-3d

Sono stati creati anche dei nodi che ci consentono di mettere in relazione i nostri modelli con Arduino, sia in input che in otput ( http://www.youtube.com/watch?v=IyLq6ZnHzDA ). Sarebbe molto interessante fare qualche prova!

Per lanciare dynamo si deve andare nel pannello Add-Ins e si può utilizzare sia nell’ambiente di progetto, sia nelle famiglie, sia nelle conceptual mass.

Questi sono i miei primissimi passi con Dynamo (sia per la mia inesperienza, sia per il fatto che in questa versione mancano un sacco di nodi, ho potuto fare solo cose molto semplici):

Questo è un array disposto lungo una spline:

 

Quando cambio il numero degli elementi (number) o modifico la spline, basta che poi clicco su RUN e il modello si aggiorna.

 

Qui invece ho disposto automaticamente delle istanze della stessa famiglia su una griglia di punti:

 

Se avessi avuto una versione aggiornata, avrei voluto mettere in relazione -  attraverso una funzione matematica -  il parametro di istanza “altezza” di tutti gli elementi, in maniera che fossero tutti di altezze diverse, ma non casuali.

Mar, 21/10/2014 - 19:18

Pagine