15-394 Assignment 3: Studded Surface
Introduction
In this assignment you will use Grasshopper to construct a 3D surface
with an array of protruding studs. You will then 3D print this
surface.
Ideally your surface should be around 3x3 inches, or 75x75
millimeters. In Rhino, the default grid units are millimeters. The
tiny grid squares a 1 mm, and the larger squares are 5 mm. So your
project should take up about 15 large squares per side.
Making a 3D Surface
You can make a 3D surface by generating a set of curves and lofting between them.
- In Rhino, draw four gently varying vertical curves, roughly 75
mm high, roughly evenly spaced. They should cover a roughly 75x75
mm area, but make the heights and spacing vary a bit.
- In the Perspective window, click on the second curve, then
shift-click to raise it in the Z direction.
- Raise the third curve as well, by a different amount.
- Insert a Params > Curve component in Grasshopper.
- Right click on the Curve component, do Set Multiple Curves, and click on the four
Rhino curves in left to right order.
- Insert a Surface > Prinitives > Loft component and
connect the Curve component to its C input.
- Now we have a surface. But surfaces have zero thickness and
cannot be 3D printed. We need to make a solid volume from this
surface, with roughly constant thickness. The Extrude or Offset
components won't work because they extrude the entire surface in a
single direction, while we want to extrude in a direction that is
normal to the surface at each point.
- Insert a Surface > Util > Divide Surface component, and
feed the output of the Loft into its S input. You can use the default
number of U and V divisions (10), or change them if you like.
- Insert a Transform > Euclidean > Move component and feed
the P output of Divide Surface into its G input
- Insert a Maths > Operators > Multiply component.
- Feed the N (normals) output of Divide Surface into the A input
of the muliply.
- Create a 0 < 5.0 < 15.0 slider and connect it to the B
input of the Multiply component.
- Zoom way in on the left edge of the Multiply until you see a + sign. Click on that
to create a C input to the Multiply component.
- Right click on the C input, choose Set Data Item, and enter a value of -1.
- Connect the output of the Multiply component to the T input of the Move component.
- Insert a Surface > Freeform > Surface From Points component.
- Connect the output of the Move component to the P input of Surface From Points.
- Right click on the P input of Surface From Points and select Flatten.
- Right click on the U input of Surface From Points and choose
Set Integer. If the Divide Surface is using 10 U divisions, set
the Surface From Points value of U to 11.
- Now we have two surfaces, the new one should be above the
original. We need to connect them along the edges in order to form
a closed volume.
- Insert a Surface > Freeform > Loft component.
- Connect the output of the first Loft to the C input of the new loft.
- Holding down the shift key, connect the output of the Surface
From Points component to the C input of the enw loft, so that it now
has two input sources.
- Insert a Surface > Util > Brep Join component.
- Feed the output of the first Loft, the second Loft, and the
Surface From Points components into the Brep Join component. This
gives us a closed 3D volume.
Make A Stud
- In order to make a studded surface we have to make a stud
that we can then replicate over the surface. The stud should be
centered on the origin, and should be fairly small: around 6x6 mm
in the x-y plane and around 4 mm high.
- Use your creativity in designing your stud. For example, you
might use a truncated cone, which you can create by lofting
between a curve in the x-y plane and another curve 4 mm above
the x-y plane. But don't just copy that idea; come up with one
of your own. Your stud does not have to be symmetric; it could
be a crescent moon or a horsehoe. Just keep the limitations of
the 3D printer in mind; don't choose something with ultra-fine
features, or a crazy shape that will require support material.
Divide The Surface
- Insert a Maths > Domain > Divide Domain2
component (this is the 2D version of Divide Domain).
- Connect the output of Surface From Points to the I input of
Divide Domain2.
- Insert a Surface > Util > Isotrim component.
- Connect the output of Surface From Points to the S input of the Isotrim component.
- Connect the output of Divide Domain2 to the D input
of the Isotrim component. This gives us a list of surfaces, each of
which is a patch of our original top surface. We're going to put a
stud in the center of each of these patches, but first we have to
find the center.
- Insert a Surface > Analysis > Deconstruct Brep component.
- Feed the output of the Istotrim component into the Deconstruct Brep.
- Insert a Maths > Util > Average component.
- Feed the V (vertices) output of Deconstruct Brep into the Average component.
- Insert a Surface > Analysis > Brep Closest Point component.
- Feed the output of the Average component into the P input of Brep Closest Point.
- Feed the output of Surface From Points into the B input of Brep Closest Point.
- Insert a Vector > Plane > Plane Normal component.
- Feed the P output of Brep Closest Point into the O input of Plane Normal.
- Feed the N (normal) output of Brep Closest Point into the Z input of Plane Normal.
- Right click on the Z input to Plane Normal, choose Expression,
and enter the expression "-x" (without the quotes).
- Now we have a set of planes located at the patches, with
orientations that match the patch centers.
Move the Studs To Their Positions
- Insert a Transform > Euclidean > Orient component.
- Connect the component representing your stud geometry to the G
input of the Orient component.
- Connect the output of the Plane Normal component to the B input
of the Orient component. Now you should see a stud in every patch.
- Insert a Weaverbird > Extract > Join Meshes and Weld component.
- Connect the output of the Brep Join to the M+ input of the Join Meshes and Weld component.
- Right click on the G output of the Orient component and select Flatten.
- Connect the G output of the Orient component as a second M+
input to the Join Meshes and Weld component. The output of this
component should now consist of the thickened surface with the
studs embedded in it.
- Make sure that your final output is a single mesh, not a
collection of meshes.
Output and 3D Print the Result
- Right click on the Join Meshes and Weld component, choose Bake, and click
the checkbox to group the outputs.
- In Rhino, click on the baked surface so it appears in yellow.
- In Rhino, do File > Export Selected, set the file type to
STL, enter a filename, and accept the default STL Mesh Export
Options.
- Use
this Google
Drive link to submit your studded surface for printing. Include
your Andrew id at the start of the filename, e.g., dst_studs01.stl.
Place the file in the Submissions folder. When it is printing it will
be moved to the "In Progress" folder, and when finished it will be
moved to the "Completed" folder.
What to Hand In
- In Canvas, hand in your Grasshopper and Rhino files, and your STL file.
- When you get your 3D printed object back, post a photo to Piazza.
Back to 15-394 course home page
|