HTMAAA Week 4 / 3D Scanning and Printing

Assignment

group assignment:

  • test the design rules for your 3D printer(s)

individual assignment:

  • design and 3D print an object (small, few cm3, limited by printer time) that could not be made subtractively
  • 3D scan an object (and optionally print it)

Group Assignment

We did the famous overhand and 3d printer test that evaluated different parts of the 3D printer calibration.

Group Assignment

as you can see, it started to really shirt from 40 degrees and also 55 degrees, so it might have been something wrong with the x axis belt.

Some memos after group assignment

.4 mm nozzle Prusa Printer MK4 gyroid make the strongest infill brim adds surface area

binary gcode ok for new matt has paper inside of filament great at covering layer lines

Scanner is called Ferret and uses software for the scanning

Each printer has their own slicer but can also be adapted by other cross printing slicers

hold round objects in scan with putty

Individal Assignment

Scanning!

Scanning was actually a bit harder than I imagined, mainly because many of the things that I was choosing were either really reflective, or they didn’t have a flat surface, making it really hard to get a good scan.

So we had to improvise, using one of the prints that TA Alfonso had printed out while explaining things about the 3d printer to us.

first print scanning ui

Turns out that putting it up on something else worked very well, and it was actually easier to scan the object!

Printing Gyroid

So because I was kind of used to just regular 3D printing, I decided that I wanted to make something that I could do with code!

I initally started to work out how OpenSCAD would work, by making something simple at first. It also helped me understand a little bit of the calibration behind the 3d printer, as you can see that there was a bit of gaps in the layers in the print.

first print

Then I decided that I wanted to make some sort of Gyroid, and I found out that there were many different ways to do so. Here was a site that had specific software to do so.https://www.oraibkhitan.com/mslattice/

I stumbled upon this website and this crazy site for all the algorithms that were showcasing how to make the gyroid forms out of functions rather than just modeling the parameters of the width and height of the object. https://xyzdims.com/tag/triply-periodic-minimal-surface/

So what I decied to do was make the Fischer-Koch equation into a function, and then use that function to make a 3d model of the Gyroid.

Rendering of Gyroid

My file kept breaking because I was rendering something that was a complex calculation, leading the program to hang and crash eveytime that I tried to create a simulation from it. It turns out that the resolution of the rendering was too high, so I had to lower it to make it work. It also turns out that rendering to the GUI and rendering it out as a mesh were totally different things, and the mesh rendering took waaaaaaay longer.

Time for rendering

JSCad could have worked too, but it was really rendering much much slower than OpenScad. Also, it was running all the code in WASM in the browser, so it might be a bit slower than me just running the OpenScad on my computer. https://github.com/jscad/OpenJSCAD.org

So I decided to make a new file and bake out the renderings each time, making sure that the calculations weren’t too complex.

Because OpenScad doesnt support implicit functions, I had to use a for loop to sample all the points in a space to determine if they were part of the object or not.

So if we are making something like a cube, it would be like this:

resolition = 1;

for (x = [-w/2 : resolution : w/2]) {
    for (y = [-w/2 : resolution : w/2]) {
        for (z = [-w/2 : resolution : w/2]) {
            // Evaluate Fischer-Koch equation
            val = max(abs(x), abs(y), abs(z)) <= w/2;
            
            // If the result is close to zero, place a cube
            if (val) {
                translate([x, y, z])
                    cube([resolution, resolution, resolution], center = true);
            }
        }
    }
}

We would loop over the X, Y, and Z coordinates, and then evaluate the Fischer-Koch equation for each point. If the result was close to zero, we would place a cube at that point. It basically became something like this.

We can see that we are evaluating over 0.1, which is not the most ideal way to figure out the detailed points, but it seems the best way to do it because we can make the resolution the singular parameter in which we can change the resolution of the simulation.

Memo for any future people coming in: CTRL - D to comment , CTRL + SHIFT + D to uncomment


resolution = 3;  // Step size for discretization
r = 200;            // Range of x, y, z coordinates

for (x = [-r : resolution : r]) {
    for (y = [-r : resolution : r]) {
        for (z = [-r : resolution : r]) {
            // Evaluate Fischer-Koch equation
            val = cos(2 * x) * cos(2 * y) * cos(2 * z) - 
                  sin(2 * x) * sin(2 * y) * sin(2 * z);
            
            // If the result is close to zero, place a cube
            if (abs(val) < 0.1) {
                translate([x, y, z])
                    cube([resolution, resolution, resolution], center = true);
            }
        }
    }
}

I also made a neovius one that I made, but I didn’t print out due to being scared of supports!!

Edit: After going to office hours, they told me that I could actually use the bamboo and try to make the supports out of the organic type rather than the rectangular default ones. This would significantly reduce the amount of supports that I would need to make, and it would also be a lot easier to polish in the end.

I made it so that we only use the supports from the bottom, as well as manually setting the supports that I think I needed, everything could theoretically be done without supports.

bamboo

It turned out well! Some of the manual supports that I added turned out well, but some of the overhangs and the degrees of freedom turned out to be the downfall of the model.

There was also some parts that just spaghettified out, where the curvature of the object and the angle of the actual prints.

I did like the organic tree type supports that were much much easier to work with and take out.

I was so surpised that I could make out the top without supports, and it just made everything so much easier to print.

bambooprint

Here is a picture with a better angle

neovius

I also talked with Alfonso, and he told me maybe there was a possiblity that we didn’t need supports at all! Oh dear god. What was I doing?

I also asked Alfonso to print one out using no supports in the CBA cause alot was already used up.

no_support_koch

And finally, here is all of them in their glory

all

This is the final files that I made for the assignment! You can find the files here https://www.thingiverse.com/thing:6782442

I also made a blender script for taking an STL and rendering it out as a video.

As always the file for the week can be found here


https://handandmachine.org/index.php/2021/10/23/extruder-turtle/ https://www.deannagelosi.com/coding-cups/

https://www.bathsheba.com/sculpt/

// lion image https://www.yankodesign.com/images/design_news/2017/05/the-incredible-way-to-3d-print-hair/3d_lion_5.jpg

Hairy Lion STL https://www.thingiverse.com/thing:2007221

How to make a 3D printed hairy lion https://www.youtube.com/watch?v=TXgrE5z4a5o

Crazy people making brooms out of 3D printers

https://www.youtube.com/watch?v=8jT2U22zWLk

Or making research papers out of this https://www.gierad.com/assets/3dprintedhair/furbrication.pdf

Publish on 2024-09-25,Update on 2024-12-11