Categories: Tutorials

Polygon Construction – Make a 3D printed kite

8 min read

3D printers are incredible machines, but let’s face it, it takes them a long time to work their magic! Printing small objects takes a relatively short amount of time, but larger objects can take hours and hours to print. Is there a way we can get the speed of printing small objects, while still making something big—even bigger than our printer can make in one piece?

This tutorial shows a technique I’m calling “polygon construction”, where you 3D print connectors and attach them with rods to make a larger structure. This technique is the basis for my Polygon Construction Kit (Polycon).

A Polycon object, with 3D printer for scale

I’m going to start simple, showing how even one connector can form the basis of a rather delightful object—a simple flying kite! The kite we’re making today is a version of the Eddy diamond kite, originally invented in the 1890s by William Eddy. This classic diamond kite is easy to make, and flies well. We’ll design and print the central connector in the kite, and use wooden rods to extend the shape. The total size of the kite is 50 centimeters (about 20 inches) tall and wide, which is bigger than most print beds. We’ll design the connector so that it’s parametric—we’ll be able to change the important sizes of the connector just by changing a few numbers. Because the connector is a small object to print out, and the design is parametric, we’ll be able to iterate quickly if we want to make changes.

A finished kite

The connector we need is a cross that holds two of the “arms” up at an angle. This angle is called the dihedral angle, and is one of the secrets to why the Eddy kite flies well. We’ll use the OpenSCAD modeling program to create the connector. OpenSCAD allows you to create solid objects for printing by combining simple shapes such as cylinders and boxes using basic programming language. It’s open source and multi-platform. You can download OpenSCAD from http://openscad.org.

Open OpenSCAD. You should have a blank document. Let’s set up a few variables to represent the important dimensions in our connector, and make the first part of our connector, which is a cylinder that will be one of the four “arms” of the cross. Go to Design->Compile  to see the result.

rod_diameter = 4;   // in millimeters
wall_thickness = 2;
tube_length = 20;
angle = 15;         // degrees
   
cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);

First part of the connector

Now let’s add the same shape, but translate down. You can see the axis indicator in the lower-left corner of the output window. The blue axis pointing up is the Z-axis, so you want to move down (negative) in the Z-axis. Add this line to your file and recompile (Design->Compile).

translate([0,0,-tube_length]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);

Second part of the main tube

Now that we have the long straight part of our connector, let’s add the angled arms. We want the angled part of the connector to be 90 degrees from the straight part, and then rotated by our dihedral angle (in this case 15 degrees). In OpenSCAD, rotations can be specified as a rotation around X, Y, and then Z axes. If you look at the axis indicator, you can see that a rotation around the Y-axis of 90 degrees, followed by a rotation around the Z-axis of 15 degrees that will get us to the right place. Here’s the code:

rotate([0,90,angle]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);

  

First angled part

Let’s do the same thing, but for the other side. Instead of rotating by 15 degrees, we’ll rotate by 180 degrees and then subtract out the 15 degrees to put the new cylinder on the opposite side.

rotate([0,90,180-angle]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);

Opposite angled part

Awesome, we have the shape of our connector! There’s only one problem: how do we make the holes for the rods to go in? To do this we’ll make the same shape, but a little smaller, and then subtract it out of the shape we already made. OpenSCAD supports Boolean operations on shapes, and in this case the Boolean operation we want is difference.

To make the Boolean operation easier, we’ll group the different parts of the shape together by putting them into modules. Once we have the parts we want together in a module, we can make a difference of the two modules. Here’s the complete new version:

   rod_diameter = 4;   // in millimeters
   wall_thickness = 2;
   tube_length = 20;
   angle = 15;         // degrees
   
   // Connector as a solid object (no holes)
   module solid() {
      cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);
      translate([0,0,-tube_length]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);
      rotate([0,90,angle]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);
      rotate([0,90,180-angle]) cylinder(r = rod_diameter + wall_thickness * 2, h = tube_length);
   }
   
   // Object representing the space for the rods.
   module hole_cutout() {
      cut_overlap = 0.2; // Extra length to make clean cut out of main shape
      cylinder(r = rod_diameter, h = tube_length + cut_overlap);
      translate([0,0,-tube_length-cut_overlap]) cylinder(r = rod_diameter, h = tube_length + cut_overlap);
      rotate([0,90,angle]) cylinder(r = rod_diameter, h = tube_length + cut_overlap);
      rotate([0,90,180-angle]) cylinder(r = rod_diameter, h = tube_length + cut_overlap);
   
   }
   
   difference() {
      solid();
      hole_cutout();
   }

Completed connector

We’ve finished modeling our kite connector! But what if our rod isn’t 4mm in diameter? What if it’s 1/8″? Since we’ve written a program to describe our kite connector, making the change is easy. We can change the parameters at the beginning of the file to change the shape of the connector. There are 25.4 millimeters in an inch, and OpenSCAD can do the math for us to convert from inches to millimeters. Let’s change the rod diameter to 1/8″ and also change the dihedral angle, so there’s more of a visible change. Change the parameters at the top of the file and recompile (Design->Compile).

   rod_diameter = 1/8 * 25.4;   // inches to millimeters
   wall_thickness = 2;
   tube_length = 20;
   angle = 20;         // degrees

Different angle and rod diameter

Now you start to see the power of using a parametric model—making a new connector can be as simple as changing a few numbers and recompiling the design.

To get the model ready for printing, change the rod diameter to the size of the rod you actually have, and change the angle back to 15 degrees. Now go to Design->Compile and Render so that the connector is fully rendered inside OpenSCAD. Go to File->Export->Export as STL and save the file.

Open the .stl file in the software for your 3D printer. I have a Prusa i3 Berlin RepRap printer and use Cura as my printer software, but almost any printer/software combination should work. You may want to rotate the part so that it doesn’t need as much support under the overhanging arms, but be aware that the orientation of the layers will affect the final strength (if the tube breaks, it’s almost always from the layers splitting apart). It’s worth experimenting with changing the orientation of the part to increase its strength. Orienting the layers slightly at an angle to the length of the tube seems to give the best strength.

Cura default part orientation

Part reoriented for printing, showing layers

Print your connector, and see if it fits on your rods. You may need to adjust the size a little to get a tight fit. Since the model is parametric, adjusting the size of the connector should just take a few minutes! To get the most strength in your print you can make multiple prints of the connector with different settings (temperature, wall thickness, and so on) and see how much force it takes to break them. This is a good technique in general for getting strong prints.

A printed connector

Kite dimensions

Now that we have the connector printed, we need to finish off the rest of the kite. You can see full instructions on making an Eddy kite, but here’s the short version. I’ve built this kite by taking a 1m long 4mm diameter wooden rod from a kite store and cutting it into one 50cm piece and two 25cm pieces. The center connector goes 10cm from the top of the long rod. For the “sail”, paper does fine (cut to fit the frame, making sure that the sail is symmetrical), and you can just tape the paper to the rods. Tie a piece of string about 80cm long between the center connector and a point 4cm from the tail to make a bridle. To find the right place to tie on the long flying line, take the kite out on a breezy day and hold by the bridle, moving your hand up and down until you find a spot where the kite doesn’t try to fly up too much, or fall back down. That’s the spot to tie on your long flying line. If the kite is unstable while flying, you can add a long tail to the kite, but I haven’t found it to be necessary (though it adds to the classic look).

Assembled kite

Back side of kite, showing printed connector

Being able to print your own kite parts makes it easy to experiment. If you want to try a different dihedral angle, just print a new center connector. It’s quite a sight to see your kite flying high up in the sky, held together by a part you printed yourself. You can download a slightly different version of this code that includes additional bracing between the angled arms at http://www.thingiverse.com/thing:415345. For an idea of what’s possible using the “polygon construction” technique, have look at my Polygon Construction Kit for some examples of larger structures with multiple connectors. Happy flying!

Sky high

About the Author

Michael Ang is Berlin-based artist and engineer working at the intersection of art, engineering, and the natural world. His latest project is the Polygon Construction Kit, a toolkit for bridging the virtual and physical worlds by translating simple 3D models into physical structures.

Michael Ang

Share
Published by
Michael Ang

Recent Posts

Top life hacks for prepping for your IT certification exam

I remember deciding to pursue my first IT certification, the CompTIA A+. I had signed…

3 years ago

Learn Transformers for Natural Language Processing with Denis Rothman

Key takeaways The transformer architecture has proved to be revolutionary in outperforming the classical RNN…

3 years ago

Learning Essential Linux Commands for Navigating the Shell Effectively

Once we learn how to deploy an Ubuntu server, how to manage users, and how…

3 years ago

Clean Coding in Python with Mariano Anaya

Key-takeaways:   Clean code isn’t just a nice thing to have or a luxury in software projects; it's a necessity. If we…

3 years ago

Exploring Forms in Angular – types, benefits and differences   

While developing a web application, or setting dynamic pages and meta tags we need to deal with…

3 years ago

Gain Practical Expertise with the Latest Edition of Software Architecture with C# 9 and .NET 5

Software architecture is one of the most discussed topics in the software industry today, and…

3 years ago