Week 2
Computer-Aided Design

Summary
This week we were tasked to model (raster, vector, 2D, 3D, render, animate, simulate, ...) a possible final project, compress our images and videos, and post a description with our design files on your class page.
Approach
Last week I didn't take many notes during the lecture since the topic was very familiar to me, this week on the other hand I scribbled away happily. For my note taking I use an app on the iPad called Concepts, which is basically like an endless whiteboard. My notes this week looked like this:

This may look messy, but there's structure too it.

Working this way I can log my train of thought while structuring the information represented to me. After the weeks lessons are done I scan through my notes for all the yellow bits and jut down a plan.

So I case you can't read my handwriting the first steps in the plan are to go through Sophia & Kenny's sheet and decide which software I want to use.
I have a lot of experience with 2D software, but have been annoyed by my Adobe vendor lock in for a while. So I decide to do a comparison of Illustrator and Inkscape. For 3D modeling I make a little list of requirements:
- free or open source (no more vendor lock in)
- includes some form of history/hierarchy
- has parametric support
The data in the sheet isn't very clean, but scrolling through it I can see consistent patterns in the description of the columns C (Cost), G (Parametric), H (History/Hierarchy). This means I can use some Regex to filter out the tools that don't settle the requirements. I make a copy of the sheet and add my filters to these columns. I also set a filter on empty cells in column A to filter out sub-packages.
A: not empty
C: =REGEXMATCH(LOWER(C:C), "free|open-source")
H: =NOT(REGEXMATCH(LOWER(H:H), "\bno\b|\bn/a\b"))
G: =NOT(REGEXMATCH(LOWER(G:G), "\bno\b|\bn/a\b"))

- red = not interested, different purpose like teaching tool, or financial limitations
- orange = interesting but probably not what I'm looking for
- yellow = stretch goals, interesting projects I would like to have a look at if I have time
- green = definitely trying these this week
- grey = not sure I understand, feels out of scope for this week
I notice none of the tools in the sheet mention 'f-rep' as a geometry representation and wonder what the difference is between CSG and f-rep; so I ask my buddy ChatGPT.

Got it, f-rep is out of scope for this week. Let's check if the packages in the green lines in the sheet enable me to meet all the requirements this week?
- Geometry representation:
- B-rep: FreeCAD
- CSG: OpenSCAD
- Meshes: Blender
- F-rep (not in sheet): out of scope
- Parametric: all of the above in one way or another
- Render: Blender
- Animate: Blender
- Simulate: FreeCAD & Blender
Looks good! Looking at my sheet I notice that SketchUp's geometry representation is described as 'Polygonal surface modeler' which means very little to me. As I have experience with SketchUp for interior design, I ask ChatGPT what's up.

Especially this little nugget helps:
Think of it like:
- SketchUp: cardboard model glued together
- Blender: fabric stretched over a frame
- FreeCAD: a machined block with dimensions baked in
Ok, I feel like I have a good understanding of the landscape of tools. Based on all this I allocate my hours per tool, and set aside about an hour per new software program. I'll document as I go, but make sure to add an hour per documentation per tool.
| 2D | OpenSCAD | FreeCAD | Blender | Documentation |
|---|---|---|---|---|
| 2hrs | 1hr | 3hrs | 3hrs | 4hrs |
Assignment
- Model a final project
- Compress your images and videos
- Post a description with your design files on your class page
Measuring
It was recommended in one of the lectures if you're new to 3D modeling to start with a real life object to work with sizes and scaling. For this reason I decided to model the big design inspiration behind my final project: the glow stick ring!

Luckily I got my hands on a real one, so I use my 'schuifmaat' to measure the thing and draw a little blue print on the iPad.

2D
This week we had to model a final project both in raster and vector form. Basically the image above is a raster version, drawn on my iPad, exported to JPG and scaled and compressed through Photoshop. For our meme channel I also used Photoshop to make this absolute gem of Neilception.

To make a more precise 2D model of this ring I decide to trace it in Illustrator and export the SVG into Inkscape. This gives me a change to compare the format and see what happens when importing them into 3D software. Since this ring is teeny tiny I first need to set Illustrator to use millimeters instead of pixels as a unit.

Load an image (taken from Windy City Novelties) and trace away.
I model half of the ring, duplicate it and joined the two halves.

It's now gigantic, so I resize it and measure the inner ring to be ~21mm.

Cool, that looks good, now let's see what all the fuss is about. I export as SVG and open up the file in Inkscape. I inspect the vectors and it looks clean, I export as a regular SVG from Inkscape and use my fav SVG tool to compare the two.

Besides the viewBox versus width/height parameters there aren't any differences: good to know! Measuring my ring in Inkscape I can indeed see it has changed size.

I resize the shape and this time I export as an Inkscape SVG and have a look under the hood.

Ok I can clearly see the inkscape magic here. Let's see what happens when importing these into 3D modeling software. When importing the Illustrator version I get the following warning. But besides the sizing issues it all looks good. Just to be sure I'll be using the Inkscape SVG from now on.

Freecad
My messy notes export to SVG, so jut for the fun of it I load them into Freecad and explore them in a 3D space. The combination of an endless whiteboard sketching tool with a pencil on the iPad that can quickly be translated into technical drawings in Freecad sounds like a very powerful workflow in the future, but out of scope for this week.
So loading and SVG into Freecad is easy, but this gives me separate paths I have no clue what to do with. To extrude the base shape I'll need a sketch, but how?! I watch this Youtube tutorial and following the tutorial instructions I select the paths that make up the base of the ring and use the 'draft to sketch' functionality.

I then watch this video on how to extrude in Freecad, but as soon as I try to work with my create extrude I get an error message saying I need an active body. Looking at the first tutorial I watched I can see how they already had a body setup and didn't import the sketch for extruding, so I figured I went about it the wrong way and look for another video. Starting over I now first create a part and a body and then import my SVG.

Then selecting the earlier created body I go into 'Draft' mode and use the 'draft to sketch' functionality again, this time the sketch is created inside the body.

Now I would like to add the hole that the glow stick fits through. To do this I select the plane on the side of the ring and go into 'Sketcher' mode. Now I use 'create regular polygon' to add a hexagon to the plane.

Next I go into 'Part design' mode, click the 'pocket' functionality and set 'Type' to 'Through all', now I have a beautiful hexagon shaped pocket in my ring base.

The ring is thicker at the top of the base then the bottom, so I would like to shave a wedge off the side. With my new skills I figure I can sketch a triangle on the side of the base and use pad to have it cut all the way through the base. Then having my wedge as a second body use a boolean operator to cut the wedge from the base. The only issue, how do I align the two body parts accurately. I watch another video and get to work.

Not looking badly, next up: boolean operators, time for another tutorial. Like always with boolean operator it takes a bit of fiddling with the settings, but I find the right combination. Ok, maybe not looking great either, what's that weird sliver doing there?!

Since we're talking about a few millimeters, I really shouldn't by doing this by eye. Since my sketch and base ring body have exact measurements I figure I'll try again on the other side of the base but with more accuracy. I watch a video on constraints in Freecad and sketch a new triangle with exact measurements and constraints.

Pad the sketch, add a boolean cut and tadaaaa.

I fix the other side and add a chamfer to the top edges, this get's a bit frustrating cause I need to find the body in my nested cuts and make it active. This makes me realize it maybe would have been better to make one wedge shaped body and use the intersection boolean, instead of nested cut booleans.

Blender
While modeling in Freecad I found myself theoretically knowing how to do things, but not understanding how to do them in Freecad. Or just being very confused by feedback the software was giving me. Looking back I was a little too excited to jump in, so I looked for very specific instructions and tried to connect the dots myself. While this was very educational, I've spent a lot of time clicking from tutorial to tutorial, shifting through bad ones or ones not applicable to my situation. This not only ate up a lot of time – far exceeding the set aside hours – it also made it really hard to focus.
So this time around I decide to sit myself down for a thorough Blender tutorial first. I look for an account with a lot of content I like and watch a beginner video and a long tutorial on 3D modeling in Blender.
This time I decided to start from scratch instead of starting with a sketch. I built the ring first by putting a 21mm cylinder into a 23mm cylinder and using a boolean modifier to create a hole.

Turns out it's the radius not the diameter I'm setting, my ring is 2 times to big, try again.

Better, now let's add a cube on top to make the base shape of the ring.

Now I need to fill in the gaps between the ring and the box, cause the original ring has a smooth transition from ring to box. My plan was to use separate wedges pieces and shove them in, but I'm now thinking that's more complexity than using one big piece. Let's make the cube bigger so it attaches to the ring at it's widest point.

Now let's add another cylinder again to get ring shape out of the cube.

I want the ring to transition into the boxy part smoothly, so I need to cut a wedge shape out of the cubes side. First I add a cube to overlap the part I want to slice.

Then I cut the cube with the knife tool diagonally on the front and back plane. Then I delete the vertices, edges and faces I no longer need.

Then I add a boolean modifier to cut the wedge from the box.

It works, but I'm now realizing I could've used the knife tool directly on the bigger box.
My plan this time is to only model a quarter of the ring and then duplicate it to make the other 3 parts, so I'm changing the depth (z-value) of the ring and box to half (6mm). And I add a cube to slice the model in half.

Being curious about parametric design in Blender through 'Geometry nodes' as mentioned by Sophia, I watch a video on the topic, but realize this is too complex for the time I have left.
I freaking loooooove Blender, this is soo much fun! But since the rest of the ring is just more wedges and cuts, and there's a lot of documentation left to do, so I shift my focus.
Openscad
In our local lesson on Thursday Remco gave us an OpenSCAD demo. Since I have quite some experience doing 2D modelling and design in code this was very familiar to me.

As an exercise I try to load up the model Remco made us locally, but run into an issue on Mac. Apple support luckily has a work around for this.
We're currently not signing our binaries due to Apple's stringent developer policy (they only accept incorporated entities for non-personal accounts and charges an annual fee), so we haven't been motivated to jump through the hoops.
Once that's fixed I load up the model locally and tweak it a bit to make sure I understand. Because all of this is quite familiar to me I decide to not further explore this and focus on 3D modeling software, since that is all new to me. I may look into OpenJSCAD in the future as I'm more comfortable with JavaScript than the C-like syntax OpenSCAD uses.

Asset compression
For my image compression I mostly use Photoshop. Though I'm familiar with ImageMagick, I'm usually editing my images a bit before compression and I like using Photoshop export interface cause it give me an idea of the file size while being able to see the end result. If I need bulk compression in the future I'll use ImageMagick for sure.

This week I decided to also add some screen recordings to my documentation and used FFmpeg both to speed them up and for the compression.
ffmpeg -i notes_freecad.mov -filter:v "setpts=0.5*PTS" notes_freecad_fast01.mp4
When needed I ask ChatGPT to help me out with the flags for further compression and good browser support. Currently having an issue with Safari/iOS support, but this seems to be a server side issue (try any self hosted video from previous years in Safari). I'll get in touch with Fab Academy on how to fix this.

What would i do differently
- check mattermost for recommended tutorials before googling bad ones
- when learning a new tool, sit yourself down for a demo vid, don't just dive in and make a mess
- do not start in illustrator (duh, but for understanding under the hood)
- trace a hand-sketch or blueprint in freecad directly, start from scratch (managed to do this in week3!)
- think more about the origin and sketch plane (week3)
- make more use of constraints in sketch before going to 3d (week3)
- make the smallest amount of cuts in base shape
- make the smallest symmetric part and duplicate and join it
- don't ignore errors (even though they do in most of the video tutorials I watched, it unnerves me)
- naming parts and layers, look at best practices/glossary
Files & resources
Leftovers previous week
- re-sketch final project
- re-write final project
Further exploration
- Fix Safari/iOS video support
- Would like to have a 5m tour of the following packages:
- Antimony
- CadQuery
- Onshape
- OpenJSCAD / JSCAD (how does it compare to OpenSCAD?)
- Womp
- Understand the grey rows in the sheet, what are these tools for?
- Model the most organic version of my final project with texture in Blender
- Geometry nodes in blender looks cool af, but too complex within the time I have.
- Go from hand sketched to technical drawing