
Week 7: Computer-Controlled Machining
Table of Contents
This week we got introduced to CNC milling. I designed and built a meter-scale wood installation containing floating triangles and a disco ball. It is mounted using press-fit joints and wire. The design is optimized for quick build up and build down. It was fabricated in meter-scale to be used as a decorative element e.g. on open-air music events.
This Week’s Tasks
- Group assignment:
- Complete your lab’s safety training
- Test runout, alignment, fixturing, speeds, feeds, materials and toolpaths for your machine
- Document your work to the group work page and reflect on your individual page what you learned
- Individual project
- Make (design+mill+assemble) something big
- Extra credit: dont use fasterners or glue
- Extra credit: include curved surfaces
Safety Training
The safety training was part of the group assignment. The group assignment page of our lab can be found here.
At very first this week, we had a safety instruction by our local instructor. Possible incidents included fire, which was considered the most dangerous one. Connected with fire are dust explosions. Those happen if a room or a bag is filled with dust and some object catches fire. Another cause could be material (bigger parts, but chips as well) flying away. Kickback was a particular concern. This is an effect that could happen with any motorized tool. With saws and milling machines this can happen if the stock being cut gets canted. Then it can be picked up by the tool and thrown at you. Apart from that, parts could become hot due to friction and if not causing fire you could burn yourself by just touching the wrong things at the wrong time.
Coming to what to do and what not to do:
- Wear safety glasses.
- Do not have any loose clothes on.
- Wear proper shoes.
- Cover wristbands, tie up your hair.
- Know where a first fire extinguisher and a second one was located.
- Do not wear gloves (on any rotating machine, as they could get caught and pull in your hand).
- Always be looking, listening, and smelling while working.
- Remember that your hand is not a tool – never reach in.
- Do not operate the machine when mad, tired, or sleep-deprived. If you had a terrible day, it is better not to make it worse by working under those conditions.
Introduction to CNC Milling
The lecture covered various aspects of CNC milling, including machines different machines, materials, tools, fixturing methods, and techniques for creating joints. The material we were concerned with for this week was plywood, but other materials can be milled too.
The basic process on how to operate a CNC milling machine is to have a sacrificial plate as a bed and mill it flat to be consistent with the coordinate system(s) of the machine. When putting the stock onto this bed to mill it, it must be fixated. There are different techniques for that. Based on the designed parts, a toolpath is generated. This is the path the milling head will follow for milling. There are different strategies to generate one. Before the machine is not stopped, one must be alert about what is happening. Things can go wrong even on the last centimeters.
Ferdi suggested some literature for this week, namely the assignment of one of his previous students and a series of videos on how to benchmark a CNC milling machine. This was an deep dive on exactly what we were about to measure in the group assignment.
The following introduction was part of the group assignment. The group assignment page of our lab can be found here. The documentation for runout and alignment I took from Benedikt’s website. We used two machines: the Carvera Makera at our lab as well as the one at cnc-multitool.
Fixturing
When milling something out of a stock, this stock has to be fixated. There are several possibilities to do that. One option is using a vacuum table. It is fast to produce with them, but they need maintenance. Another alternative is to use screws to hold the stock down on the bed. One hint here is that there are different types of screws: Phillips and Pozidriv screws. They are different in that they need different bits for screwing them. We were advised not to use Phillips screwdrivers for unscrewing Pozidriv screws, otherwise the screws would get damaged. Then there is the possibility to clamp down the stock where different types of clamps or vises can be used. Ferdi suggested not to use those if possible. There is the danger of milling into them and messing up either the stock or the milling bit.

Another aspect of fixturing is how to make sure that two parts that get separated from each other during the milling process (because they are cut apart) do not change their relative position. The solution is to not cut away everything of the material between them, leaving either a thin layer of material at the bottom of the cut trace (known as onion-skinning) or leaving bridges of material between the parts (known as tabs). Ferdi suggested to use rectangular tabs instead of triangular ones.
During the fabrication process, be aware about possible irregularities of the material. It could be that it is bend, has varying thickness, etc. As a result, some parts could possibly not be cut properly or some flat pieces could be cut through which again could result in the stock being made unusable. One solution to the stock being bent is fixation using more screws and more tabs.
Tool Paths
A machine can be told what to do by sending machine code (e.g. G-code) to it. One could tell it manually what to do by typing this machine code. Alternatively, one could generate machine code based e.g. from a given trajectory the machine head should follow. This trajectory is called tool path. Again, this toolpath can be generated from a 3D model. Suppose, one wants to cut something, the outline of the structure to be cut could be the toolpath. This is what computer-aided manufacturing (CAM) software is for. Both mods as well as FreeCAD can be used for CAM. Another CAM software is Estlcam.
When generating tool paths, there are some aspects to consider. Step-over refers to how far the tool is moved when milling subsequent lines. The step-over is how far you are moving — either 100% of the size of the mill or less. The default should be 40%, which results in low forces for the spindle and less momentum. Also, the machine itself does not need to use so much force to go through the material. If you are plunging, you cannot avoid milling away 100%. Stepdown refers to how far the head goes down each round. You do not want to go down 100% of your material thickness. However, you also should not go too flat, as this would apply momentum to the tool wearing it down.
When telling the machine how to moves the rotational direction of the milling bit is to be specified as well. There are two options, called climb milling and conventional milling. The difference is the relationship of the cutter rotation with respect to the direction of feed. In climb milling, the cutter rotates with the feed. In conventional milling, the cutter rotates against it. If one can choose, conventional milling leads to a nicer surface finish. However, not every machine is stiff enough to do that. In this case, climb milling is to be preferred.
Tool paths can be generated with different strategies. There is a 2D contour tool path, which just cuts an outline. There is also a pocket toolpath, which empties a defined area. The trochoidal toolpath can be used for milling away stiff material with a less-stiff machine. Most other cutting techniques are not used by us.
To get a smooth toolpath from almost arbitrary shapes, one can convert a mesh to NURBS (non-uniform rational B-spline). Everything in CAD software is parameterized by NURBS, while everything in Blender is polygon-based (although Blender can handle NURBS, but not well). If you have a mesh, there is a trick to convert it into NURBS. There is a tool on GitHub: https://github.com/wjakob/instant-meshes. With it, you can re-topologize your mesh in Blender so that it consists only of quads (no triangles). Then, you can import it into Fusion as NURBS or as a shape. The advantage is that meshes are not ideal for milling — the milling machine would try to follow every triangle. With NURBS, the machine will follow splines. Also, cannot recognize contours in meshes. With splines, this is not the case. Therefore, you can generate a much cleaner G-code.
Additional recommendations included the program Alchemy, which is a drawing program generating wigglier lines the faster you draw them. It also is reactive to sound.
Tooling
There are different tools that can be mounted to the spindle. The flat end mill is rectangular in its cross section. A default mill bit has a diameter of 6mm. It is available with arbitrarily many flutes. A common number of flutes is between 1 and 4. The more flutes a tool has the more stable is the core of the end mill. An advantage with a small number of flutes is that the chip load can be higher, one is allowed to have more chips during milling without errors occurring. When cutting, one wants to maximize the chip load, because then one can go faster. However, for heavier materials one needs a stiffer tool, thus more flutes thus less chip load. Considering the length of a bit one should choose a bit that is as short as possible and as long as necessary. The longer the bit is the more flexible it is which is not considered desirable. If a bit, however, is too short it could happen that the spindle eventually touches the surface of the stock heating it up.
The flutes of an endmill can be formed either so that they are pushing material down (down-cut) or so that they lift it up (up-cut). Up-cut bits lift the corner material a bit up thus leading to a rough surface finish which might need treatment afterwards. In the case of plywood, chips could be ripped from the top layer of the sheet which might not be desirable. In contrast, downcut bits push the material down leading to more nice-looking edges. However the material pushed into the grove is heated up when milling so one needs to make sure that one has a good chip extraction system when using them. There also are cross-cut or compression bits. Their flutes are formed so that material is pulled up from the bottom and pushed down from the top, extracting a bit of the chips while leading to a nicer finish. Those bits are more expensive.
End mills can also have straight flutes. Those are cheaper to produce and one is able to sharpen them yourself. If one mills an angled surface and one does that by using a toolpath that mills layered 2D contours, the angled surface would contain of steps. Using a ball-nose end mill reduces the sharpness of these steps. However, one could also generate a toolpath that mills a 3D contour both the flat end mill as well as the ball-nose end mill lead to a smooth surface. A caveat of the ball-nose end mill is that when milling a flat surface (which happens when a pocket is milled), the trace of the round end mill can be seen and the surface will not be as flat as with the flat end mill. There is also a bull-nose end mill which is as flat as the flat end mill in its cross section, but has rounded edges. Its advantage is that the edges do not break as easily as with the flat end mill. When drilling holes, drill bits are the recommended tool. They are pointy at their tip which makes them self-centering and they are faster for removing material when drilling a hole. For milling threads, there are special thread-milling bits. For rounding edges, a routing machine can be used with special bits for rounding.
As a source for good end mill sets Ferdi recommended Sorotec where one can look for the sets with the label “Uncle Phil Approved”. When they are just to be ordered for personal use and not for some company or association, one can also order cheap end mills from AliExpress.


Some Design Rules
Design rules for CNC milling included the use of dog bones and the use of several types of joints for making connections. When milling without dog bone fillets, all corners would be not sharp but slightly rounded due to the milling process. The diameter of a rounded edge would then have at minimum the diameter of the tool that was used. This meant that if parts were to fit together, dog bone fillets need to be added. There are several types of dog bone fillets. The most basic one involves drilling a hole at the corner with the center of the hole being exactly the corner. This type was considered the least beautiful one. Another type is the T dog bone fillet. A more refined techniques is to put the center of the milled hole at some point before the corner so that the resulting circle is coincident with the corner. This creates minimal dog bone fillets meaning that they are the least visible ones and they take away the least amount of material. In FreeCAD, dog bones are not designed manually but added using a dress-up feature. In Fusion, a plugin is used.

For adding dog bones in FreeCAD and Fusion, the following resources were referenced:
- dog bone fillets in FreeCAD
- dog bone fillets in Fusion
- article about dog bones
- article about minimal dog bones
Regarding joints, the suggested literature included:
- 50 Digital Wood Joints by Jochen Gros
- Thingiverse – Digital Joints
- Instructables – 50 Digital Joints Poster
There are joints for connecting two planks, including T, I, Gamma, and X shapes, as well as joints for connecting multiple planks at one joint. There are also joints for connecting planes, either rectangular at the end or rectangular at the center. Good joints are those where the joinery is hidden. Angled joints are difficult, but it is possible to design straight ones and then tilt them.
Speeds & Feeds
Speed refers to the rotations per minute (RPM) of the spindle. Feed rate refers to the translational speed of the milling head. They are chosen according to the default parameters of the milling machine. Those can be found e.g. in the software Fusion. If the machine sounds like it is suffering, go slower.
Chips could be too large or too small. Powder-like chips indicate overheating. Too large chips imply a large force being applied to the tool. If this is the case, stop the machine, let it cool, and clean everything. Start with low speed and feed rate and manually move the tool small steps. Adjust speed and feed rate based on chip size: if chips are too small, increase the feed rate; if too big, also try increasing feed rate and adjust speed and stepdown accordingly. A chip breaker tool can be used in case chips are too large and this problem cannot be fixed.
Though stepdown doesn’t affect feed calculations theoretically, in practice it matters due to machine rigidity. Going slow can help reducing heat, but excessive RPM causes friction, which may lead to friction or material building up on the tool.
Alignment
Alignment refers to if the spindle is perfectly orthogonal to the milling surface. If a spindle is not properly aligned this could lead to a sawtooth pattern in the cross section.

To verify that the spindle is perpendicular to the machine bed, we mounted a dial indicator onto a rotating arm attached to the spindle and swept it across the surface of the bed. If the spindle is not perfectly perpendicular, the dial indicator will show variations in height as it moves, indicating misalignment.

However, this method involves several potential sources of error. Most importantly, we could not confirm that the machine bed itself is perfectly flat—unlike a granite surface plate, a precision-machined cast iron table, or a milled steel machine bed. Since our bed is made of MDF, it is highly sensitive to humidity and temperature, which can cause slight warping. Additionally, the arm used to hold the dial indicator was 3D-printed, which introduces a significant risk of flex and play in the setup, further affecting measurement accuracy.
Runout
The runout refers to how much the center of a tool’s rotation differs from the tool’s cross section’s center. To evaluate spindle runout, we used a dial indicator. Ideally, a 0.001mm dial indicator would be used for precise measurement, but we only had access to a 0.01mm indicator. As a result, we did not expect highly accurate readings. Additionally, the measurement was taken on the outer surface of the chuck, which is roughly equivalent to using a straight test rod—but without the certainty that the rod itself is perfectly true. In such a setup, any measured runout could originate from the rod rather than the spindle. However, we assumed the chuck to be reasonably concentric with the spindle for this approximation. We observed a runout between 0.05mm and 0.075mm. However, due to the limitations of our setup and the potential for various sources of error, these measurements should be considered approximate and not highly reliable.

Designing the Dreieck
I had multiple different ideas in mind. The most straight forward one would have been to do something similar to Playatech: furniture that is to be assembled very easily, just with press-fit joints. Another option would have been a synthesizer stand for a friend. I also thought about building a DJ table or a pavillon. However, I decided against those options. Furniture for cultural events we already have enough in our local community. A pavillon would have been too big considered the material we have been given. When considering the synthesizer stand, I already fell in love with my final idea so I saved the synth stand for later. I decided to do a big, decorative wood installation.
For further inspiration, I checked big origami installations, temples and sculptures from burning man, low-poly models using Blender and Fusion Slicer, veneers artworks from both a book from my peer Matthias and a previous assignment, reciprocal frame and tensegrity designs (incl. this tutorial for FreeCAD), topology optimization (which seems to be possible also using blender and FreeCAD following this YouTube channel), and pictures by M. C. Escher. Other tools I looked at but I ended up not using them were FlatFab and a Blender plugin for slicing meshes into layers.
My final idea was to make a decorative wood installation. I did not want to have something to be hung on the wall, but it should be something standing inmidst a room. Therefore, I thought of some tower-like shape. Since triangles are a nice, I imagined a prism with a triangular footprint. I liked asymmetry, so I first thought of having an irregular triangle as a footprint. In the lecture I learned about tensegrity and reciprocal frame and I wanted to incorporate at least one of these concepts in the design.

However, I soon found that this design would have required way too much of an effort for this week. Therefore, I went on and simplified it to only contain the covers and the skeleton.



To calculate the necessary measures, I needed to do some math. Mostly, I made use of the sine theorem, the cosine theorem, and the angle bisector theorem.





The design and the parameterization at that time was way too complex, so I decided to simplify the footprint to be an equilateral triangle. I stripped down the parameterization accordingly.

Then, I talked with ferdi about the design. The faces at side of the covers were difficult to fabricate. He said that even if they look nice in CAD, they might turn out badly in the final design. I should try to make something awesome using straight cuts as much as possible for this assignment. For that reason, I omitted the covers and thought of a possible design where the inside of the installation is not covered, but brought in the center of attention. The idea was to have smaller triangles floating in between the two bigger ones being tied with some wire.



Milling the Dreieck
Checking Material & Clearance
The plywood sheets were stored in the basement of the building where the Fab Lab was in. They were 18mm thick, the dimensions were 1500x2500mm. Due to the bed dimensions of the available CNC milling machine, we cut them down to be 1500x2400mm. One specific sheet was assigned to each of us.


When dealing with the wood, Ferdi suggested to never trust that the wood is of constant thickness. To get an idea of how thick the joints were to be set we have been recommended to create a clearance comb as well as measuring the thickness of the wood. This time, the diameter of the tool did not make any difference, because the toolpath would be generated so that the tool will mill around the contours. The runout, however, is not compensated, but this would be as big as a few millimeters.
For measuring the thickness manually, I measured each side of the sheet four times using a caliper. Most measurements were within an interval of 17.65mm and 17.75mm. One or three measurements yieldet values as large as 18.03mm.

The comb I desiged so that it reaches from 17.75mm to 18.15mm in 0.05mm steps. Due to technical reasons regarding the CNC machine we were using, I had to generate the toolpath with Fusion360. For generating the dog bones, I used this plugin.
















From all tests i found that 18mm is still a good slot width. It is not too tight, rather a bit too loose, but I planned to tighten that up using wires, so I added holes in the design of the installation.
Preparing for Milling
To prepare the design from FreeCAD for milling, I exported it as .step
file and imported it into Fusion (‘File’ -> ‘Upload’). I added the dogbones to the joints using the aforementioned plugin. Then, I created a nesting assembly and generated the toolpath as described above. The distance from each part to the edge of the to stock was 2cm.

Disclaimer I
Everything from now on was done after the CNC machining week but before the midterm review.
Excursion to cnc-multitool
For milling our parts, we went to cnc-multitool. They let us work with their milling machine which had the dimensions 1.50m x 2.50m. For fixturing, we used the vacuum table of the milling machine. We are very thankful that this was possible!





Milling
I then milled my parts. The spindle speed was 10000rpm, the feed rate 800mm/s, and the step-down 6mm.







g00 z0
).






Removing Tabs & Adding Chamfers
Back at the lab, I separated the triangles from each other and cleaned the holes as they did not get drilled through for some parts.





Simple Assembly
Before assembling everything, I cleaned the joints from fringes. Two joints needed to contain tabs due to how the parts were nested. Those, I needed to remove as well.


Full Assembly
Disclaimer II
Everything from now on was done between Midterm review and before the final project presentation.
Adding a Disco Ball
At this point I presented the installation to the music collective I built the installation for. One person (his name is Lennert) had the idea to add a disco ball to it for extra flair. The disco ball was available in the collective’s storage. I changed the assembly accordingly. The diameter of the disco ball was 30cm. The distances were chosen so that there were 20cm space in the vertical dimension between each of the triangles and between the first and second triangles and the disco ball. The distance between the two smallest triangles kept unconstrained. The idea was to put everything together using some sort of thread or wire.

Preparing the Wire
At first, I wanted to use transparent handicraft thread from the hardware store. I bought that and lyster clamps which in total was 5€. However, the day I planned to build everything up I could not find the thread anymore. Also, it was sunday so there was no possibility to buy a new one. However, in my room I found several meters of washing line I bought earlier for a nother project. This did not fit into the lyster clamps. However, I found that after removing the mantle the resulting blank steel wire was fitting perfectly.

Types of Cable Connections
There were different ways in which I used the clamps together with the wire. Those can be seen below.


Rigging the Triangles
The wire was fixed by having a clamp holding it at the uppermost triangle. There were three wires like this threaded through each of the three holes in the upper triangle. The inner triangles where threaded onto the those wires.




Rigging the Disco Ball
For rigging the disco ball, I mounted a structure of three wires connecting at the center at the top and the bottom triangles.


Increasing the Stiffness
There still was the problem that the structure was able to bend around the horizontal axis. The stiffness needed to be increased. This I did by mounting an X of wires on each side of the triangle. I did so in the following way: number the legs of the structure 1, 2, and 3. A wire was mounted at the bottom of leg 1, threaded to the top hole of leg 2 and mounted again at the bottom of leg 3. This I repeated three times to thread a wire through the top of each leg. After tightening, the structure was very stiff. Also the problem of the legs accidentally sliding out of the triangle and the structure falling apart could be mitigated in that way.

Final Result: Dreieck


Reflections
What I Learned
- I learned more about CAD and parametric design, especially with the use of more parameters. I also learned how to use the FreeCAD assembly module.
- I learned that when nesting for CNC milling the gaps between parts can be maybe 1mm larger than the tool, but not larger. The reason for that are tabs. If the space between parts is too large (but not large enough to have additional stock material between them), such as it is the case with 10mm then the tabs would not be large enough to bridge the whole gap. In this case, I went with a distance of 10mm, because I did not know better. I had to manually place tabs at the opposite sides of the gap to have a “double tap” consisting of two tabs.
- The following I learned about using FreeCAD: When copying an object, deselect the spreadsheet to ensure the references are correct. When the assembly module buttons grey out, it meant the assembly is deactivated, and it could be activated by double-clicking it in the tree view. Use operations to multiply operations (like Linear Pattern), instead of creating unnecessarily many sketches. In assembly, select points or corners instead of edges or faces. Have multiple different spreadsheets for different components. This way, if one decides not to use a specific part, I wouldn’t clutter up one spreadsheet and also larger designs can be changed more easily.
- Cross-cut bits are not meant for drilling, while a normal end mill might be used though. Best, however, for drilling holes is a drill.
What Went Wrong
- The assembly module in FreeCAD is nice but a bit tedious to use when reparameterizing your part.
- When reparameterizing an object, the FreeCAD solver changed the design so that constraints still were fulfilled but it was not as indented (example: the distance from two points was set, but the order of the two points was not encoded in the design using constraints, so one point ended up to be at the wrong place after reparameterizing).
- First, I came up with a very complicated design where the parameterization was also rather complex. I went on and simplified it more and more until the parameterization was easier to handle.
- I took much time for the design. However, it was important for me to have that done properly.
What Went Well
- I incorporated fabrication details into the design of the object (triangles that are inside of each other).
- The final design is something I am happy with.
- I did not need to file the joints more wide thanks to the comb I made earlier.
- The object can be assembled in a fast way and by only one person.
What I Would Do Differently
- I would start with equilateral triangles for the design right away.
Digitial Files
Use of Language Models
During writing this report, I used the following prompts asking ChatGPT 4o mini to
- form bullet points to prose text.
1Take the following bullet points and form prose text out of them. Do not add any additional information. Only use those words used in the bullet points and, additionally, those that are absolutely necessary to build grammatical sentences out of the bullet points. Formulate those things in past tense that are describing what has been done (like in a report) and those points that describe facts in present tense. Correct spelling mistakes: 2 3<insert bullet point>