Computer-Aided Design

This week's assignment is to model a possible Final Project in different 2D and 3D CAD software.

* All STL and original editable files can be downloaded here.

* Software I tried: Illustrator, OpenSCAD, Fusion 360, Grasshopper, and Blender.

This week was both interesting and overwhelming to me. There were too many new things to learn, especially when my knowledge of 3D design is almost zero. I only had a very BRIEF introduction about creating standard primitives with 3Ds Max when I went to college, and it has been almost 10 years. Below is one of the models I designed with 3Ds Max before:

Another thing that made me overwhelmed is the introduced hand tools at the Fab Lab. Some of them are quite tough for girls. The good news is I finally managed to use a machine saw and cut a piece of wood. Even though, I need to make sure that my Final Project will be fabricated easily with computer-controlled processes.

My plan for this week was to design 3D-printable modules that have some similarities with the modular robot in my mind (see idea #2).

2D design

I've already used 2D Design software before in college. In order to allocate more time for learning new 3D software, I went ahead with the vector-based Illustrator which I already know how to use. For this assignment, I decided to simply draw a possible logo for my Final Project.

Illustrator vs. Photoshop

In short, raster or bitmap graphics (.jpg, .jpeg, .bmp) are made up of a bunch of tiny dots, while vector graphics are made from mathematical paths. Because of that, vector graphics are easier to be scaled and modified without loss of quality or resolution.

I think the most basic concept of Photoshop is to draw and color "pixels" in separated "layers", then merge them to finalize the design. On the other hand, we draw shapes in Illustrator by placing paths in a given 2D space thanks to dimensions and angles, then combine or trim them to form the desired image:

ImageMagick

As mentioned in the previous assignment, I'd like to use ImageMagick to compress images from now on:

I also put the .svg logo on the navbar of the website.

3D design

Almost all 3D modeling software can be divided into two categories:

During this week, I intend to try at least a solid modeling software and a shell modeling software.

OpenSCAD

Eduardo briefly introduced us to OpenSCAD before his Grasshopper session, and I found the idea of a script-only based modeler quite tempting. For my Final Project, I have a few options to model the connectors of blocks, such as built-in magnets, LEGO-compatible bricks, or hinges. I decided to try the LEGO option using OpenSCAD. I followed this tutorial, with some customization. My LEGO brick has a square shape and much thinner.

One of my favorite things about OpenSCAD is that I can modify a few variables to change the design of a whole object by TYPING (no need to select or click any button) or to check if certain parts of the modules can join together without any complicated pre-calculation. In short, I can incorporate parametric design fast and algorithmically.

When I uploaded it to Sketchfab, it was a piece of white brick on a light gray background. So I directly edited some settings for the model, including colors, lighting, and environment on Sketchfab.

Since I would like to go a bit deeper and try an object-oriented approach (I usually code in Java), I gave it a second try. I created a flower-shaped vase by defining my own module shape. Detailed codes here.

TL;DR

Things I learned:

The official cheatsheet is here.

Conclusion

I LOVE OPENSCAD! I've never imagined that I could create my first 3D Design in such a precise and straightforward way. It was such a nice experience for someone who has a programming background like me. It took me less than 10 minutes to create each model, and I was so happy with the results. OpenSCAD is really powerful and has many potentials. I'd like to explore it more in the future.

Fusion 360

Before the class, I took a look at previous students' websites and noticed that many of them chose to use Fusion 360. That's why I tried it next. Since none of the "traditional" solid modeling software (with the concept of modeling structural parts and making assemblies) has a Tue-friendly and intuitive UI, I watched MANY online tutorials in order to get used to the workflow. This is a good tutorial. After watching his series, I could create my first hinge connector model, and I was quite happy with it.

Below is the how-I-did-that videos:

I had a few problems modeling the hinge: I created the first sketch before creating the component (that led to many inconveniences because I had to copy the first sketch -> mirror the copy -> delete the copy to get the second sketch), and I forgot to include tolerance in my design. After struggling for a while, here is the model on Sketchfab:

TL;DR

Things I learned:

Conclusion

I think Fusion 360 is pretty mature and its GUI is more intuitive than some other solid modeling CAD software. I can follow the tutorials smoothly, and imagining how to create bodies from sketches or how to join them is not an impossible task. I'm quite sure that I will use Fusion 360 and OpenSCAD to model the main parts of my Final Project (if there is no potential limitation regarding switching between them). However, the fancy idea of "parametric modeling inside a NURBs-based software with the help of a node-based visual programming environment" convinced me to try Grasshopper.

Rhino and Grasshopper

I followed this tutorial to learn Grasshopper without getting my brain tangled by its "spaghetti" workflow. However, my brain still exploded when I tried to create a press-fit enclosure for my robot block. In the end, since I was not there yet, I went back to this tutorial and simply created the same parametric rotating table.

I tried to input some customization, mostly with using the same sliders to control both extrusion and offset at the same time:

In the below video, I played around with the number sliders and the central point to see the table transforming:

TL;DR

Things I learned:

Conclusion

More or less I understand how Grasshopper works after following the tutorial. The concept of input, logic, and output is nice, but the UI always looks like a mess. In my opinion, Grasshopper is more complicated and redundant than OpenSCAD in terms of parametric design. For example, the below 5-minute code will create the same rotating table which took me 3 hours using Grasshopper:


    x = 16;
    y = 9;
    h = 1;
    thickness = 1;
    angle = 10;
    shape(x, y, h);

    for (i=[0:3]) {
        rotate([0, angle * i, 0])
        shape(x + thickness * i, y + thickness * i, h);
    }

    for (i=[0:2]) {
        rotate([0, angle * i * (-1), 0])
        shape(x - thickness * i, y - thickness * i, h);
    }
    
    module shape(x, y, h) {
        difference() {
            cube([x,y,h],center=true);
            translate([0,0,0])
            cube([x - thickness,y - thickness,h],center=true);
        }
    }

In terms of solid mechanical objects, I will definitely go back to Fusion 360. However, I think Grasshopper is considerable when we need to design a large-scale and fancy construction. I still want to try an object-oriented approach by defining my own Cluster, hence I'm thinking about giving it the second try in the next assignment.

Blender

I've had multiple headaches dealing with editable poly in 3Ds Max before, so I was totally not interested in trying Blender. But I'd like to review again what I know about mesh-based modeling, so I created a simple and random enclosure for the modular blocks of my robot (I have zero knowledge about circuit design anyway).

And this is what happened when I exported the .blend file to .stl and opened the object inside Fusion 360. In order to continue working on the model, I had to convert the Mesh Body to BREP.

Here you go the model on Sketchfab:

TL;DR

Things I learned:

Here is a useful cheat sheet.

Conclusion

To be honest, I've never been a fan of the concept of modifying surfaces, curves, edges, vertices, and meshes. I personally prefer tools that give me the feeling that I'm being precise and formulaic. Blender is an amazing software and it gives its users a lot of freedom, but manipulating the whole model as if it's an artwork is simply not my thing. However, for some specific parts of my Final Project (for example the dragon's head), I might need to incorporate Blender and figure out a way to work on exchanged files from Blender in Fusion 360.