Skip to content

Computer-Aided Design

Hero Shot

Assignment

  • Model (raster, vector, 2D, 3D, render, animate, simulate, ...) a possible final project.
  • Compress your images and videos.
  • Post a description with your design files on your class page.

Vectors, Rasters, and Everything 2D

(TODO)

Inkscape, The Most Used Software in My Fab Lab

Which is Inkscape. This open-source app is one of the most used here in our fab lab, and I love it. You can do (almost) anything with it. To begin, I had to install it (it was already installed, but I'm adding this for people who have not yet installed it), so I opened the terminal and used Winget to install it:

winget install --id Inkscape.Inkscape

Once installed, I opened it up, and this is what Inkscape looks like:

Inkscape UI

In Inkscape, I created the text and the image of my final project, as you can see below.

GIMP

In GIMP, I added the background image.

Background image from Frosti Gíslason

Modeling, CAD, and Everything 3D

Here we go, time for my least favorite type of software that we use here in the fab lab. I have never been able to use any other modeling software than Tinkercad. This week, I really want to get into Blender as it looks to be incredibly powerful, so that is something I would like to explore, same with FreeCAD. I have tried countless times to get into FreeCAD, but it has such a steep learning curve, especially for someone who has never used professional 3D CAD software, that I always give up. One thing I have promised myself this week is to not give in to the calls of Fusion 360! I do not personally like their business practices, and I will only use Fusion if I do not like anything else. But first, a small side quest:

Feature FreeCAD SolidWorks Solid Edge Fusion Tinkercad Onshape Blender OpenSCAD
Cost for personal $0 $48 / yr $0 $0 $0* $0* $0 $0
Cost for commercial $0 ~\(4000 + ~\)1500 / yr* ~$1000 / yr $680 / yr $0* $1500 / yr $0 $0
Parametric
Open source
Operating systems Windows, macOS, Linux Windows Windows Windows, macOS All All Windows, macOS, Linux Windows, macOS, Linux
Runtime Local Local + cloud storage Local + cloud storage Local + cloud storage Cloud Cloud Local Local
Features ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐
Ease of use ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐

This table is from Digikeys Tutorial for FreeCAD

"Small" Linux Side Quest

Before we start, this might seem irrelevant, but trust me, it is not. To get started, I decided to start with installing WSL (Windows Subsystem for Linux) as Neil kept recommending it throughout the meeting. First things first, I installed WSL with this command that I ran in PowerShell as an admin:

wsl --install

Which I found from this tutorial. Next, I went on a small side quest to get oh my posh installed, but that is not relevant here, and this is already a side quest, so... Anyways, let's continue. The next day, the Fab Lab Iceland community had a meeting discussing the meeting, and the conversation went a little to Antimony, and I was intrigued. I guess I had not paid attention when Neil was talking about it, so I googled it and decided to give it a try, but it was only for Linux, so defeated, I gave up until I saw that WSL can run GUI apps, including Antimony. So I tried it, and it worked! I just opened up WSL and typed:

sudo apt-get -y install antimony

Went into the start bar and opened up Antimony (Ubuntu), and then I could use it just like any other native Windows app!

Image of Antimony running in WSL on Windows 11

Antimony is a really cool concept but a little too technical for me, but maybe someday I will try to understand it. But that was when I decided to close this small side quest and installed FreeCAD.

A couple of errors

Now something I want to mention, it did work completely fine, but for some reason, I kept getting these errors in the terminal, but since nothing was going wrong, I just ignored them.

MESA: error: ZINK: failed to choose pdev
libEGL warning: egl: failed to create dri2 screen
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen

I used ChatGPT and asked it why I was getting these errors, and it told me it was something connected to Vulkan, OpenGL, or DirectX, so I just decided that if it works, it works, so no need to mess around with it and break it.

FreeCAD, The Open Source CAD Software

FreeCAD is a free and open-source parametric 3D computer-aided design (CAD) software primarily used for designing real-world objects of any size. It is especially popular among engineers, architects, designers, and hobbyists who require precise modeling and customizable workflows. (From ChatGPT, Prompt: What is FreeCAD?)

To begin, I opened up PowerShell and used what has quickly become my favorite tool on Windows, Winget. To install FreeCAD, I typed:

winget install --id FreeCAD.FreeCAD

In the same Fab Lab Iceland meeting, Svavar Konráðsson talked about a FreeCAD interface addon that he had been using in his lab called Ribbon. I thought it looked nice and followed this tutorial that he made on the Fab Ísafjörður site.

Difference between normal FreeCAD and Ribbon, Image from Svavar Konráðsson

After installing Ribbon, I got started designing, loosely following this tutorial from DigiKey.

After designing the original shape, I was going to add a USB-C port on the side, but it just would not work. I kept getting this error:

Subshape not found

First, I thought that maybe I did not have enough constraints, but after trying to redraw it, I noticed that I had accidentally enabled Construction Lines. After making sure nothing that was not supposed to be a construction line was a construction line, it worked, and I was able to finish my final project mockup. I think I am going to stick to FreeCAD as I want to try to use only open-source software as much as I can! Here you can see my design. I did not know which one was better, so I just decided to add both options. Personally, I like XHTML, but I am not sure how widely supported it is.

Design Files

How to Export HTML or XHTML files from FreeCAD

I was able to make the files above by going into file, export and selecting WebGL/X3D (*.xhtml) or WebGL (*.html)

Testing More CAD!

After FreeCAD, I decided to also check out OnShape and SolidWorks by modeling the lid in both. OnShape is a very good CAD. In my opinion, its UI is quite intuitive, and it has many features. It is also free for personal use but comes with the caveat that everything is public unless you pay. SolidWorks is also a good choice, but in my opinion, it is a little too much, and the interface looks a little outdated.

OnShape

Onshape is a cloud-based Computer-Aided Design (CAD) software developed by PTC. It is primarily used for parametric 3D modeling, similar to traditional CAD software like SolidWorks, Fusion 360, and FreeCAD. However, Onshape differentiates itself by being fully web-based, meaning it runs entirely in a browser without requiring local installation. (From ChatGPT, Prompt: What is OnShape?)

Image of OnShape

Design Files

SolidWorks

SolidWorks is a parametric 3D CAD (Computer-Aided Design) software developed by Dassault Systèmes. It is widely used in engineering, product design, and manufacturing for creating detailed 3D models, assemblies, and 2D drawings. (From ChatGPT, Prompt: What is SolidWorks?)

Image of SolidWorks

Design Files

Choice of CAD

I decided to use FreeCAD because it is free and open-source, ensuring I won't lose access to it. Despite not having the most intuitive interface, it is quite powerful, and it seems like the developers are working to improve it.

Animating and Rendering

Blender

Blender is a free and open-source 3D creation suite used for modeling, sculpting, animation, rendering, compositing, and simulation. It is widely used by 3D artists, game developers, animators, and visual effects (VFX) professionals due to its powerful capabilities and active community. (From ChatGPT, Prompt: What is Blender?)

To get started, I imported my model from FreeCAD into Blender and just started trying stuff. After getting familiar with the UI, I entered the shading tab. After messing around a bit, I had this:

Image of my shader nodes

This made my model look 3D printed by using this image I found on the internet. Not sure if I used it correctly; it looks better in the images on the website, but I ran out of time. Next, I animated it using this video as a reference and finally rendered it and stitched all the images together using the image editor following this tutorial from Blender.

Compressing Images and Video

To get started, I downloaded the following tools:

Installing FFmpeg

There are two ways to install FFmpeg:

A) Run this command in the terminal on Windows:

winget install ffmpeg

B) Alternatively, you can download the ZIP file from the FFmpeg website linked above.

After installation, I discovered that both FFmpeg and ImageMagick operate without a graphical user interface (GUI), and you must use the terminal to interact with them.

ImageMagick

To batch convert images, I opened the image folder in the terminal by typing CMD in the search box. Then, I used the following command to resize, compress and convert all PNG images to JPG:

magick mogrify -resize 1000 -quality 80 -format jpg *.png

To convert a single image, I used this command:

magick IMAGE-NAME.png -resize 1000 -quality 80 output_image.jpg

Warning

If ImageMagick is not working, check if you are using the right command by replacing magick with convert if you are using either Linux or macOS.

FFmpeg

Similarly, I optimized videos by navigating to the video folder and typing CMD to open the terminal. I then ran the following command, which can be found on Svavar's Site:

ffmpeg -i input_video.mov -vcodec libx264 -crf 25 -preset veryslow -movflags +faststart -vf scale=-2:360 -c:a aac -b:a 128k output_video.mp4