Tu sei qui

modellare forme complesse_camera obscura 3.0

 

Nella nostra ricerca formale sul modello della camera oscura, ci siamo imbattuti nel problema della creazione di un modello parametrico che sia generativo.

Post di Marco Campani e Federica Causarano

 

Il nostro approccio in Revit, anticipato dallo studio analitico della forma geometrica, ci ha permesso di creare un modello con all'interno dei parametri che eravamo in grado di manovrare manualmente per il corretto posizionamento dei pezzi.

Siamo consapevoli che era un modello molto limitato, per i problemi evidenziati nel post precedente ( http://design.rootiers.it/2012/node/1207 ), ma soprattutto era un modello che non era in grado di generare da solo i suoi pezzi, in quanto eravamo costretti a intervenire manualmente laddove trovavamo dei limiti.

Senza demordere, ci siamo chiesti come potesse essere fatto un modello in grado di generare da solo i propri pezzi, variando i parametri generali (altezza, spessore, numero pezzi) e non quelli particolari (spostamento relativo delle basi, lunghezza dell'asta ecc), e siamo sempre più convinti che il modo più corretto sia quello di controllare le distanze delle basi piuttosto che l'asse longitudinale del pezzo.

Partendo da questo, il discorso teorico dell'altro post non cambia... quindi ciò che ci è necessario è un nuovo strumento, che eviti i "limiti" che abbiamo riscontrato in Revit.

Così siamo entrati nel mondo dello scripting, e abbiamo compilato questo codice in Rhinoscript, che essenzialmente utilizza lo stesso procedimento che abbiamo studiato analiticamente per il modello in Revit, ma con meno limitazioni: non abbiamo più problemi, ad esempio, di distanze negative nelle famiglie. Inoltre con l'aggiunta di If/then, il programma decide, a seconda del pezzo che sta disegnando, quale delle due funzioni dell'angolo gamma deve utilizzare.

 

Option Explicit
 
ClearAll
 
Call Main()
Sub Main()
 
 
Dim Sp, Lrg, Alt, Alfa, Ap, Pz
 
Sp=5
Lrg=30
Alt=300
Alfa= pi/6
Ap =150
Pz= Ap*2/Lrg
 
Dim Rg, Ip, dX, dY, Beta, Gamma, Epsilon, n
 
Beta = (pi - Alfa)/2
 
For n=0 To Pz-1
 
          Rg = (Ap^2 + (Ap - n*Lrg)^2)^(1/2)
         Ip = Rg*cos(Beta)*2
 
         If n<((Pz/2)+1) Then
                  Gamma = ASin(Ap/Rg)
         End If
 
         If n>(Pz/2) Then
                  Gamma = ACos(Ap/Rg)+pi/2
         End If
 
         Epsilon = pi - Gamma - Beta
 
         dX = Ip * cos(Epsilon)
         dY = Ip * sin(Epsilon)
 
 
         Rhino.AddBox array(array(n*Lrg+dX,dY,0),      array((n+1)*Lrg+dX,dY,0),     array((n+1)*Lrg+dX,Sp+dY,0),     array(n*Lrg+dX,Sp+dY,0),_
                                           array(n*Lrg,0,Alt),            array((n+1)*Lrg,0,Alt),           array((n+1)*Lrg,Sp,Alt),               array(n*Lrg,Sp,Alt))
 
 
Next
 
End Sub
 
 
Sub ClearAll()
If IsArray (AllObjects) Then deleteObjects(AllObjects)
End Sub
 
 Ed ecco il risultato:
 
 

Il comando Rhino.AddBox di Rhinoscript permette di creare un solido partendo da 8 punti. Il nostro ragionamento era in grado di individuare proprio questi 8 punti, che è bastato inserirli in un ciclo per creare tutti i nostri pezzi!

Il modello paramentrico della nostra parete ora funziona alla perfezione: variando angolo, altezza, dimensione del quadrato di base, larghezza dei pezzi, numero dei pezzi, il modello si aggiorna!

Il nostro approccio con Rhinoscript ci ha fatto capire che in fondo ogni software ha il suo scopo e il suo utilizzo specifico. I problemi che avevamo in Revit non erano dovuti a nostri errori di valutazione ma a limiti del software che ci obbligavano ad intervenire in prima persona, limiti che con Rhinoscript, proprio per la concezione del software stesso, siamo stati in grado di superare.

Continueremo a sperimentare!

Marco e Federica

Commenti

cari ragazzi,

un commento al vostro lavoro in progress:
ottima l'attenzione alla specificità di ogni software,
e alle vostre competenze del momento. E all'arrivare allo
scripting quando serve. Vorrei scriveste di piu su questo tema.

It/then ad esempio c'è anche nei parametri delle famiglie di Revit,
esistono post sull'argomento in rete.  E il tipo di variazione è raggiungibile.
Ma dipende dal contesto e dalle "diverse strade" - E' un ottimo tema da
sviluppare.

Ad ogni modo, ora, come dicevo, passiamo alla production!
apsettiamo pezzi e giunzioni, a che scala realizziamo?

Che considerazioni genererà questo passaggio?

a presto,
S.C.