Sunday, May 3, 2015
Modeling Dual Polyhedra
For my first project at Pier 9, I wanted to get up to speed with the Autodesk tools quickly. So I decided to model some "easy" things -- though the learning curve was steep, the tools are powerful and this turned out to be a great way to learn the ins and outs of Autodesk Inventor (I'm using the 2015 version, which has some interface differences -- not always significant, but sometimes frustratingly so as a lot of the documentation seems to be for Inventor 2014).
I've always liked the Platonic Solids for their beautiful symmetry and simplicity: there are only five of them. A neat fact is that each platonic solid has a dual that's formed by making the center of each face into a vertex. The tetrahedron is its own dual, while the cube and the octahedron are duals, as are the icosahedron and dodecahedron. A neat way to illustrate this is by nesting a platonic solid inside its hollow dual, so the vertices (corners) poke out the faces of the dual. This is also a way to show off 3D printing, as fabricating nested objects is difficult or impossible with conventional manufacturing, for example the traditional Chinese nested "Family Balls".
So let's make some polyhedra! There are several ways to go about this. If you are skilled at spherical trigonometry, you can calculate the dihedral angles at which the faces meet (or you can cheat and look it up). But there's an easier way using the natural constraints of the shapes. After all, there's only one way to build a cube out of six squares: if the edges are constrained to meet, all the angles will be naturally 90 degrees. Imagine building a cube from a bunch of squares hinged at the edges: after three edges at a corner are attached, there is no freedom for the hinges to move; the faces are locked in a perfect corner.
So that's the method we will use to build the polyhedra and their duals. Because of my inexperience with Inventor, it took me several tries: the path I show you here is the wisdom accumulated from Doing It Wrong. First of all, you can't do this in a Part (.ipt) file (the first thing I tried) because there's no easy way to enforce constraints like there is in an Assembly. But we will start with a Part file that is a face, and assemble the faces into a polyhedron.
Step 1: Starting a square face
Let's start with a cube because that should be easy, which means we will start with a square face. Let's make a square as above. Start a new Part (.ipt) file and start a new sketch: you can use any plane, but a pro tip is to project the origin (using the Project Geometry) command into any new sketch so there's always a good reference point. Because we want a point at the center of the face, let's keep the origin at the center and dimension four edges an equal distance away.
Step 2: Building a solid face
Once you have your square, you can Extrude it into a solid profile. We will need to keep track of which face is at the origin, so let's add a Hole that's countersunk away from the origin. That way we can tell the difference between the two sides: the hole's wider side is on the origin plane. Save your part file.
Step 3: Starting the Cube assembly
Now that we have the sides, we can assemble them into a cube. Start a new Assembly (.iam) file, and Place a side that you just made. You probably want to place one side Grounded at the Origin so use that option from the Place menu for your first side. Now place two more sides, to make assembly easier, you can rotate them in the X or Y directions in the Place menu so they wind up in the the right orientation in approximately the right place. Now might be a good time to go back to your Part and turn off the sketch visibility so the dimensions disappear.
Here's the trick that makes this all work: constrain the edges of each face to snap together. From the Assemble menu, select Constrain: in the Constrain panel use a Mate type with an offset of 0.0. Click on two face edges and they will snap together. (If they don't meet, set the Offset to 0.0). Do this with the three edges of the the faces and they will make a perfect corner! (Don't forget to select the edges on the origin face: the one with the wide side of the countersunk hole).
Step 5: Keep on constructing
Add three more face parts, rotated as necessary, and constrain their edges to mate with their neighbors like before. You don't need to constrain every edge pair; two per face are enough but you can certainly do all of them if you are a completest. You will likely need to rotate your view to expose all the edges. When you are done you will have a chunky cube as shown.
Step 6: Complete the cube
To complete the cube, go back into your face Part file, and change the Extrusion direction. Right-click on the Extrusion feature in the menu, and reverse the extrusion direction by the icon button with the little black arrow. This means the Extrusions are now internal to your cube: if you go back to the Assembly you will see the neat cube as shown.
Step 7: Create the dual octohedron sketch
Each face of our cube has a center point, conveniently highlighted in yellow (because we Projected the origin in our original face sketch). All we need to do to construct our dual octahedron is to connect those points: each is a vertex. (Annoyingly, you can't do this in an Inventor Assembly; we need to get back to a Part file before we can sketch in 3D. Because the documentation on this seemingly simple task is out of date, this took me a long time to figure out; but it's pretty easy, plus you get your dual separated out as its own part file.)
Here's how to do it in Inventor 2015: add a new empty part to your assembly from the Assemble->Product->Add Part menu. Double-click on your new part, this will gray out the cube as you are editing your new Part. Start a 3D sketch from the Sketch menu. Add edge lines between all the vertex points (face centers), the line tool will snap to each point and your line will turn constrained blue as shown.
Step 8: Convert the octahedron 3D sketch to a solid
Once you've added all the edges, it's time to convert them into a solid. Finish the 3D sketch, then convert each triangular face into a patch by selecting the Patch tool in the 3D Model tab, and selecting the three edges of a face. Unselect the "Automatic Edge Chain" checkbox. You will need to rotate around your model to get all the faces, as it's hard to see which faces have been completed because the patches are transparent. (There's likely a way to change this visibility but I haven't found it).
Once all the faces have been Patched, you can Stitch them all into a solid using the Stitch tool in the 3D Model tab. If you missed a face, it will complain: no worries, just make sure all the faces have a Patch. Then you can go ahead and save your new octahedron part, and go back to your cube Assembly.
Step 9: Your nested hexahedron (cube) and octahedron
And there you go, you have created nested dual polyhedra! I went in and made the cube face holes bigger so you can see the octahedron inside, and selected different materials for the rendering above. You can now 3D print these or whatever you want to do.
I showed the steps for a cube/octohedron dual because it was simple, but you can use the exact same steps to make any Platonic solid. For icosahedra, octohedra, or tetrahedra, start with an equilateral triangle face; for a dodecahedron, start with a regular pentagon. For the icosahedron above I printed a test version with a nested dodecahedron. I will print out the whole family when the printers at Pier 9 are reloaded with resins in contrasting colors so the internal duals are more visible. Until then, share and enjoy and I hope this helps you with your Inventor skills.