Introduzione a Grasshopper", il primo manuale su Grasshopper.
.
I corsi PLUG IT nascono dalla volontà di promuovere le nuove tecnologie digitali di supporto alla progettazione e condividere il know-how maturato attraverso ricerca, collaborazione con i più importanti studi di architettura e pubblicazioni internazionali.
.
Verranno introdotte le nozioni base di Grasshopper approfondendo le metodologie della progettazione parametrica e le tecniche di modellazione algoritmica per la generazione di forme complesse. Il corso è rivolto a studenti e professionisti con esperienza minima nella modellazione 3D e si articolerà in lezioni teoriche ed esercitazioni.
. Argomenti trattati:
- Introduzione alla progettazione parametrica: teoria, esempi, casi studio - Grasshopper: concetti base, logica algoritmica, interfaccia grafica - Nozioni fondamentali: componenti, connessioni, data flow
- Funzioni matematiche e logiche, serie, gestione dei dati - Analisi e definizione di curve e superfici
- Definizione di griglie e pattern complessi - Trasformazioni geometriche, paneling - Attrattori, image sampler
- Data tree: gestione di dati complessi - Digital fabrication: teoria ed esempi - Nesting: scomposizione di oggetti tridimensionali in sezioni piane per macchine CNC
.
Verrà rilasciato un attestato finale.
.
Ulteriori info e programma completo su: www.arturotedeschi.com e su www.edizionilepenseur.it…
register, please contact Miss Roula Homsi Tel: 06/218400 ext:4007email: r.homsi@bau.edu.lbTOPICS: Parametric design , Algorithms, Kinetic Architecture, responsive facades, interactive design, smart buildings, generative design, NURBS modeling, parametric modeling, architectural design algorithms, form finding algorithms , and Environmental Adaptive Dynamic ArchitectureComputational skills: Rhino3D – Grasshopper 3d – Paneling tools - Kangaroo plugin - fields grasshopper -Digital Fabrication- Arduino micro controllers - lighting and temperature sensors - Firefly plugin - gHowl – mobile controller - Wi-Fi controllersWORKSHOP PROGRAM: PHASE ONE: Day 01- opening lecture on Algorithmic Added Design - tutorials and introductions to NURBS modeling with Rhino 3d- Parametric modeling tutorials with grasshopper 3d- Grasshopper processes, algorithmic logic and data management-Essential mathematical functions and logical operations- Projects assignments, groups divisions, project phase’s scheduleDay 02 - Form finding methods and theories for architecture - Training on physical algorithms using Kangaroo plugin-Catenary systems on curves, Catenary on surfaces, and mesh relaxation- Algorithms and design inspirations- Subdivision algorithms, paneling tools- Responsive materials, structural optimizations- Project phase one submissionDay 03- Envelope pattern optimizations for natural lighting- Kinetic Architecture introduction and projects examples- Responsive material analysis and design systems- Kinetic facades and dynamic pattern - Training on Arduino & preparing digital models for kinetic simulationPHASE TWODay 04- environmental Sensors, design reaction- lighting sensors, temperature sensors-Responsive envelop responsive simulations to sensors.-Smart and embedded systems for Architecture- Architectural models movements and mechanisms Day 05- Wireless controllers for grasshopper- Mobile controllers - Projects final submissionDay 06 -Finalizing students projects,-Models fabrications and sensors installations, documenting reactions-Final project ourcomesFEES for the 2 phases __ fees is 420 $ per participants( 360 for BAU students) Fees includes all teaching materials, software kit, lectures kit, laser cutting, Arduino microcontroller boards, sensors and using equipment. Students need to bring their own laptops, digital equipment and model making tools.PREREQUESTSThis program is open to current international Engineering, architecture and design students, masters, PhD candidates and young architects and professionals. Software Requirements: basic knowledge of 2D and 3D modeling software.…
ke scripting or such...
This is just my approach...
Basic math: the derivative is a graph where y is the angle of the curve/function at parameter x.
We can interpolate a curve trough all evaluated point (with x=a simple series and y= angle) of the curve.
Is useful to intersect derivative graph with an offset of x axis.
Intersection points will tell us which parameter (X) have the wanted angle (Y).
But here's the problem "I've found"...
Derivative graph limit angles to 0<angle<360...
The interpolate curve point will give out wrong results, obviously.
(this can be solved by "partitioning" or splitting the derivative graph in more
sub-graphs i think, but I don't like that way XD )
To solve that problem I've bent the graph in a cylindrical shape where previous
"error" doesn't happen :D
For a periodic curve a similiar problem would happen when "intersecting" near end-start of the graph curve.
Again to solve this, I've bended again the whole graph!
Toroidal then.
…
te some cut sheets, but not to optmize material, rather define some cut lines. Everything that I am cutting is made of planar wood elements, but there are very specific geometries (mostly straight lines) and I have to put tolerances and radiasas at the corners in order to cut on the cnc mill. Spending time to figure out how to automate is necessary, but I am stuck!
One thing the definition is doing is taking my brep modeled components in rhino and makking them into 2d close curves and laying them side by side. It works...not ideal as its not layed out in a sheet, but that is not the most important part.
Another particular problem is that you will see some notches in the curves, which other pieces will slip into, so different slots need different specific offsets (making them larger) as a toelrance to allow for material play. This I don't even know how to set up so maybe it will just have to wait.
THE MAIN QUESTION, and super important would be, LIFESAVER:
At all 'inward' corners...which I think will always mean concave corners (most are 90 degrees, but are within to sides, instead of a corner sticking out). I'm sure its obviousy, but the reason being the outward corners a circular dril bit can cut, but inward ones need an arc profile extended beyond where the corner of the other piece will fit into. The drill bit i am using is 6mm, so 6mm diamters arcs is what i'm working with.
I have managed to put such an arc at every vertices of each cut piece. The problem being some stick outward isntead of cutting into the piece. So each one needs to be orieneted correctly. Ideally they would also only draw into inward corners, but I can always delete them out. I think maybe I am missing a more logical mathematical way of defining?
For these geometries it is not very important which side the half circle arc in on in the inward corners, but I also have some geometries that I will have to control where the circles face according to the rest of the cut piece.
The cutouts in the middle of the pieces that are curves do not need such corners obviously.
The picture is an example drawn
I hope this isn't too specific and long. in general though automating fabrication, and controling pracitcal math and orientation problems like this is itnersting to me!
THANKS…
nts that I have found helpful and will be included in the next release, but you can try them now. They are online at https://github.com/fequalsf/Crystallon/tree/0972066e468f0a7a592ff4e7e88226028dcb029c/V2.1I have been interested in finding ways to save settings for different iterations of a design which can be baked into a rhino file and used again later. These tools I've made are for working with divisions of a surface.The first tool (Divide Surface) is for dividing a single surface using UV parameters and outputting a quad mesh. Simple enough. What makes this powerful is you can use that mesh with the "Morph Between Meshes" tool to create your voxels. So now you can morph between surfaces with the same number of divisions but with different parameters. The other nice thing about meshes is they are simple to work with and can be further modified with other plugins (such as kangaroo). They can be baked, manually edited in rhino and saved as STL or OBJ files to use again later. I will be updating all the tools eventually to output meshes.
The next tools are for creating those divisions. Any of the components that require a parameter input need a range of values from 0-1. The simplest way to do this is with the "Range" component. The default domain is 0-1 so you only need to give it a number of steps.
To make the range non-linear, there's a few components you can use. Graph mapper is the most common tool, but you could also use the gradient tool.
But these can be difficult to work with and quite limiting. Graph mapper has a limited set of graph types to work with (I tend to use Bezier) and the gradient tool makes a steep curve which cannot change. Also making small changes is difficult and saving a setting for later is not easy.
So the next tool I made is a curve plotter. This takes your range of number (X values) and your remapped numbers (Y values) and plots the points to either a polyline or interpolated curve. This way you can see the curve the gradient is making or bake out a graph mapper curve you want to use later.
The next tool I made is a curve graph mapper, so you can map numbers using any curve drawn on the XY plane. This gives you much more freedom than the graph mapper and is easier to make small adjustments. Then you can always make many iterations of a curve and go back to any of them saved in the rhino file. There are options to view tags with the values on the curve as well as a gradient preview.
If you take a look at the curve created by the gradient tool, you can see it is basically creating a Bezier curve from the handles on the gradient (position is X value, color is Y value). The problem with using it for division parameters is the tangency of the points is always in the X direction creating a nearly horizontal section in the curve. This will give you a series of the same values, which we don't want. The falloff of the curve is also quite steep with no way of adjusting it.
If you make a lot of divisions you will also notice stepping in the curve. This is because the gradient uses RGB colors which is only a range of whole number from 0-255. So you only have a total of 256 values from 0-1.
Yet there is something elegant and user friendly about Bezier curves which makes them nice for creating gradients. So the last tool I made is for creating a Bezier curve from points. All you need to do is input at least 2 points. The second input is the tangent length multiplier (which can be one value for all or one per span of the curve) and the third is the tangent rotation in radians (also either one value or one per span).
The values are shown on the curve and can be baked as text tags if you want to save them and use the same points and values later. Or you can just bake out the curve. This makes for a simple smooth curve that makes a nice gradient.
…
the use of digital technologies as architectural design tools. The workshop " Computer Aided Design: parametric design and digital fabrication " aims to do some introductory teaching in the use of some of these tools.
The workshop will focus on the use of computational models of parametric behavior for generating architectural forms. The generative capacity of these models it will be tested in the development of designs defined by repetitive non-standard components, based on the parametric control of its variations and series differentiations. This process will be developed by the use of a three-dimensional modeling software - Rhinoceros, associated with an application for visual programming - Grasshopper.
The last day of the workshop is dedicated to the use of digital manufacturing tools in architecture. Part of the work will take place at the facilities of the Institute of Design of Guimarães (IDEGUI) providing for the use of their laboratories and manufacturing CNC machines (computer numerically controlled).
At the end of the workshop, it is intended the students to understand that the use of digital technologies in architecture can overcome representational functions, and their integration in the design conception, analysis and construction enriches the methodology of project development.
Terms & Participants
The workshop will take place at the School of Architecture of the University of Minho (Campus Azurém, Guimarães) and the Institute of Design of Guimarães (Couros, Guimarães).
The workshop is pointed at students who attend the 3rd year and 4th year from MiArq, EAUM.
The maximum acceptance is 20 students and a minimum of 10 students.
Deadline for entries is April 11 and must be performed by eaum.pac@gmail.com.
Program summary :
Day 23 April 14 -20h
Introduction to 3D modeling in Rhinoceros. Regular geometries, ruled surfaces and NURBS surfaces.
Day 30 April 14 -20h
Parametric design in architecture. Introduction to methods of visual programming.
May 1, 9 -13h 14 -18h
Development of a design idea by the use visual programming processes in Grasshopper.
May 2, 9 -13h 14 -18h
Introduction to methods of digital fabrication. Manufacture physical models of the proposals made.
It is expected that this meeting will take place in the IDEGUI labs.
team:
Bruno Figueiredo ( Lecturer, EAUM )
Paulo Sousa ( PhD candidate , EAUM )
Nuno Cruz ( Invited Lecturer , EAUM )
Cláudia Alvares ( 5th year MiArq student , EAUM )
Javier Bono ( 4th year MiArq student, EAUM )
João Amaro ( 5th year MiArq student, EAUM )…
next level.
This Parametric Design course will provide the participants with the necessary knowledge and ability to use Grasshopper, a free visual programming plugin in Rhinoceros; you will be guided through a series of hands-on exercises that highlight NURBS modeling and its concepts. We will introduce Grasshopper as a graphical algorithm editor tightly integrated with Rhino’s 3D modeling tools. You will also learn how Rhino is used to render models for visualization, translate 3D models for prototyping, and export 3D models into 2D CAD or graphics programs.
English is the course main language.
Location: Düsseldorf city center
Registration and buying Tickets
www.digitalparametrics.eventbrite.de
Course Calendar:
4 Days 6 hours each
Total duration 24h
2 weekends
Date:
Sat. 17 - Sun. 18 June
Sat. 24 - Sun. 25 June
10:00 - 17:00
Getting Started in Rhino. 2 days (17 - 18 June)
Getting Started in Grasshopper. 2 days (24 - 25 June)
-----------------------------------------------------------------------
Participants will be given a certificate of participation at the end of the course.
-----------------------------------------------------------------------
Course fees:
Professionals: 600€ (excl. MwSt.) Students: 500€ (excl. MwSt.) Students need to provide: Copy of current student ID or proof of student enrollment at University/School.
Group discounts:
Group of 3 professionals: 3x500 = 1500€ (excl. MwSt.)
Group of 3 Students: 3x400 = 1200€ (excl. MwSt.)
Participants are kindly asked to bring their own laptops and have pre-installed Rhino + Grasshopper.
Useful Resources:
Rhinoceros Installation (90 days full version trial available): http://www.rhino3d.com/download
Rhinoceros for Mac (includes Grasshopper) http://www.rhino3d.com/download/rhino-for-mac/5/wip
Grasshopper Free Installation: http://www.grasshopper3d.com/page/download-1
Grasshopper Free Plugins: http://www.food4rhino.com/app/lunchbox http://www.giuliopiacentino.com/weaverbird
Main Tutor:
Rihan
M.A. Dipl.Ing. Architect
Architect at RKW Architektur + Düsseldorf
For any questions about the course, please email: info@immersive-studio.com…
ll geometry.
The difference with programs like Inventor is that they are made for production, regardless of the fabrication method. I won't go into detail about that, and instead focus on the modeling process.
In this little model, the starting point actually is a bit obvious, the foundation.
The only contents in the 3dm file are 27 lines. These indicate the location of each footing, and the direction of the tilt of each column. Everything else is defined in GH with the use of numbers as input parameters.
Needless to say, instead of those lines you could obviously generate lines and control the number of columns and panels, hence establish their layout, with any algorithmic or non-algorithmic criteria you please. That marks a major difference between GH and Inventor.
You can generate geometry with Inventor via scripting/customization (beyond iLogic), with transient graphics for visual feedback similar to GH's red-default previews. However Inventor's modeling functions are not set to input and output data trees. I won't go into detail on that, but suffice to say that the data tree associativity of GH was for me the first major difference I noticed. I've used other apps with node diagram interfaces like digital fusion for non-linear video editing since the late 90's, so the canvas did not call my attention when I first started using GH.
Anyways, here's a screen capture of the foundational lines:
In the first group of components, the centerlines of the rear columns are modeled:
And the locations in elevation for connection points are set. Those elevations were just numbers I copied from Excel, but you can obviously control that any way you please. I was just trying to model this quickly.
The same was done for the rear columns:
The above, believe it or not, took me the first 5 hours to get.
Here's a screen capture of what the model and definition looked like after 4 hours, not much:
If you're interested, next post I can get into the sketching part you mentioned, which is a bit cumbersome with GH, but not really.
I wouldn't say that using GH to do this little model was cumbersome, it just needed some thinking at the beginning. You do similar initial thinking when working with a feature-based modeler.…
Added by Santiago Diaz at 12:44am on February 24, 2011
rotation
A with another displacement and rotation
A B with displacement and rotation
A B with another displacement and rotation
A B C with displacement and rotation
A B C with another displacement and rotation
A B C D with displacement and rotation
A B C D with another displacement and rotation
My problem (I have):
I only get the last polyline curve.
I get :
D with displacement and rotation
D with displacement and rotation
D with displacement and rotation
D with displacement and rotation
Everything seems fine when I look at the resulting curves BEFORE the output. The problem seems at A = curvelist...
There is probably a story with the all the flattens.
I am completely lost lost lost...
°°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°°
Dim curvee As OnCurve
Dim o As New Integer
Dim q As New Integer
Dim anglebase As New Double
Dim vectorr As New On3dVector
Dim curvelist As New List(Of OnCurve)
Dim center As New On3dPoint
center.x = 0
center.y = 0
center.z = 0
o = geometry.Count
q = vector.Count
anglebase = 360 / repetitions
For zzz As Integer = 0 To q / repetitions - 1
For jj As Integer = 0 To repetitions - 1
For oo As Integer = 0 To (p - 1) Mod o
curvee = geometry(oo)
move_rotate(0, anglebase * jj, curvee, center)
curvelist.Add(curve)
Next
Next
Next
A = curvelist
p = p + 1
°°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°°
Here is the code for "move_rotate". It directly comes from :
http://www.grasshopper3d.com/forum/topics/onnurbscurvetransform-method
°°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°° °°°°
Dim p As Integer = 1
Sub move_rotate(ByVal dblZ_amount As Double, ByVal dblRotationAngle As Double, ByVal _
ObjectToMove As OnCurve, ByVal pntCenter As On3dpoint)'As OnNurbsCurve
Dim move_xform As New OnXform
move_xform.Translation(0, 0, dblZ_amount)
Dim vertZ_axis As New On3dVector(0, 0, 1)
Dim rotate_xform As New OnXform
rotate_xform.Rotation(dblRotationAngle, vertZ_axis, pntCENTER)
ObjectToMove.Transform(move_xform)
ObjectToMove.Transform(rotate_xform)
End Sub
…
ssimilating components from a large definition into a single custom scripted component (eventually to be made into a GHA).
As of now I have 6 identical components in a chain (one after the other) which have several inputs and outputs. Some inputs are from the same user-defined sources and some are outputs from the previous component in the chain. My goal was to combine them all into a single scripted component - which I've done - but the amount of time it takes to process the solution is huge (compared to having them all chained in a row).
When chained, each component only take 50 or 60 ms to compute (300-360 ms total). When all crammed into one component, it can take several seconds (this also depends on the amount of inputs, though).
My theory is that I've just done something less efficient / more stupid than the best scripting practices would call for (since it's a relatively new realm for me) - So this is what I ask: Is there a better way to script what I have scripted? I don't want to complicate things by posting my few hundred lines of code, so I'll simplify:
To combine these previously disparate scripted components, I:
Create a class with various properties: (I am using a class because I have several data types -planes, points, numbers- that I want to output as the result of a function)
Class exampleClass
public aProp
public bProp
public cProp
etc...
create a function with 6 inputs (which is basically exactly the same as a single scripted component):
exampleFunction(a,b,c,d,e,f)
inside the function solve for 6 variables based on inputs
aVar = some math
bVar = some more math
cVar = even more math
etc...
At the end of the function create an instance of exampleClass (and set properties equal to variables solved for in the function)
classInstance = exampleClass
classInstance.aProp = aVar
classInstance.bProp = bVar
classInstance.bProp = bVar
etc...
Finally set the return value of the function equal to the instance of the class
exampleFunction = classInstance
So that's the setup. Now I want to run the function 6 times so I do something like:
dim funtion01 = exampleFunction(a0,b0,c0,d0,e0,f0)
dim funtion02 = exampleFunction(a1,b1,c1,d1,e1,f1)
dim funtion03 = exampleFunction(a2,b2,c2,d2,e2,f2)
dim funtion04 = exampleFunction(a3,b3,c3,d3,e3,f3)
dim funtion05 = exampleFunction(a4,b4,c4,d4,e4,f4)
dim funtion06 = exampleFunction(a5,b5,c5,d5,e5,f5)
So that's it. Now I can access any of the results from any of the 6 functions.
This works exactly the way I'd like it to, but it takes many times longer to calculate than when this whole script is broken up into separate components (360 ms total vs. 3.4 seconds in one script).
Any ideas why this may be? Should I do something different to achieve the same desired result?
Thanks in advance, I hope that wasn't overly confusing.
-Brian Harms…