Skip to content

2. Computer Aided Design


Weekly 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

Software I used:

  • Fusion360
  • Photoshop
  • GIMP
  • CorelDRAW
  • SculptGL
  • Blender
  • Zoo Text to CAD
  • Maker World
  • OBS Studio

Modeling my Final Project

Drawing Machine

The 3D printing machine part of the project is based on the DIY Machines tutorials. I downloaded the .stl files.

I had used Fusion360 for engineering class before, but I had never created a 3D model of a project/machine. I consulted ChatGPT with these prompts.

Based on what I learned, I went to Create → Insert Mesh and added all the .stl files I downloaded.

I also changed the material through Modify → Appearance and I changed it to matte black PLA.


Adjustable Base Design

Upper Plate

For the base part, I was inspired by one of my previous projects and Angelina Yang's Pomo-desk.

Note: My design work in this section is done in cm.

On the XY plane, I drew a 40 x 50 cm rectangle.

Then, I drew a 36 cm square within, 2 cm centered leftward. I filleted the outer rectangle to have a radius of 1.50 cm and the inner square to have 1.00.

I extruded (keyboard shortcut "e") it to have a height of 1.50 cm and filleted the other edges by 0.3 cm.

I created a sketch on the topmost plane of this object and used a center diameter circle to draw the holes the screws will go through. I was inspired by this adjustable screw's cap design, but I plan on using an M14 hex head bolt. These ChatGPT prompts helped me through the process of figuring out how to make the base adjustable and details about the hex nut/bolt.

I calculated that the center of my circles should be 1.2 cm away from a non-filleted edge.

Because I plan on using an M14, the diameter for my circles is 1.4 cm.

I extruded the circles with a negative distance and used the operation cut to make them holes.

I used Create → Thread to add the spiral thread. For a standard M14 bolt, the threat pitch is 2.0 mm.

I did the same for the other 3 holes.

Note: "s" is the keyboard shortcut that lets you search up the tool you want.

Then, I tried to change the material to wood, but I got this error when I tried to:

To fix this, I went to the sidebar and clicked on bodies, selecting the entire thing. I then dragged the material to that selected body. I chose oak wood and it worked!

I realized that for the acrylic plate to not fall down, I needed to add tabs. I made each 0.30 cm x 1.5 cm.

I extruded each 0.25 cm.

I made 8 such tabs, 2 on each inner edge of the square.


Acrylic Plate

Next, to make the acrylic plate. I drew and filleted the square identically as before (36 cm with R1.00).

For its thickness, I subtracted the thickness of the tab from the thickness of the plate.

1.2-0.25=0.95

I made the material clear acrylic.


Bottom Plate

I also changed my plan for how the way the bottom panel would be: instead of an open square identical to the upper one, it would be better for it to be filled. So I remade the wood rectangle with the same size, but without the cut-out square.

M14 Hex Nuts and Bolts Design

I was worried my current plan for height adjustment wouldnt work and I didn't want to start designing something that wouldn’t work.

I did some research and thought this video was a plausible approach. However, I still didn't know how to account for the bottom panel.

I consulted Chat, and it gave me a few options:

To make the top panel height adjustable using a screw, you could use one of the following methods:

  1. Threaded Standoff/Spacer Method Use threaded standoffs or spacers between the top and bottom panels. Drill tapped holes (threaded) in the bottom panel. Use long screws that pass through the top panel and thread into the spacers. To adjust, swap spacers of different lengths or use an adjustable-height standoff.

  2. Slot and Screw Locking Mechanism Instead of fixed holes, create vertical slots in the top panel. Use screws with nuts (or wingnuts) that can slide along the slot This allows the panel to move up and down and lock at different heights.

  3. Lead Screw Mechanism Use four lead screws (one at each corner). The screws are threaded into the bottom plate, and rotating them raises or lowers the top panel. This works similarly to adjustable tables or CNC Z-axis motion.

  4. Spring-Loaded Knob Adjusters Use spring-loaded hand screws that allow quick height adjustments. These can be threaded into inserts in the bottom panel.

Which Method is Best? For simple adjustability → Use standoffs or spacers. For smooth height control → Use lead screws. For quick adjustments → Use slots and screws with wingnuts.

I even had it generate an image.

Which was not helpful. I went with something like the lead screw mechanism. I just needed to think of how the bottom could be secured. I also needed to change the upper panel so that it is not threaded and slighly wider than the bolt, or else it would not be easily adjusted. (I also need to figure out how to make sure screws adjust to the same height if I do it manually).


Nut Design

To make a hex nut for an M14, I roughly followed this technical drawing

as well as Kevin Kennedy's Hex Nut Chamfer Tutorial.

I made a circumscribed polygon (Create → Polygon → Circumscribed Polygon) on the XY plane.

And extruded 0.909 cm.

I created a sketch on the XZ origin plane and projected a corner point using Create → Project/Include → Project. Then, I could draw out my triangluar chamfer cutout.

I used Revolve, chose that triangle as my profile, and the Z-axis as my axis.

Next, to add a hole in this body using Create → Hole, we first select the desired planar face.

Extents: all Hole type: countersink Hole tap type: tapped Threat offset: full

I actually changed it to Isometric because thats the standard for the M14 hex nut I am using.

To give the other side the chamfer as well first go to Construct → Midplane and select the top and bottom of the object.

Then go to the Create → Mirror command for solids. Select all the faces that need to be mirrored and use the midplane as mirror plane.

It worked.

However, the thread is colliding with the bottom chamfer.

This is where parametric modeling comes in clutch. I went back to the hole action and changed one of the settings to offset. I set the distance to 0.81.

It it was all good.


Bolt Design

The design I figured for the bolt was to have a section close to the head be smooth, so that it can slide into the hole of the wood (I wont need the base plane threaded anymore). The rest will have the thread, which means the bottom one would not move when I twist the hex nut. The top board will be able to easily slide up and down the long bolt, but because gravity, it can only go as far as the nut lets it.

I made the nut again but did not thread or mirror the chamfers. On it, I drew a circle slightly smaller than the holes of the base boards so it can slide in and won't be too tight of a fit.

I extruded it by 1.5 cm, the thickness of the bottom board.

I extruded it again by 30 cm, thinking it would be a new component and I can thread just that one. But then I remembered that I could just adjust how far the threading goes in the settings.

To resize these images, I had to add attr_list under markdown_extensions: in my mkdocs.yml file. Then, After the closing parenthesis I added {width=300px}

I did so by de-selecting full length and using the arrows to adjust where the threads go.


Adjustable Base Assembly

According to Chat, for full editability, I would save my files as .f3d and if I want a fixed 3D model (e.g., for printing or use as a reference), I should save as .stl.

I did not need editability, so I went with .stl. I opened it through Mesh → Create → Insert Mesh → select from my computer. I arragned the mesh objects the way I intended them to be assembled, like so:

The material appearances did not translate, so I added them back on.

I also added my nuts and bolts and tested the assimilation of one corner. I adjusted the materials again, to stainless steel, and checked what it would look like.

The bolt looks long, but it needs to be that way to maximize how far up the plate can go. I also assembled the rest.

And that is my finished base!

I also found out that Fusion360 lets you copy a share link to view the model.

Here are the .f3d files of all my Fusion work thus far in the order I completed them:

Upper Base

Lower Base

Acrylic Plate

Hex Nut

M14 Bolt

Full Model


3D Modeling

Mrs. Horstman gave us a lesson about 3D Modeling using ZBrush, Blender, and various AI Generators.


SculptGL

ZBrush is a well known digital sculpting tool, but it is also very expensive and has no educator license. We opted for a browser alternative called SculptGL.

SculptGL Operations:

  • Brush: draw on clay
  • Inflate: adds material
  • Twist: twists the clay spiral-like
  • Smooth: to smooth things out
  • Flatten: make an area flat
  • Pinch: pinching like you would with your hand
  • Crease: like taking a pen or pencil and marking
  • Drag: move material around
  • Paint: add color to your creation

This is what I ended up creating after playing around for 10 ish minutes. You can save it by going to Files(import/export) and save as a .obj or .stl. Because it is browser based, if you reload the page, you lose all of your progress.

When I opened my saved file, it opened in PrusaSlicer.

To add a file in Markdown, I tried copying the Image format ![<title>](../files/<location> and it worked!

I tried saving an edited version as a .stl just to see the difference, and it also opened in Prusa.

Overall, I think it's a great alternative, especially considering it is free and does not require any downloading.


Blender

I downloaded Blender 4.3.2 from Blender's website.

At the start, there are three objects in our scene: camera, cube, and light. As we go on, more will show up here at Scene Collection.


Learning Monkey

For the first tutorial, we need to delete the three aforementioned objects. To do this, there are three ways:

  • Click and delete through your keyboard
  • Right click and choose the delete option
  • Delete though Scene Collection (you would do this when there are too many objects or some hidden ones)

The Layout

At the top right, there are axes. Clicking on the letter of an axis (x, y, z, -x, -y, etc.) will snap your workspace into that axis.

On the upper left are basic controls:

  • Cursor: allows you to use a cursor
  • Move: to move objects on screen thoughout 3D space
  • Rotate: rotate x-y-z
  • Scale: to scale an object's size

3D Viewport Header: At the left side of the header, you have the mode selector. You can choose between object, edit, sculpt, vertex, weight, and texture.

Viewport Options: At the top right, you can choose between

X-ray to see transparently

Wireframe to make it look like a sketch:

Solid for it to seem opque and solid:

The bottom right toolbar allows you to transform, rotate, bouillon, etc. everything for solid objects

By selecting the edit mode, you can select vertices, edges, or faces. Following that with the move tool allows you to change how the object looks. Hold down command and click to select multiple at a time.

Loop-cut on the left side to add faces.

On the same toolbar, I can insert faces. You can use extrude region to extrude, much like on Fusion.

This is my mutilated monkey:

Save by going to File → Export → Wavefront (.obj) or STL (.stl)


Cube Physics Simulation

The second tutorial is a Blender physics simulation of a cloth falling on a cube, much like videos like this.

On a clean working space (without cube, camera, and light) use Shift+a → Mesh → Cube. Then, do the same and add a plane.

However, if you check Scene Collection, the plane is still attached to the cube. To make them seperate, we need to create the plane outside of edit mode, in object mode. Doing so that way will create an object seperate from cube, which is evident in your collection.

Then, use Scale and click on the outer circle to make your plane bigger.

Next, to make the collision happen rather then the two object ignoring each other, we need to assign collision items. To do the cube first, click on it, go to physics at the bottom right, click physics, then collision.

For the cloth, we need to first subdivide it to give it the realistic effect we want. Subdividing adds more vertices, which means it also adds more faces. If there's only one face, it won't work and will fall on the cube flatly, not wrap around.

Instead, go to edit mode for hte plane, right click it and select subdivide. I set mines to 20 (Mrs. Horstman reccomended 5-20. More than that might crash the system).

Back in physics, this time after selecting the plane, make the cloth a cloth and choose the type of material you want. I chose silk.

Under collision, select both collision and self-collision (or else it will go straight through the cube).

Now, you can play your animation from the bar at the bottom. Make sure you are playing in object mode, not edit. I made that mistake and was so confused when the cloth went straight through the cube.

However, this is waht it looked like.

To smooth the cloth so that it doesn't look like it's stiff, right click on the cloth object and select shade smooth.

This is what it will look like now!

To save the animation, you would render it .

And you will find that for the animation you need a camera, which you can add back through Add → Camera. You can adjust the angles through Rotate and Size.

Mrs. Horstman let me know that rendering an animation can take a LONG time, so to export it as an .stl and save it for later to render when I am able to wait and handle the render strain.

This is the file for my design.


Zoo Text to CAD

Mrs. Horstman also introduced us to another browser site, Zoo, which you will have to sign up with an email for (school emails might not work).

It's quite a simple process, but similarly, it can only generate simple images. All you need to do is type in a prompt that describes what you want, just like with an image generator. I went with "Square."


Maker World

Another AI is Maker World, which makes a model of a figurine of some sort. You also need to make an account, but because it is connected to Bambu Studio, you can just use your account for that.

I decided to play around and make something amusing.

It turned out surprisingly cute, but with only one tail and no button eyes.

I decided to 'hatch' it to see what the promised 3D model would look like

Note: It takes 10 credits out of 50 free credits to hatch one, which shouldn't mean anything if you only plan on using it once like me.

The colors changed to be a bit more muted. But it even allows me to customize features of the model.

They were uncanny, so I just added a base platform and hit download.

I donwloaded all three out of curiosity to see if they were any different. The 3MF and Vertex-colored OBJ were the same.

This is the file for it.


File Sizing

Mr. Stone told me that I should zip my files so that they are small enough to be on my documentation. I learned that the way to do this is to right click on the file, click compress, and a zip file showed up.

However, my push was still too large, even after compressing all my files and deleting the non-zip versions of it.

It said the issue was fatal: pack exceeds maximum allowed size, which is what I was worried about.

Using ChatGPT, I checked the size using -lh docs/files/Week02/ and realized that some were still too large after compression.

This is the public link to the ChatGPT prompts I used in this section of the process and its responses

Since conversion to .zip didn't seem to work, Chat recommended I download p7zip to compress my files. I did brew intall p7zip then once it was intalled, 7z a -mx=9 yourfile.7z <name of my folder>. It told me it was Creating archive: Week02.7z and it did.

There was a copy, just as promised, but it did not seem to work. When I unzipped the file and clicked into it, I just saw a copy of my entire repository, docs and all.

At this point, I was two commits in and very confused. I decided to reset git and try to only push the changes/files that I knew were not large (everything but the .stl and .obj)

The way Chat first recommended was git reset --soft HEAD~1, but the one that 'worked' for me was to do git reset --hard HEAD~1. I did that twice to remove the previous two commits. But I actually misunderstood what the command meant, I think. It actually deleted the previous two commits that were PUSHED, not the ones that were not. I was still ahead of main by 2 commits locally and lost some of the progress from before. I had to re-paste those changes from my version history.

At this point, I was also told my branch deviated from main. I tried to rebase it, but it was going badly for me. I think because I had re-pasted some content, there were conflicts I had to resolve. I realized that to resolve them, I had to manually change it in the areas of code that were indicated by <<<<<<< HEAD, =======, and >>>>>>> <other-branch-name> as a merge conflict within a file.

Thankfully, after all that, my commit was back on main.

However, when I went into my local repo, I saw that all the files I had previously saved, staged, and committed were gone. The entire week03 file folder was empty. Thankfully, I had opened those files in PrusaSlicer earlier and Prusa was still open. I just salvaged what I could from there and I still had all of my images, so I did not lose much of my documentation.

After git status I saw this suggestion on Terminal:

I realized this would allow me to unstage things. Up until now, my struggle was in not being able to compress the files, so I was thinking of trying to break each commit down. Only, I did not know how to do that and git reset was not working in that respect. This changed everything though.

I unstaged the files/week03 folder which was where all of my problematic files were. Then I staged my files one by one and it did push successfully.

After doing them all, I checked my remote repo, and they appeared!

2D Design

Using design softwares like GIMP, Photoshop, and CorelDRAW to create 2D designs in both raster and vector.

Note: All my work in this section will be done on a Windows operating system.


GIMP

GIMP, acronym for GNU Image Manipulation Program, is a raster design software. I downloaded version 2.10.38 from this website. I learned the basics of GIMP through this tutorial.

The main menu at the top allows you to access everything. The colors and filters sections are good for image adjustment and photoediting. File → Open to open files into GIMP. File save/save as to save your work.

Tip: Forward slash, /, lets you bring up the search feature and type what you're looking for.

The toolbox contains all your tools:

  • Selection tools, select an area to make changes to
  • Paint tools, freely draw or paint on your image/composition
  • Transform tools, transform an active layer, selection area, or path
  • Other, various functions like zooming, selecting colors, drawing curves, adding text

The tool option displays all the settings for the tool you selected (above is the tool option for paintbrush)

The center panel is where your canvas is. To open a new blank canvas (not image) go to Files → New.

The layers, channels, paths, and undo panel displays all the items mentioned in its name.

The brushes, patterns, and gradients panel displays the items mentioned in its name.

This was a quick sketch of a cactus I made in GIMP!


Photoshop

Photoshop is another raster design software which GIMP is an alternative for.

This was one of my prior experiences working on Photoshop. It is actually set up pretty similarly to GIMP, but obviously has many more capabilities.


CorelDRAW

CorelDRAW is a software I am familiar using from Engineering class last year. Though I am using it for vector in this instance, it is capable of both raster and vector editing.

I found a photo from the internet that I wanted to turn from a raster to a vector. Most all images on the web are raster. The difference between raster and vector, is that vector uses geometric equations to define its shapes/lines

Through File → Import, I opened the image into a CorelDRAW canvas. To turn it into a vector image, I went to Trace Bitmap → Outline Trace → Detailed Logo.

This made it a vector image!

You can change the settings to what you want it to look like. The difference is glaring.

I also used the shape tool to draw an oval to frame my letter. I changed the width to hairline.


OBS and Handbrake

I used OBS to record my simulation video from before, because rendering would take too much space. For image compression, I already documented my XnConvert process last week.

I have an Apple Silicon Mac, so I donwloaded the arm64/Apple Silicon Installer from the OBS website.

I used this tutorial to guide me through the screen-recording process and OBS.

The moment I opened up the software and added a source, I realized I had a problem with my screen being blacked out.

Thankfully, one of the commenters on the YouTube video had helpful advice.

I adjusted my privacy settings and it worked!

I also adjusted my Output settings on OBS, trying to make the file size as small as possible.

I still wanted to see if I could compress it further. ChatGPT recommended I use HandBrake as a third-party tool for post-recording compression. I downloaded version 1.9.0.

Under Preset at the upper left, I chose Fast 1080p30 because Chat told me it was a good balance of quality and compression.

To start encoding, click on the green start button at the top.

In MKDocs, I used this format to embed my video:

<video width="640" height="360" controls>
  <source src="<location>.mp4" type="video/mp4"> 
</video>

I made the mistake of zipping the video file, which did not work because MKDocs can't play zipped videos. I think it was just muscle memory from all the .stl files. I already went the extra length of HandBrake, so I didn't really need to zip it to begin with.

I had another issue with the video not playing.

I referenced Angelina Yang's repo and how she organized her final project video and figured out that it was because I saved it in my Files folder that it wasn't working. I moved it out and into my Docs folder and changed the line section I put the file location to the file name: "../../CubePhsyics.mp4". After that, it played!


Overview

This week was really fun for me. It was an enjoyable mix of knowing how to work some softwares and learning how to use new ones. It was a good review of some softwares I had used before, like CorelDRAW and Photoshop and a humbling reminder that I still needed practice in others, like Fusion360. Many of them were really fun to play around with to test AI, like Zoo and Makerworld, and some were so intriguing that I am sure I will be using them again: GIMP, SculptGL, and Blender. I had always wanted to learn how to use Blender and I am so glad I was finally able to.

On the more technical side of things, I had a frustrating encounter with file sizes that I am so grateful is behind me. It taught me a very important lesson of being cognizant of how much data is accumulating in each push.


Files

Design Files:

Video Compression Files:

My images can be found here.



Last update: February 19, 2025