2. Computer Aided Design¶
This week I worked to expand my knowledge on Computer Aided Design (CAD) programming, by learning 3D and 2D softwares and their applications. I used three different 3D programs to replicate a piece in my final project, Fusion360, Onshape, and FreeCAD. I also learned some of the uses of two different 2D softwares, BoxySVG and Gimp.
3D CAD Programs¶
Replicating Base for Platform¶
Because my final project is based on a tutorial, I attempted to replicate a piece provided in the video. The video gives the .stl files for any 3D printable pieces in the tutorial. I took the .stl file for the four pieces that screw into the corners of the table which hold up the platform with all of the electrical and mechanical components, imported it into Fusion360, then converted it from a mesh to a solid, by watching the first part of this tutorial by Product Design Online. I used “insert mesh” to get the .stl file in Fusion, then used “generate face groups”, and finally “convert mesh” in the modify menu to make it into a solid.
Downloading Prusa Slicer¶
To download Prusa Slicer, I simply googled “Prusa Slicer download” and installed it from google.
I would then reference this for the dimensions of the 3D I created in the three softwares. First, however, I 3D printed this design so that I could compare it to the 3D printed final products of the designs I created myself. The file coupled two of these base pieces together, and I could not figure out how to separate them anywhere in the process, so I just let it print them both together. I exported it from Fusion as an .stl, imported it into Prusa Slicer, set it to what I thought was the correct dimensions (I used 32mm height but it should have been 30mm height), and printed it.
Printing Reference¶
The original file did not import into Prusa Slicer with the correct dimensions, so I had to use other measurements given in the video and connected links to figure out the correct dimension. This led it to be 2mm off, however.
The first few times I tried to print it, it kept coming up off the print bed, but I eventually partially solved this by manually moving the z-axis down, adjusting the heat of the nozzle, and slowing it down. One of the two in the pair messed up in the printing process, and although the other was slightly morphed, it turned out fine. The object I will be attempting to recreate in 3D CAD softwares is displayed below.
Autodesk Fusion360¶
Prior Experience in Fusion¶
I had already used Fusion360 on a few different occasions before. In the classes Engineering 1 and Engineering 2 last year, we watched and followed along with the first few videos of Kevin Kennedy’s “Learn Autodesk Fusion 360 in 30 Days for Complete Beginners!” Youtube video series. In preparation for Fab Academy between October and January, I continued to follow along with the videos up to around video 10.
Recreating the Object in Fusion¶
Because I have had some prior experience using Fusion360, this software was quite familiar to me and so I felt comfortable with it. Because I already had the piece in Fusion360, I was basically just replicating it. However, although I would be able to see what I was trying to create, I had to figure out how to get there myself. I began by creating a sketch on the XY plane (the bottom surface). I created a square matching the dimensions of the two legs of the right triangle created by the object.
I extruded this square 30mm so that it created a box, and created a sketch on top of the box. I drew a triangle with the line tool which cut the square top diagonally in half, and extruded this down using the “cut” feature to remove half of the box.
I then used the shell command on the top surface of this shape with a thickness of 5mm, so as to align with the original’s. Next, I created a sketch on the top of the object again, and drew lines to create a giant square.
This square is simply to get rid of the wall on the hypotenuse side of the shape. I could now extrude this down and cut out the wall.
I then needed to create the sloping sides. At first, I played around with the “Chamfer” tool, but could not get it to do what I wanted, so eventually I used the outside of both of the remaining side walls as sketch planes on which I created triangles which matched dimensions in the original. I then extruded these triangles to cut part of the walls so that it looked like it does in the image below. I also applied a chamfer on the interior vertical edge.
I then arrived at the screw holes. I used the circumference/radius/diameter measurements from the original to create these. I first created a sketch on the interior of one of the walls. I oriented a center point circle around where the original is, then used its dimensions from the bottom and from a corner to replicate it on the other wall.
I then extruded these circles through the walls so as to cut holes in them, then used the chamfer tool on them, using the difference in diameters between the interior and exterior circle in the original to figure out how much to chamfer.I created a circle on the bottom with equidistant dimensions from the two walls and extruded/cut it through the bottom part. Instead of using chamfer on this hole, however, I used fillet, as that is what the original appeared to have done. The final product is displayed below.
I imported it into Prusa Slicer, sliced it, and exported the G-code.
Finally, I printed it.
Review of Fusion360¶
Of course, my previous knowledge of Fusion360 allowed Fusion to be very easy and comfortable to use. My object was not significantly complicated nor extremely simple. I used features I feel most comfortable with for the majority of the process, including creating sketches on surfaces and extruding them.
Onshape¶
The second 3D CAD program I used is Onshape. Onshape is a CAD platform used via a web browser. I again used google to download Onshape. Onshape’s user interface is very similar, so I did not use a tutorial to learn Onshape. Because of this, the process I used to create the base component was practically the same as it was in Fusion360. Thus, I will not provide a comprehensive explanation of each step, and will instead just show images of the process below.
This is the final product in Onshape.
Of course, I exported it as an .STL, imported it into Prusa Slicer, sliced it, exported the g-code, and 3D printed it.
Review of Onshape¶
Onshape is very usable and not very laggy. It is also easily accessible for any device because it runs on a web browser. Even though I had never used it before, did not use a tutorial, and usually find myself completely lost using a new software, my knowledge from Fusion360 was more than adequate while using Onshape. Given, I can certainly see how someone who had not used Fusion or any other 3D CAD program before could be confused. However, once a user begins to comprehend a 3D CAD program after a few tutorials, it is fairly easy to adapt to similar programs.
FreeCAD¶
The third 3D CAD program I used is FreeCAD. FreeCAD is a free, open source 2D and 3D modeling software with endless features. Being open source, anybody can add to it, which is why it has so many different features. However, I found that this software certainly did not suit me. I attempted to again recreate the base piece, but I ran into some restraints. Throughout the process, I used parts of a few different tutorials, including this one and this one. Eventually, my final product was similar in idea, but not exactly congruent in design, and measurements were somewhat arbitrary due to FreeCAD’s seemingly unusable constraints. I began, of course, by installing FreeCAD off of Google.
After it was installed, I opened it, and clicked Create New. Following a tutorial, I clicked on the dropdown menu where Start was selected, and changed it to Part Design. From here, I could proceed to create my sketch and begin the designing process. I created a sketch with Create Sketch, and selected the xy-plane to do it on. This takes the interface from Part Design to Sketcher. FreeCAD proved to be much less intuitive even from this point, as you could not define the distance of a line in a sketch whilst drawing it. Instead you had to draw it, then select it and select horizontal distance constraint, and type in your value. In addition, snapping to previous lines, points, or really any snapping proved very difficult, as it seemed that it would only let you do this to lines created in the current sketch. However, drawing this first square with the dimensions from the reference in Fusion360 was not one of the major challenges I encountered in FreeCAD. I eventually applied a horizontal length constraint to the bottom line, in addition to horizontal and vertical constraints on all four lines, so as to keep them within 90 degree-angles.
Now that my shape was a rectangle, I could apply an equal length constraint to two perpendicular sides to create a square.
Below I circled the constraints I used. Due to the nature of parametric design, they should work in any order, so the numbers I wrote next to each of them can be ignored.
I pressed Cancel, and went to Tasks, under which I selected Pad. As there was only one sketch present, it was selected, and I set the loft to 30mm, the height of the piece.
This is where I ran into my first problem, although it was minor in comparison with some of the others. I attempted to create a sketch on top of the current box that I could extrude, so as to cut away half of the object diagonally. I was able to create the sketch on the top of the box, but unlike Fusion360 or Onshape, I was unable to snap any point to pretty much anything other than the origin.
Looking back, I do not know why I didn’t just use length constraints on the two legs of the triangle or the hypotenuse, but I decided at the time that it would be best to start over with just a triangle. So I basically repeated this process, but with the original sketch only connected by a diagonal line across.
I now utilized the Shell feature, just as I had done on Fusion360 and Onshape. I selected the top face, selected Shell, and told it to have a width of 5mm, the width of the outside walls.
I now wished to remove the hypotenuse side wall like I did in Fusion360 and Onshape. However, this is when I encountered the greatest problem. In FreeCAD, I could not figure out how to extrude/pad/pocket a sketch that is not attached to a body. In Fusion360 and Onshape, you can make a sketch anywhere you like, and easily select extrude, from which you can either make a new body with the extrude, or cut any existing bodies the extrude collides with. After searching Google and just searching through FreeCAD for a while, there might be some feature that can cut which is possibly under Boolean logic, and if there is, I could not figure out how to use it. Nonetheless, I am pretty sure that it would not have worked with what I was trying to do. I originally tried to replicate what I did in Fusion and Onshape, but that did not work.
I next tried to create a sketch on top of the hypotenuse side which I could Pocket down in order to remove that wall.
After trying more things, I decided that this step might not actually be crucial to the functionality of the design, and concluded that I would come back to it later if I thought it necessary. I next tried to create the screw holes in the walls and through the bottom. First, I made a sketch on the inside of one of the walls of just a circle. I then tried to use Pocket, which is basically FreeCAD’s version of the Cut feature of Extrude in Fusion360. But it came up with an error message.
So I did it on the outside instead.
I then replicated this in an estimated similar spot on the other side wall, and created a hole on the bottom as well, all of which had the same diameters as the ones in the original.
I then used a 2 mm fillet for the hole on the bottom’s edge, a 2 mm chamfer for the two holes’ edges on the side walls, and a 2 mm chamfer for the interior vertical edge. I now came back to getting rid of the long wall. However, because you cannot snap points or lines in a sketch to previous points or lines nor can you select parts of faces of other objects defined by the intersections of lines from different parts, I was unable to fully outline or select this part, and I seemed to struggle with the constraints on this sketch as I couldn’t even get it to Pocket. Finally, I created the sketch on the exterior wall. I used a vertical line from the bottom 5mm up to start the sketch on the ground’s level. I then attempted to make a rectangle generally around this wall, except for where using the Pocket 5mm would lead to it cutting into the side wall. Although, the lack of snapping-to struck again, so it was fairly estimated. The logic behind this was that if it was reasonably close to the top, then the rest would be small enough and have so little support that I could easily remove it after the print. I tried to use horizontal and vertical length constraints, perpendicular constraints, and horizontal and vertical constraints, but none of them seemed to work for some odd reason.
Finally, I used the pocket tool. I now had my final product in FreeCAD.
I exported this file as an .STL file, imported it into Prusa Slicer, sliced it, exported the g-code, and 3D printed it. The final product is shown below.
Review of FreeCAD¶
Obviously, I was not pleased with FreeCAD. I encountered many issues while designing an object I could so easily design in both Fusion360 and Onshape, a number of which seemed like they should have easy solutions to them. However, this could be due to my unorthodox style of designing in 3D. It is abundant with options because it is open source, and I am certain it is much more useful to many people than what I could do with it. Nonetheless, it is not really for me. I will possibly go back to FreeCAD at some point and try again to understand it, but for now, I do not see it anywhere on my immediate radar.
Gravity Sketch (VR)¶
During class on Monday, we got to design 3D modeling using Oculus Quest VR goggles through Gravity Sketch. Below is a picture of the goggles and the hand-held controllers that go with them.
A picture from Gravity Sketch’s website of the user interface.
An image of my fellow classmate, Evan Park, in Gravity Sketch (I did not have an image of myself using it).
At first, we just played around in Gravity Sketch. It is a really cool software and modeling 3D objects in VR is a really unique experience. After a little while, we were tasked with figuring out how to export a file from Gravity Sketch so that it downloaded onto a computer and used for 3D printing or other CAD usages. Eventually Richard Shan and I figured out how to set up, login in to, and export a Gravity Sketch file to Landingpad.me using the school’s communal google account, engproj@charlottelatin.net. The full workflow we created for this process can be found here. Once the file was in landingpad.me, I could simply log in to this from my computer and download the file, which I did. I imported the file into Prusa Slicer, sliced it, and exported the g-code. Below is the home page of landingpad.me where we all exported our files towards, followed by the simple object sliced in Prusa Slicer.
Since Octoprint was down, I tried a few USB sticks before I finally got one that worked, which I used to 3D my simple design.
Thoughts of Gravity Sketch¶
Gravity sketch and other VR 3D modeling softwares like it are uniquely advanced programs. Although they may not currently be extremely helpful for an engineer outside of for recreational use, once knowledge on VR 3D modeling advances and softwares like this one become more widespread and adapt to an industrial format a company would use, this will be considered a revolution in the engineering world. Not only does it provide unique perspective to 3D modeling, it allows for people to communicate difficultly articulated 3D ideas much more easily than with any other type of software, as this one revolves more around the user’s imagination than a set of mathematical measurements and parameters the user must apply to predetermined shapes.
Prusa Slicer Issue¶
When I attempted to slice and export the g-code of the FreeCAD file, it defaulted to exporting it under “G-code files (.bgcode, .gcode, .gco, .bgc, .g, .ngc)”. Upon sending this to the printer, the printer recieved a blank, as the print was just a few seconds of nothing. I changed it to export under “G-code files (.gcode)”, and it gave me the error shown below.
I then tried “G-code files(.bgcode)” and “G-code files (*.BGCODE)”, but both of them just gave a blank print as well. Eventually, after a lot of trial and error and research, I found this setting under printer settings which you can get to by going to the small magnifying glass icon in printer setting and searching for “use binary”. Turning it off as is shown in the image allowed me to finally export the correct g-code.
Summary of 3D Softwares¶
Overall, I learned about how 3D softwares differ from each other, amd the possible application of each of them. For example, if you wanted to express a creative idea, then you might use Gravity Sketch, but when it came to actually the piece, you might use Fusion360. Additionally, there are some features which exist in FreeCAD that you may not be able to otherwise exeute in Fusion360 or Onshape. Onshape is very versatile, not laggy, and easy to use, which would be very helpful for someone just learning about 3D designing, or when creating a simple design. Although they all have their benefits and drawbacks, I personally still prefer Fusion360 or Onshape, likely due to my previous experience with Fusion360. However, Gravity Sketch is very enjoyable to use.
2D CAD Programs¶
Boxy SVG¶
Boxy SVG is a 2D vector graphics editor, used for the creation of simplistic designs, logos, and graphics. I downloaded it from an installer acquired through a simple Google search. I used this tutorial to show me how to use the spline tool to make simple photos into splines. I used the Fab Academy logo in my attempt to do this.
I then used a cool feature I found called “text path”. This basically allows the user to draw a path for text to be typed into. I drew a path around the logo and just wrote “David Vaughn Fab Academy” so it looked as it does below.
I then used the spline tool to outline all of the shapes in the Fab Academy logo. This created shapes almost identical to the original that can be used to laser cut, vinyl cut, and many other things.
Although I did not do a whole ton in Boxy SVG, I still was able to learn about the spline tool, knowledge which transfers to many other 2D design softwares. I also acclimated myself to yet another software, even if it was fairly intuitive and easy to use.
Review of Boxy SVG¶
I liked Boxy SVG because of its simplicity, but that also happens to be its downside. Due to its simplicity, it does not possess the manufacturing capabilities that other softwares such as CorelDRAW do. However, for recreational use, I would highly recommend Boxy SVG.
Gimp¶
Gimp is a free and open source raster graphics editor, commonly used for editing images. I downloaded Gimp by searching for a download on Google and using the Windows version. Although there are many image-editing related features you can use in Gimp, I followed this tutorial to learn about the manipulating colors in Gimp in order to create a file that can be laser cut, as I thought this would be more applicable to Fab Academy. I created two different files using this tutorial. The first one I decided to make of starry night, because I thought it would be interesting to see how the blend of colors in the painting would react to the color manipulation tools in Gimp. The second image I chose was one of Neil Gershenfeld, head of Fab Academy, just because I wanted to experiment with a picture of a human, so I chose him. My processes for both are shown below.
Starry Night¶
First, I found a photo of the Starry Night painting off of a Google search, and copied and pasted it into Gimp. I desaturated the image by going Colors>Desaturate>Desaturate. In the tutorial, he said he preferred “Average” in the desaturation menu, but I rather thought I preferred “Luminous”. Clicking Ok, the color was removed from my image. I then went into Colors>Curves to play around with the color curve. The color curve is basically a graphic function which has the x-value as the value of the current/original color and the y-axis as the value of the color you prefer. In this way, you can change this originally linear equation so that any brightness can be translated into any other brightness. In this way, you can polarize a photo so that there is not much “gray area” by making much of the darker input completely black and much of the lighter input exponentially more white. Thus, I created a relatively flat line at first, and then had it shoot up pretty quickly, so as to polarize the colors. Of course, I did this within reason, so that no major color was completely misrepresented in the image.
Because my design’s lines were less distinguishable due to its blended nature than the one in the video’s, I messed around with the Cartoon tool (Filters>Artistic>Cartoon) per the tutorial’s recommendation to make the colors a little more polarized, but still convey the main ideas of the work. At this point, I was done, so I just exported the file as a .PNG (File>Export>Export).
Dr. Gershenfeld Portrait¶
I just found this image off of a Google search for Dr. Neil Gershenfeld, and copied and pasted it into a new file in Gimp. Although this process contained many components of the previous one, it is slightly longer and more sophisticated. This is what the image originally looked like in Gimp.
I began by reducing the size of the image to only display relevant parts (the head) by using the ellipse selection tool (Tools>Selection Tools>Ellipse Select), and outlining the ellipse slightly offset from Dr. Gershenfeld’s head. I then clicked Select>Invert followed by Select>Feather, of which I set to 100px, which gives the fading look of the perimeter. After pressing Delete, all but this outlined portrait is removed. After inverting the selection again, I used Image>Crop to Selection, and then just deselected the image.
I could now repeat the process I had used above to remove color from the image.
I could also repeat the process to polarize the gray scale color by using the color curves tool. This image proved to be a little funky because his hair was a bright shade of white, so it was hard to distinguish from the background whilst still distinguishing it from the rest of the face. I ended up with this.
I did not use the cartoon tool this time, as I did not think it made it look any better.
Review of Gimp¶
Gimp seems to have a multitude of possible applications and usages, a minute few of which I learned this week. However, I can still confidently say I will more than likely use Gimp some going forward for the uses I did learn. As I used a tutorial for most of it, I can not really remark on its intuitiveness, however, it was not overly-complicated to navigate from what I could tell. It is obviously a complex software, likely very useful in photo editing. Overall, I enjoyed my use of it under the guidance of the tutorial.
Overview of 2D CAD Programs¶
Overall, I enjoyed using both Gimp and Boxy SVG. Each have their own applications, but I believe both will prove very useful in the future. Boxy SVG seemed to be a good tool for creating or modifying simple 2D designs, such as logos or simple graphics. On the other hand, Gimp seems to be be a good tool for modifying more complex 2D designs such as pictures, complex graphics, or any other kind of design. Together, they adequetely cover the entire spectrum of the creation and modication of 2D design.
Exceeding Limit for Git Push and solution¶
After doing a lot of documentation, I attempted to commit and push to my website. However, the push being over 17Mib, exceeded the limit, which is no more than 10Mib. I realized that the bulk of this was coming from a lot of my photos being duplicated multiple times. Because I am now using two different image resizers to mitigate the size of my images, there was a lot of uploading and download in the process, which created duplicates of basically all of my photos. In addition, I would only drag and drop the photos into vscode, meaning that they would be added to the “assignments” tab for some reason. This not only cluttered my vscode, but also duplicated all of these photos into my assignments folder in my files. All of this led to the humonguos size of this push, which I did not realize was the problem at first. Once I did, I tried to delete all of the superfluous images from my files. However, when I kept attempting to push, all of my pushes displayed the same size, around 17 MiB.Eventually, I asked a number of other people for their advice, including my computer science teacher Adam Durrett, who is very knowledgable with this kind of thing, Dr. David Taylor, my local evaluator who has a lot of experience dealing with Git, and Zack Budzichowski, another engineering teacher at Charlotte Latin who also has experience with Git. Both Dr. Taylor and Mr. Budzichowski reccomended I manually insert many of my image files into the Git repository, then use git pull
. I began doing this, but this did not seem to get at the root of the solution, and appeared to have a lot of possible ways in which it could wrong. Eventually I asked Richard Shan to just help me clone a new repository into Visual Studio Code, in which I could just copy and paste my previous documentation. I also would go back through all of my photos in my documentation that were just dragged and dropped, and I would use file navigation instead. For example, in the parentheses of the markdown image format, the last photo on the Gimp tab above would look like ../images/Double%20Resized%20Images/Week%202/2D/Screenshot%202024-02-08%20234014-resized-min.png
. Although this took a while to fully execute, I was glad I had a way to confidentely overcome this problem while also setting up a much better organization of my files and images.
Week Summary¶
Throughout this week, I had many struggles, but I also learned a lot. I expanded my knowledge on 3D softwares, inclding getting practice applying my knowledge of Fusion360, and learning three new 3D softwares from scratch. I also learned two new 2D softwares from scratch, both of which I will likely use in the future. I acclimated much more to the file system, documentation process, and Git. This week was certainly a long one, but it was also an amazing learning experience.
File Attachments¶
You can find a link to my files for this week here.