COMPUTER AIDED ARCHITECTURAL DESIGN

Workshop 2 Notes, Week of September 3, 2018

Graphics Primitives Continued, Symmetry Operations, Modify and Select Tools

1. PRIMITIVES REVIEW

Primitives consist of basic elements such as lines, circles, arcs, boxes, etc.


Primitive tools typically have options associated with them to control the method of primitive creation (ie. a circle by edge, center, or diameter, copy, etc.). Remember to use the appropriate icon under the subtools to control the ways in which these elements are defined. Depending on which method of definition you are using, the command prompt has default options (such as a circle being 1'-0" in diameter), but can be overriden by keying in a specific dimension or control.

 

2. TOOL BOX ORGANIZATION

Within the tool bar, additional sub tools can be accessed by holding down the left mouse button on any tool icon with a triangle in the lower left hand corner. For example, by selecting the line icon, a sub-tool palette below can be pulled out and displayed as its own tool bar as well.

Defining your own toolbar: You can create your own toolbar by going to Tools / Toolbar Layout. You should first go to File / SaveAs to save your own toolbar collection so as to not edit the existing default one. After you've saved the toolbar to your folder, go to Toolbar / New and define the name of your custom toolbar. This will create a new floating window in which you can copy any icon over to this location. To do so, use the CTRL key on your keyboard and drag a duplicate icon you want here.

Go to Tools / Lock Toolbar if you wish to lock the toolbar locations.

3. CURVES

Control Point Curve (the first icon in the Curves subtool palette): This is a line based, simple curve that is very quick, but does not provide a lot of control or exact geometrical specification. You can control the degree of the curve in the command prompt.

Interpolate Curve (the second icon in the Curves subtool palette): The curve is drawn by points which are directly in the path of the curve. This will create a closer fitting curve to specific points. However, this results in a curve  that is typically less smooth than the Control Points curve.

Handle Curves (icon highlighted above). With Handle Curves, the curve is defined by tangential lines. The length pf the tangent lines effects their impact on the curve.

OBSERVATION: When constructing a curve, don’t just trace a drawing. Work to figure out the geometric elements most descriptive of the design. This may help you to more completely understand the geometrical order of the design, and later optimize on finding a more advanced and appropriate technology to use (i.e. spiral tool for the Guggenheim ). That is, test varied type curves to substantively work through the goeometrical composition.

 

NOTE: any of these tools can be used through typing in the command prompt.

 

4. LAYERS

Click the colorful pie wedge icon on the top toolbar to bring up the layers window. You can dock it anywhere on the screen.

Double click on a layer to make any layer active (signified by the check mark), and turning the lightbulb icon on/off will control visibility of that layer. Using layers allows parts of the model to be turned off or on and will be useful for assigning attributes, such as assigning colors of lines or linetypes. You can select multiple layers by using the SHIFT (adjacent layers) and CTRL (individual layers) keys.

To create a new layer, select the new level icon in upper-left corner, and enter into the text box for the new layer any aribitrary name ( e.g., "my parent layer").

 

 

To create a sublayer, select the parent layer, and click on the New Sublayer icon. You can use the up and down icons to adjust the layer hierarchy.

Shortcut: Quickly make a layer active by clicking on the layer name in the status bar located at the bottom of the Rhino  window.

By best practice, each level in Rhino should be given an independent color so as to be able to more easily understand the organization of drawing. To begin, create a new level for each different type element of your drawing (e.g, walls, roof, etc..). Work this way from the outset in order to keep in place an ongoing conceptual framework of the organization of your model. It may be that you will adjust this framework as your model develops or as new ways of parsing your project occur to you.


To choose the color per layer, simply click on the square next to the lock key. For example,  pick color (i.e., red) for the given level (i.e., "Layer 01") as shown in the dialog box below:

Furthermore, you can set the properties for the material assigned to that layer by selecting the circle icon next to the square above. You can also set the linetype and print color as well as print width here.

To select all objects on any layer, right click on the layer name and select "select objects".

 

Other ways of using layers can be found in the subset tool palette for Layers. First select the objects to modify, then use the icons to do the following:

 

Edit Layers : as described previously

Change/Modify Object Layer

Set Current Layer

One Layer On/Off

Duplicate Layer

Copy Objects to Layer

 

5. Using Filters to show the layers that match the following properties.

 

 

6. SELECTING OBJECTS:

Edit select by attributes: Open up the subpalette for the following tool icon:

Most are self explanatory (Select all, none, inverse, etc.), but here are some specific tools that are helpful to know:

Select Duplicate

Select by Color

Select All Block Instances

Select Curves to open a sub palette to see options for selecting Short, Open, Closed curves, or polylines.

Select Chain: Selects curves or surface edges that touch end to end.

Drawing a box to select objects in your model.

NOTE: Use SHIFT to add/remove objects from your selection. You can pre-select before using other tools to alter more than one element at a time.

 

7. OBJECT SNAP TOOLS

Recall from the last workshop how the OSnap toggle control on the status bar at the bottom of the screen is a quick way to use snaps. An alternate and more detailed way to do this is to select the icon in the standard toolbar (towards the top of your screen) to see other methods of object snapping.



Note: Persistent object snaps (right clicking on these snap icons) maintains an object snap through choosing several points without having to reclick the snap tool.

 

6. SYMMETRY TOOLS (Move, Rotate, Mirror, Scale, etc.)

Copy element. Method: type in # of copies in dialog box if more than one copy is desired at the same distance from one another.

Move element tool is vector based and can be translated from a point not within the object being modified. Click on or outside element once it’s selected and move in desired direction, typing in distance in Accudraw if you like. The Move element tool can be used with copies and with repititions by selecting the appropriate options in the dialog box.

Scale tool can be used with numeric input or the three point method. This tool can also be used with repetitions. Open the tool subset to have options for scaling 3D, 2D, 1D (stretching), and non-uniform.

Rotate tool can also be used with copies and repitition. To rotate an object to a specific angle, type the angle number in the dialog box after selecting the object to rotate.

Mirror tool can be used to make an exact mirrored copy of a desired object along a selected axis.

Rectangular Array (open up tool subset to see options for arraying along a curve or surface)

Polar Array

Make sure to pay attention to the command prompt for the specific usage steps of each tool.

 

NOTE: any of these tools can be used through typing in the command prompt.

 

7. SOME MORE CURVES

Helix, Spiral, and Average Curves (last 3 icons):

Average Curves (averages two curves)

8. MODIFY TOOLS

Under the main2 toolbar (left side of screen), pull out the curve tools icon:

          curve Tools  

        Sub-menus are obtained by selecting icons with gray triangle in lower right hand corner, such as the icon highlighted in green :

         curve tools sub menu icon   

          From the sub-menu, select the first icon to extend an element (curved and linear) or the second icon  to connect two elements:

    Extend line extends a line.

Circular Fillet through a defined radius

Construct Chamfer

Offset element by distance

Close Open Curve

Curve Boolean (combine regions)

sub menu for editing points on curves

 The pull-down menu from the icon in upper right-hand corner leads to following sub-menu  to  edit points on curvess:

sub-menu for point edit tools

Insert/Delete control point (from point edit sub-palette)


 

Additional Modification Tools in the Main1 and Main2 toolbars on left hand side of screen:

Join - connects objects together to form a single element (for lines, curves, surfaces, polysurfaces, solids)

Explode - breaks objects down into components

Trim - deletes slected portions of an object where they are intersected with another object

Split - divides NURBS into parts by using elements to cut

 

NOTE: any of these tools can be used through typing in the command prompt.

TIP: Another way of quickly modifying control points on objects is by using the F10 key on the keyboard to display these points, and F11 to turn the points visibility off.

 

9. BLOCKS vs. Group/Ungroup

1) Blocks creates a single unit from selected objects. The object has an assigned name and is stored in the block library. You can update all instances of a block by modifying a block definition.

Defining a block: Type "block" in the command prompt, or open up the toolbar Block. Select elements to be blocked together and define a base point as per the command prompt. Assign a name, description as desired. Use link to link to external files. To refine a block, just use this same process but re-use the same block name.

 

Use the "block manager" to see all the blocks defined in your file. Here you use the counter to see how many of each block object are in your file.

 

Key in "insert" in the command prompt to insert a defined block into your model.

 

2) You can use the Group/Ungroup icons in the Main1 and Main2 toolbars on the left side of your screen to create a single unit from selected objects.

10. Catenary curve.

Create two points at arbitrary locations in the plan view in Rhino.

two points in plan view

Similar to the steps outlined at the of workshop 1, at the command type in "Grasshopper" to load the plugin, and from the Parameters (Prm) tab, place two point symbols in the Canvass window.

two point symbols gh

Right-click on  the first "Pt" symbol and choose "set one point" and using the mouse select the  first point  in Rhino (note that you can either select the point directly with the left mouse button, or drag a "rubber banding" window around it inside Rhino.):

set one point

Repeat this so as to connect the second "Pt" symbol with the second of the two points in Rhino. 

set 2nd pt

Within "Grasshopper" go to the "Curve" tab, and from the "Spline" area select the "catenary" curve symbol and drag it into the "canvass" window:

  select symbol

Connect the output port of the first "Pt" to the input port "A" of the "cat" symbol, and connect the output port of the second "Pt" to the input port "B" of the "cat" symbol:

connect pts to catenary symbol

Return to the "Params" tab and drag a numerical input slider into the canvas area:

drag numerical slider to canvass

Double-click with the left mouse button directly on the text " slider", set its range to be 5  to 150, set its value to 27.5,  and connect its output port to input port "L" of the "cat" symbol.

adjust length

Add three more sliders without modifying their default value ranges.  Next, go to the "Vector" tab, and add a construct vector "symbol" to the canvass.

add vector symbol

Change the values of the three new sliders to 0.0, 0.0, and 1.0, and connect them to the "X", "Y" and "Z" input ports of the Vec symbol. Next, connect the "V" output port of the "Vec" symbol to the "G" input port of the "Cat" symbol. Note that a catenary curve is now generated from the two points draping in the negative "Z" direction:

catenary curve

Change the range of each X component, Y component, and Z component sliders to go from -1 to 1. Change their current values to 0.0, 0.0 , and -1.0 respective and note that the catenary curve hands as if pulled in the negative "Z' axis by gravity.

hanging curve

11.  Catenary curve series.

  In this example, we add draw two simple parallel curves (shown in blue-cyan in the perspective window  below)  in  the plan of the same Rhino model used to draw the single catenary curve. We then go to "Params" tab, and drag a "curve" symbol into the "canvass" window. Note that in this illustration we also use the  mouse to drag a rectangle  around the other symbols in the "canvass" window, and then move  them to the right to make way for the two new "curve" symbols.

add two curves

Connect the two new curves to the "Crv" symbols in the "canvass" window. Go to the "Vector" tab, and add two "divide curve" symbols:

 add divide symbols

Return to the "Params" tab" and add a new numerical input slider with a range in values of 2 to 100, and set its output port to the "N" input ports of both of the "Divide" symbols.

connect numerical slider to divide symbol

Now, connect the output ports of each of the two "crv" symbols to the corresponding input ports "C" of the "Divide" symbols, and series of points is create along each of the two new curves added to the Rhino model.

curves divided

Connect the output ports "P" of the two "Divide" symbols to the corresponding input ports "A" and "B" of the "Cat" symbol. This connection now supplants the connections from the original two points in step 10 above, and a series of Catenary curves is now created. Note too that in this example the "length" slider is reduced from 27.5 to 10.0.

catenary curve series

12. Catenary curves to lofted surface.

Note that two methods of generating the surface are shown below. The first method uses a "loft" surface. Note that the curves must be relatively simple for this technique to work.There's a risk that the surface may fold in on itself. If that occurs with the "loft" surface, then try using simpler curves or lessening the "Length" input parameter to the "Cat" symbol. The second method, described further below, uses a "bi-rail" surface which is more likely to result in a coherent surface that isn't folding in on itself. Both methods are shown below. The second method results in the Grasshopper file catenarySurface.gh based upon the Rhino file makeCatenarySurfaces.3dm (right-click and do a "save as" on these links to download the files). A third option, not shown, involves creating a procedure in the Visual Basic" component to Grasshopper that parses the series of catenary curves into a series of adjacent pairs and then generates a series of surfaces rather than a single whole surface.

12.1 Loft surface: continuing with the the last example of step 11, go to the "Surface" tab inside of Grasshopper, and add a "loft surface" symbol to the right of the "Cat" symbol. Connect the output port "C" of the "Cat" symbols to the corresponding input port  "C" of the "Loft" symbol. This connection generates a suspended  catenary surface from the two curves.



catenary surface

Adjust the value of the "Z component" slider to 1 to have the catenary curve move in the positive "Z" direction.

adjust service direction

Adjust 
the value of the "Y component" slider to -0.12  to cause  the catenary curve to  lean slighty in the negative  "Y" direction.

adjust y component of vector
 

Explore variations in the other numerical sliders, including the "count" slider  to see how the surface is modified. Similary, move or rotate slightly either of the two curves in Rhino and see how the changes in the surface are automatically generated. For example, move the curves in the ground plane further apart, rotate one slighlty, change the number of catenary curves to 5, and the length to 10.

adjust variables and curve postions

To import the surface more completely inside Rhino, right-clock on the "Loft" symbol  highlighted in green below and from the popup dialog box that follows (not shown below) select the item "Bake".

bake surfaces to Rhino

12.2 Method 2: BiRail by 2 Rails

In Grasshopper, to the "Surface" tab, and pulling down the "Freeform" sub-tab, left-click on the "Sweep2" icon and drag it into the canvas window:

birail surface

 

The Birail surface component, shown in green below, has inputs labelled "R1" and "R2" for the two "rail" curves, and "S" for the catenary curve sections:

First, within the "canvas" window, right-click on the "loft" component, and select the "disconnect input" option to remove the catenary curves as input.

disconnect loft surface

Next, connect the two "crv" components to "R1 and "R2" and also connect the output port "C" of the "Cat" component to the input port "S" of the "Swp2" component.

biRail surface connection

Finally, right-mouse click on the "Swep2" component, and left-mouse click on "Bake" to fully import the surface into Rhino. Once imported, the "baked" surface can be moved and treated like any other polygon surface.

baked surface alongside original grasshopper surface

12.3 Method 3: Network surface.

Depending upon the character of the initial curves on the ground, the second method may sometimes also fail. A network surface is yet a third surface type within Grasshopper that tends to be more robust in these additional sitautions. The surface is compiled from two sets of curves moving in relatively perpendicular directions along the surface, the U and the V directions. Similar to the other two methods, the first step is to go to the "Surface" tab within Grasshopper, and pulling down the "Freeform" sub-tab and left-click on the "Network Surface" icon and drag it into the canvas window:

select suface type

 

The "Network Surface" component, shown in green below, has inputs labelled "U" and "V" for the two sets of curves. Connect the one of the original "crv" output ports to the "U" input port of the Network Surface. Next, holding down the "shift" key, connect the other one of the "crv" output ports to the "U" input port of the Network Surface. By using the "shift" key, it's possible to add on the second "crv" to the "U" input port without disconnecting the first one. Next, drag the output port "C" of the catenary curves to the input port "V" of the "Network Surface" component.

network surf in place

The network surface will now be generated within the Rhino drawing window. Finally, right-mouse click on the "S" output port of the "Network Surface" component, and left-mouse click on "Bake" to fully import the surface into Rhino. Similar to the previous two examples, once imported, the "baked" surface can be moved and treated like any other polygon surface.

surface generated in Rhino

This grasshopper file catenarySurface2.gh contains surface components corresponding to the three different methods outlined here. The surface components for the first two surface types have been disconnected from the curve input data, and the component for the third surface type has been connected to this data.

 13. Vectors and Arrays

Steps 13, 14 and 15 produce a grasshopper file that mirrors seating. It would be best to reconstruct the steps in the order illustrated here. However the  completed Rhino file vectorArray.3dm and associated grasshopper grasshopper file vectorArray.gh are included here for edification. 

Within this example we examine the use of vectors to generate an array of objects, and also to facilitate a mirror of that array. Begin in Rhino with drawing three points at the locations (1) 0,0,0, (2) -1, 0, 0 and (3) 0, 1, 0 in the ground plane of the world coordinate system as shown in the figure below.

three points

Next, place a circle centered on the location -0.5, 1.5, 0 of radius slightly less than 0.5 as depicted below. 

circle in ground plane

Now type "Grasshopper" at the command prompt to open up the Grasshopper application window. Forom  the Grasshopper "Param" tab, place thee "point" components and one "geometry" component in the canvass window. Note that the "geometry" component is located within the sub-menu that  appears below the word "Geometry" on the left-hand side of the Grasshopper dialog window. 

point and geometry components

Associate the first point "Pt" component above with the point 0,1, 0 in Rhino along the y-axis, the second  point "Pt" component above with the point 0,0, 0 in Rhino on the x-axis, and the third component point "Pt" above with the point -1,0,0, in Rhino along the negative x-axis by using the same method as illustrated in step 10 . catenary curve example above. SImilarly, connect the "Geo"   with the circle created in Rhino.

link pts and circle

SImilarly continuing within Grasshopper, go the vector tab, and on the right-hand side, upper right-hand corner, select the vector created by two points component (a black diagonal  arrow symbol with two white dots), and place one adjacent to the first "Pt" component and a second adjacent to the second "Pt" component in the Grasshopper canvas window.  At this point also begin to safeguard your work by saving the Rhino file as "vectorArray.3dm" and by saving the Grasshopper file as "vectorArray.gh".

vector components added

The "Pt" component in the center should be connected to input port "B" of both "Vec2Pt" components forming the start of each vector,  and the other "Pt" components should be connected to the input port "A" of each corresponding "Vec2Pt" conponent to create a unit 1 length vector along the positive Y and one along the negative X axis respectively.

vectorComponentSetup

 Go to the "Trans" tab (also abbreviated as "T" on a smaller Grasshopper window) and select the "Linear Array" component just to the upper right of the word "Array" and place it in the canvas window just to the right of the first "Vec2Pt" component. 

Add Array Component

Connect the "V" output port for the first "Vec2Pt" component into the "D" (direction) input port of the "AriLinear" component, and connect the "Geo"component into the "G" (geometry) input por the "AriLinear" component. For the time being the "N" (number) input port into the "AirLinear" component will be unconnected so that the default value of "10" array elements will be in effect.

setup first array


Note that a linear array of 10 circles now appears in the direction of the Y-axis in the Rhino "Perspective" window.

linear array of circles

Similarly,  set into place a second "AriLinear" component across to the right of the "first "AriLinear" component and accross from the second "Vec2Pt" component as illustrated in the image below. Connect the output "V" port of the second "Vec2Pt" component into the "D" (directrion) input port of the "AriLinear" component, and connect the  output "G" port of the first "AriLinear" component into the "G" (geometry) input port the second "AriLinear" component.  Note again  that a linear array of 10 circles, one for each circle in the first array along the positive Y-Axis,  now appears in the direction of the X-axis in the Rhino "Perspective" window.

circle array in x and y directions

Here we've setup the vectors such that if we move the original point at (0, -1, 0) in Rhino up along the positive Z-axis   we get a temporary display of  inclined set of circles similar to theater seating. 

inclined array of circles


We can also move apart the circles along the direction of the Y-axis, but moving the point a (0,1,0) up along the positive Y-axis.

expand array along y-axis


However, lets adjust the points back to their original position and work now towards mirroring the array in step 14. below.

array restored to original position


14. Mirror Array

Continuing with the same example, add three additional points In rhino at the locations  (2, 1, 0),  (2, 0, 0),and (2, 0, 1) as shown below. These points will form the X-axis and the Y-axis of a mirror plane.

add three move pts

Within the Grasshopper window, add point compomponents for the point along the direction of the Y-axis (2, 1, 0), the point on the X-axis (2, 0, 0), and the point along the direction of the X-axis (2, 0, 1) similar to the beginning of step 13. Vectos and Arrays above. 


add mirror plane pt components

To the right of the three point components, add two vector components again following a similar procedure to to the beginning of step 13. Vectors and Arrays above. 

add more vector components

The "Pt" (2, 0, 0) component in the center at should be connected to input port "B" of both "Vec2Pt" components forming the start of each vector,  and the other "Pt" components should be connected to the input port "A" of each corresponding "Vec2Pt" conponent to create a unit 1 length vector along the positive - axis  and one along the Positive - axis respectively.

mirror plane vectors

Within the same "Vec" tab, select the "Consruct Plane"component fom the first row second item  in the area named "Plane" in the Grasshopper window , and place it to the right of the two "Vec2Pt" components the Grasshopper canvas. This new compnent is named "Pl" and highlighted in green  in the canvas window below. In addtion, connect the output port "V" of the first "Vec2Pt" component to the input port "X" of the "Pl". Similarly, connect the output port "V" of the second "Vec2Pt" component to the input port "Y" of the "Pl". These two vectors establish the X any Y axis of the plane. Finally, connect the the the output port for origin point of the plane (the original point 2, 0, 0) into the input port "O" of the "Pl" component to fix it's origin at the location 2, 0, 0) along the X-axis.

setup mirror plane


Return to the "Trns" or "T" tab in Grasshopper and in the upper left-hand corner of the area labelled "Euclidian" select the mirror component and place it to the right of bot the "AriLinear" component and to the right of the "Pl" component.


add mirror component

To mirror the geometry of the array of circles, connect the output port "G" of  the second "AirLinear" component to the input port "G" of the "Mirror" component, and connect the output port "Pl" of the "Pl" component to the input port "P" of the "Mirror" component".

connect mirror component

This now completes the the initial Grasshopper definition for establishing the mirror of the circles.

mirror definition completed

With this definition in place we can once again adjust the original points determining the vectors for the original array on the left-hand side as we did in part 13 above and the mirrored are immediately impacted. For example, the point at -1, 0, 0, and moved up the positive Z-axis, and the circles in both the original array and its mirror are inclined is depicted in the image below.

inclined circles and mirror

Moreover, if we move along the positive X-axis the three points that we used to construct the mirror plane, then correspoinding the mirrored geometry also moves further to the right.


shift mirror plane to right
 

15. Subsitution of geometry.

With the Grasshopper definition setup in part 14 above, it's possible to subsitute geometry for the original circle and the entire original array and its mirror are dynamically changed accordingly. For example, place a two solid boxes at the location of the original circle forming the inital array so as to create an abstract representation of a seat.

make abstract seat

Go back to the original Grasshopper "Geo" symbol, right-click on it and then the select "Set Multiple Geoemtries" to select the two solid boxes.


subsitute geometry

The two boxes are now arrayed and mirrored in place of the original circle.

mirroredSeating

Note that to add the temporary Grasshopper graphics to the Rhino model, it is necessary to right-click on the output port "G" of the second "AriLinear" component in the canvass and "bake" it, and then to do the same for the output Port "G" of the "Mirror" component.

bake components

A more static version "seating" will become a direct part of the Rhino file and separately will remain a dynamic part of the Grasshopper definition file.

baked seating