Category: Uncategorized

  • CAD Assignment

    October 4th, 2025

    This project was intended to demonstrate a basic understanding of CAD skills in Onshape. These skills included:

    • Sketching – drawing a 2 dimensional representation of a face in CAD
    • Extruding – taking a sketch and turning it into a 3 dimensional object
    • Assembly – taking multiple 3 dimensional parts and sticking them together
    • Mechanical Drawings – converting your 3 dimensional parts and/or assembly into a 2 dimensional drawing
    • BOM – Bill of Materials – creating a list of all items required to fabricate an assembled object

    As someone who was completely unfamiliar with CAD and Onshape, I used a specific Notebook LM AI to guide me through the process and teach me these skills. 

    Here is the transcript for all of my interactions with AI: 

    Technology Explorations 10 – CAD Assignment AI Transcript – Hukam Singh Kang

    As for the project itself, I decided to create a basic barbell with 45 pound weights attached to it. It includes various simple elements that when put together, allowed me to learn the basics of CAD. In this blog post, I will show the sketching and extruding phases for only the plate, as the other parts followed a similar process. 

    1. Plate Design

    Step 1: Sketching

    The first part of this project was the sketching of the plate. This sketch represents the base of the plate, before I added extra details. The diameter is 17.7 inches (standard), and there is also a smaller circle in the middle (1 inch diameter). Two circles are needed because later on during the extruding phase, I only wanted to extrude the area around the small circle, leaving a hole in the middle. 

    Step 2: Extrusion

    The second step in designing this plate was extrusion. This process involved selecting the part that I wanted to be turned 3 dimensional, and making it happen. I selected the larger circle and this is a preview of what it would look like once extruded. I chose the depth of the extrusion to be 2 inches, as this is the standard thickness of weight plates. 

    Completed Plate:

    The previous two steps were simply to demonstrate my understanding of sketching and extrusion. However, I repeated this process multiple times to reach my completed weight plate.

    For example, the outer ring required a sketch and extrusion of a 17.7 inch diameter circle, with a much larger inner circle (to create a thin outer ring). The dark red innermost circle also required a sketch and extrusion following a similar procedure. These three circles allowed me to practice and get comfortable with this skill, so that I found it easier to demonstrate in other parts of the project.

    By layering each circle on top of each other, I learned that when drawing, you can select an already extruded part as the plane. An interesting feature that I learned in my pursuit to add detail to a once simple plate was the ability to add text. Notebook LM aided me in this process, and youtube videos were especially useful in visualizing it. Finally, I learned how to choose the colour of each part (again through Notebook LM), which made the final design look especially polished. 

    2. Barbell Design

    Step 1: Sketching

    The first step in creating the barbell was sketching the bar itself. This included using the centre circle tool to draw a circle centred to the origin. The diameter had to be slightly smaller than the hole in the middle of the plates to allow them to slide on. 

    Step 2: Extrusion

    The second phase in creating the bar was extruding the sketch. This process was quite straightforward, as it was a solid bar without anything in the middle. The depth of the extrusion had to be 64 inches due to the extra parts that would allow it to be functional. 

    Completed Barbell:

    The final barbell was created by adding more parts to the initial bar shown previously. Of course, the bar needed stoppers to prevent the weight plates from colliding. In order to include them, I was required to do mathematical calculations regarding the length of the overall barbell.

    This involved creating 2 separate 8 inch bars which I added to the original bar and stoppers using the extrude tool. Through this process, I learned that two separate extruded parts could be merged, which helped me with the previous part as well. The completed barbell set the stage for the creation of the final part – the outside stoppers. 

    3. Outside Plate Stoppers:

    Step 1: Sketching

    The first step in the creation of the outside stoppers was again sketching. For this phase, I used a heptagon to best represent the strapped stoppers that are usually used in gyms. Each side is 0.7 inches, and the inner circle had to have a diameter of 1 inch to allow the barbell to fit through. Again, the sketching was simple, getting ready for the extrusion phase.

    Step 2: Extrusion

    The extrusion phase was similar to the process used for the plates. I had to select the part outside of the inner circle to leave the hole. Other than this, it was again, a simple process. This part was the simplest as it was 1 part, without any additions. 

    4. Assembly:

    Completed Assembly:

    The assembly part of this process was difficult to understand at first. Elements like mates, and finding a way to add restrictions on them was challenging at first. During this process, I set the barbell as the fixed element, making it easier to slide the rest of the elements on it. I used cylindrical mates to connect the plates and the bars. I learned that these allow the user to spin/rotate them and slide them along the plate.

    During this phase, I learned about setting restrictions on the distance that they could slide. Of course these were necessary, as I did not want them to slide past the built in stoppers. I set the restriction to 8 inches for the plates because this was the distance to the stoppers. After completing these cylindrical mates, I created slider mates for the sliders because realistically they should not be able to rotate. I set the restrictions to 7 inches for these mates.

    After this, the assembly process was complete, but it took me some time to understand that the Bill of Materials had to be created in this assembly tab. Notebook LM helped me with this, so I was able to create the table listing the various parts used for the project. 

    5. Mechanical Drawings

    Completed Drawings:

    During this final phase of the project, I learned that various angles of the assembled product could show different sets of dimensions. For example, the horizontal view showed the length dimensions of each element, while the vertical view showed the width dimensions. I included the front of the product, to show circular elements in greater detail. As a whole, this was a straightforward process, however, it took me some time to understand it. 

    6. Bill of Materials (BOM)

    Completed BOM:

    Finally, the Bill of Materials needed to be inserted into the mechanical drawing document. Again, this was straightforward, as I had already created it during the assembly phase. 

    Ultimately, this project was the right project for me, as it taught me basic CAD skills that I am now comfortable with. Through working with a product that interested me, my craving for knowledge led me to learn more than I would have, had it been a product that I had no interest in. 

    To view the whole project in CAD click on the following link:

    https://sgs.onshape.com/documents/e3427e26bb8e0902d1dc26cb/w/027045d024b4491e9c01689b/e/adf7a0ec57bffff0b83ab15e

    This was a great first project, and stay updated for many more to come!

  • Coding Project

    September 21st, 2025

    This project was intended to demonstrate a basic understanding of the python computer language, and to learn a few concepts along the way. Throughout my project I used Chat GPT (Google Gemini was not functional for my computer) as a resource of learning and the full transcript of my conversation with it can be found here:

    Link

    As for the project itself, I decided to create a program that generates flashcards by prompting the user to input information such as questions and answers. It is a useful study tool for students, because after all of the information has been gathered, users are tested on it. The code was written on a platform called Code HS, but it will be available on Google Colab. Below, is the link to an image of a simple flowchart to help understand the program:

    Link

    After completing this flowchart, I was able to begin the process of writing the code itself. 

    Step 1: Introduction to the User

    The below section of code introduces the user to the program. Lines one to five simply describe what the program does, which was helpful for me to refer back to, as the programmer. *Note that all of the writing in green is not run by the computer, as they are simply comments for the programmer (myself) to refer back to. Line eight allows access to the computer system, which will be useful later in the program.

    Lines eleven through thirteen are shown on the console to the user, detailing the program. Line fourteen asks the user to enter their name for personalization, which is stored in a variable called “name”. Line sixteen defines another variable called msg, which contains braces to store the variable name.

    Finally, on line seventeen, the message is printed to the console, with the help of .format, a string method that fills the empty braces with the variable “name”. 

    Step 2: Defining the Function

    This below section defines a crucial function (allows repeated lines of code to be stored as one action) in the code. Lines twenty-one and twenty-two ask for the user’s question and answer which will create a flashcard later on. Line twenty-four may be the most crucial however, as it stores the question and answer to a list called “flashcards”.

    It does this by using the .append string method, with the brackets containing the question followed by the answer. Through this method, the question and answer is stored in the list, so that if the user enters multiple questions and answers later on, they will all be printed in order. Finally, line twenty-seven defines the list known as flashcards through square brackets.

    Step 3: Any More Questions?

    The above section of code comes after the function “ask_q_and_a” is called. Line thirty-two is straight forward, asking whether or not the user has any more questions to enter. The “while” loop on line thirty-five states that the program will repeat the process (asking the user for information, and then asking whether or not there is more), until the user finally enters that there are no more questions.

    It sets this condition by setting the another_question.lower() method equal to the lowercase letter “y”. The .lower() string method converts a capital letter “Y” to a lowercase letter “y”, so that the program can accept both capital or lowercase letters “y” from the user.

    Step 4: Clear the Screen

    The above section of code ties back to the “import os” call at the very beginning of the program. It uses its access to the computer system to clear the console so the user cannot see the answers to the questions. Without this portion of the program, the user would be able to simply look at and copy the answer that they had entered earlier into the console.

    The if else statement is required to account for different computer systems: Mac/Linux or Windows. On Mac/Linux, the call to clear the console is os.system(‘clear’), but on Windows it is os.system(‘cls). After clearing the console, the message on line forty-six is printed to the console. 

    Step 5: Asking the Questions

    The portion of code above is the integral for loop that allows the questions that the user previously entered, to be asked back to the console. Line forty-nine is a loop that continues until every card in the set of flashcards has been asked to the user. Line fifty-one explains that one card includes both the question and the answer (a bundle). Line fifty-three asks the question, and the process continues until there are no more questions.

    Without the list called “flashcards” and the .append string method from earlier, the computer would not remember each question and answer to be different. It would simply print that latest question and answer that the user entered, overriding each of the previous pieces of information. This is the most integral aspect of the program. 

    Step 6: Using an if else statement

    The above portion of code includes an if else statement that accounts both for if the user answered correctly or incorrectly. If their answer is correct, the message on line fifty-seven is printed to the console, and if it is incorrect, the correct answer and the message on line sixty-one is printed. The rest of the program is simply a message that sends off the user, and concludes the code. 

    To view the entire code and try the program, click on the following link:

    Technology Explorations 10 – Coding Project

    To conclude this entry, this was my coding project, and stay updated on my blog for more posts!