Click here to load reader

Grasshopper Notebook

  • View

  • Download

Embed Size (px)



Text of Grasshopper Notebook

  • A personal Notebook on

    GRASSHOPPER using SR: 0.9.0014

  • SOMETHING of value

    During my use of Grasshopper in the office, I had collected a few

    plug-ins required to do some really interesting functions to simply

    scripting. Please make sure that you try and


    HoopSnake*Kangaroo LunchBoxMeshEdit


    *I do not use HoopSnake at all in this book, but recrusive

    scripts are something I will be exploring next!


    Brief Basics

    Tower Tools

    250 Davenport

    Detroit By Design

    Structural Elements

    Facade Explorations



    To keep the size of this notebook small, this introduction is written under the assumption that one has experience with the Grasshopper User Interface, as well as the types of buttons that exist.

    I am no expert on Grasshopper and am still learning quite a lot every time I open the software, so I see no point trying to lecture about how to manage your lists, sets, data trees, etc. For a real introduction to the software, I suggest using to get to a full series of tutorials. For those who prefer to learn by duplicating working scripts, with slight explanations to reasoning, I hope that this is useful.

    The trick to writing your Grasshopper (GH) script is writing it in the mind set that you are drawing translations, then applying those geometry. Speaking out your script is the easiest way to make sure you are arranging buttons correctly. Lets start with a simple example such as an array/copy script. Spoken, one could say I need this placed along this line x times. In GH, since you must consider drawing all the vectors and planes required to create a copy condition, you would attempt dividing the line x times, so I can draw this at each of those points.

    Note that a Vec2Pt Button is required to move your object in the array. This goes back to the point that you are not simply drawing blobs at points, but drawing the translation vector between the center point of the first blob to each point along the divided curve.



    We can expand on this simple script and discover the concept of storing lists. When we divided the initial curve, the slider determined a variable number of points which created then a list of points. (You can always check your lists and data structures by placing Panel buttons at each respective output.) You can manipulate lists by splitting, merging, weaving, removing, recalling, etc. With good list and data tree management you create seemingly complex definitions.

    A simple introduction to using lists would be to continue adding on to our basic script of an array copy. Because each point is a part of a list, each geometry is now a part of its own list. Using a List Item button, we can recall a certain item in the list to isolate it to apply transformations. Here we can select one of the curves to extrude.

    The last part to give a brief mention of is the evaluation of functions in Grasshopper. There are a full set of math buttons to allow equations to manage the parametric inputs. You can manually write equations and algorithms for inputs, or can generate them simply with Series or Random buttons. When dealing in mathematical inputs, it is very important for units to be converted through buttons, and all variables are linked correctly to prevent errors in the script. Examples of the math buttons will appear in the scripts throughout the notebook.

    NOTE || When using Lists, 0 is assigned an item! So when using any sliders with sets and lists, 0 is the first item processed. This is why the slider shows 4, yet we have extruded the 5th element.

  • 6TOWERINGOWEWEWEWEE TOOLSThis script is an easy way to understand the basics of Grasshopper in a more practical appli-cation; the creation of a tower.

    One way to build a tower, is to start with the base curve sketch. This script shows how to multiply the curve in a vertical direction with the ability to change the floor to ceiling height (F2C Height), and the number of storeys cloning along the path.

    The addition of a Rotate Plane button can then rotate the base curve against a Series button, which can control the number of incremental rotations, and the angle of rotation between steps. Be sure to remember to convert your generated series of numbers into radians to plug into the Angle input via the use of the Radians button.

    Alternatively to the first sketch, one can create a tower using set interval curves to loft together. By taking the base geometry and placing it at an evaluated point in the height fo the tower, you can scale, rotate or even place different curves at set points to create a very unique lofted tower. Once a massing is achieved, you can begin to extract plate information from it.

    SCRIPT LOGIC || Extracting the center point of the original curve >> copying up a Z vector path (sliders to determine distance and number of storeys) >> extract list length of center point to use as rotational count >> rotate geometry.

  • 7SCRIPT LOGIC || Drawing a path curve >> Intersect with Vertical Rule (slider for F2C Height) >> Draw squares at intersection points >> Extrude and cap volumes

    NOTICE || The Intersection you do might turn red. This typically means that the button is not working, but in this case, it is over working. It is showcasing that your guide rail is providing more opportunities for intersections then what will project and hit the massing. To check if it is legitmately broken, simply bake out the results and check for satisfaction.

    SCRIPT LOGIC || Original Curve >> Moved along Z axis in only 3 positions >> Scale at an evaluated mid-point >> Rotate and loft using key planes

    Using the Intersect tools (in this case Brep,) you can do much more with your form and still extract information and floor plate shapes. The towers can now travel along a path with the storeys still being set F2C Height. You do not need to fully create the geometry within Grasshopper, but simply reference it in using a Geometry or Brep button to apply the intersection. This division of the reference curve can be manipulated to divide the mass, or alternatively can be used to reference the mass back to it.

    SCRIPT LOGIC || Reference Z axis Curve >> Divide length by F2C Height >> Create Plane at points >> Intersect with Massing Brep

  • 8

  • 9250

  • 10

    SECTION 1 | Drawing the Form

    The Question: Can we see what the form looks like with 12 stories at the North East Corner?

    This script is significantly less complicated then the amount of wires showcases. It references both vertical curves at each corner point and intersects them with a perpendicular plane along a z-axes curve, which are spaced at a variable ceiling height. Those intersection points create a list along the guiding rails at each corner, which allows you to recall them each individually using the List Item button with the slider. Lastly it takes the end point of the original curve (not restricted to plane) and draws a new curve from there to the called out point: the selected storey height for that corner.

    The exterior curves are then gathered and dispatched into two lists of interior and exterior for lofting to generate the massing form.

    NOTE || The order that you select your Reference Curves, (as well as their Normals) makes a difference into your curve parameter holder. They will be a assigned a number in its respective list, which will become evident when you dispatch interior and exterior curves around the courtyard. If crossing of the lofted surface occurs, check to make sure all normals are aligned and that all curves or picked in order!

  • 11

    SECTION 2 | Sectioning Floor Plates The mass is then sectioned using the similar z axes which was designating the the floor to ceiling height. This is using a Brep/Plane intersection button. These buttons may give off an error message, as the guiding rail is often taller than the form of the building to ensure that the entire building is being sectioned. Since the rail is taller, plane interesections are missing the projection on to the mass, causing the software to say it is providing and incomplete function. These sections curves are then joined and closed by drawing a new curve from the end points of the floor plate lines. This condition of requiring to close the curve seems to be unique to this terraced building in particular for some reason, and may not need to be done to other built forms. Once the floor plates are closed, a Area button was used to extract the area of the floor plate shape, and then previewed in a panel. When you extract area of a list, there will be a list of areas as well. The mass addition button takes the numbers, flattens them and adds them to provide a total area value. Notice that a Cull Item was used to removed one floor plate from the addition of floor area to satisfy the nature of Terrace floor space.

    The panels display live updates to floor areas as you change the shape of your model, ensuring you maintain a set target goal.

    The construction of this form is rather simply spoken and probably overwired, as a constant use of recalling List Items and drawing simple 2Pt Line buttons were placed create the exterior. Grafting the line intersection against the corner guides rail allows for the apparent intersection to work correctly. When it comes to redrawing the corner lines from the end points to the new storey points, flattening the list points creates a new line to be drawn from each respective point to the end point instead of drawing

Search related