Skip to content
Nathan Nguyen.
All Projects
CAD PracticeRoboticsCompleted

Team 4079 SolidWorks Parts Library

A centralized SolidWorks library of common FRC robot parts.

Apr 2022 - May 2022CAD DesignerFRC Team 4079
/projects/frc4079-cots-library/cots-library-browser.webp
Screenshot of Folders for Team 4079 COTS Library

Overview

This project was built to standardize the common parts Team 4079 used across robot designs. Instead of every student recreating bolts, nuts, shafts, spacers, pulleys, gears, and other repeated components, the team had one shared SolidWorks library with organized, simplified, reusable parts.

The library was built for SolidWorks use and was used by Team 4079 until the team switched to Onshape in 2025. Alongside the actual part library, this project also introduced a modified version of Team 254's Cheesy Poofs part numbering scheme so Team 4079 could keep robot assemblies, parts, drawings, and fabricated components organized across projects.

Lessons from this system later helped me improve the KUdos VEX-U parts library with better structure, naming, and long-term maintainability.

Problem & Goal

Before this library, team CAD work was slowed down by repeated part modeling, inconsistent downloaded vendor models, missing part information, unclear file names, and large assemblies that lagged in SolidWorks.

The goal was to create a shared parts library and naming system that made design work faster while keeping parts consistent, lightweight, searchable, and easy to assemble.

Design Requirements

  • Centralize common COTS and custom robot parts in one shared library
  • Include frequently used parts such as bolts, nuts, shafts, bearings, hubs, gears, pulleys, belts, and hardware
  • Add mate references to common parts for faster assembly
  • Create quality-of-life part templates for repeated designs
  • Store part numbers, cost, quantity, material, and other useful metadata
  • Use simplified geometry to reduce SolidWorks lag
  • Organize the library so students could quickly find and reuse parts
  • Add a consistent part numbering system for robot assemblies and manufactured parts
  • Support long-term use across multiple robot projects and seasons

Library Structure

The library was organized into three main sections: the COTS parts library, part templates, and document resources. This made it easier for students to separate ready-to-use robot components, configurable design starting points, and engineering reference material.

SectionPurpose
COTS Parts LibraryShared SolidWorks models of common off-the-shelf FRC robot parts
Part TemplatesConfigurable templates for repeated custom parts
Document ResourcesReference documents for CAD, machining, and mechanical design

COTS Parts Library

The COTS parts library included common off-the-shelf FRC components such as bolts, nuts, shafts, bearings, bushings, gears, pulleys, sprockets, wheels, hubs, motors, electronics, extrusion, brackets, and hardware.

These parts were organized by mechanical category so students could quickly find what they needed while designing robots. Common parts were simplified where possible to keep SolidWorks assemblies lightweight and reduce lag.

Mate References

Common parts such as bolts, nuts, shafts, and other repeated hardware included mate references so they could be dropped into assemblies faster. This made basic assembly work smoother and reduced the amount of manual mating needed for repeated components.

Part Templates

The library also included configurable templates for commonly reused custom parts, including:

  • Spacers
  • Chain
  • 3D-printed pulleys
  • 3D-printed gears
  • Configurable belts
  • MAXSpline spacers and shapes
  • Crown pulley templates

These templates improved the CAD workflow because students could start from a known-good part instead of recreating the same geometry every time.

Modified 254-Style Part Numbering

Alongside the parts library, I introduced a modified version of Team 254's Cheesy Poofs part numbering system for Team 4079 projects. The goal was to make SolidWorks assemblies, parts, drawings, and fabricated components easier to organize as robot projects became more complex.

The system gave every major assembly and custom part a structured name instead of relying on vague file names like left plate, new spacer, final bracket, or shooter plate v2.

Team 4079's modified format was:

4079-2022-A-0000

Numbering Structure

SectionExampleMeaning
Team number4079Identifies the team the file belongs to
Year2022Identifies the robot or project year
File typeA or PA means assembly, P means part
Assembly identifierFirst two digits of 0000Identifies the subsystem or assembly group
Part identifierLast two digits of 0000Identifies the individual part, or 00 for an assembly

Assemblies always ended in 00. Parts used the same assembly identifier as the assembly they belonged to, then ended with their own part number.

For example, 4079-2022-A-0100 would be an assembly, while 4079-2022-P-0101 would be the first part inside that assembly group.

Example 1: Top-Level Robot Assembly

4079-2022-A-0000

SectionMeaning
4079Team number
2022Robot year
AAssembly
00Top-level assembly identifier
00All assemblies end in 00

This represented the highest-level robot assembly. Everything else in the robot CAD would eventually live under this file.

Example 2: Subsystem Assembly

4079-2022-A-0100

SectionMeaning
4079Team number
2022Robot year
AAssembly
01Subsystem or assembly identifier
00All assemblies end in 00

This represented a major subsystem assembly, such as the drivetrain, intake, shooter, climber, or electrical layout.

Example 3: Individual Part

4079-2022-P-0101

SectionMeaning
4079Team number
2022Robot year
PPart
01Belongs to assembly group 0100
01First part in that assembly group

This represented an individual part inside assembly 0100. For example, if 4079-2022-A-0100 was the drivetrain assembly, 4079-2022-P-0101 could be a drivetrain plate, spacer, shaft, or bracket.

Example Model Tree

A simplified robot model tree could look like this:

4079-2022-A-0000.sldasm  Entire robot assembly

4079-2022-A-0100.sldasm  Drivetrain
4079-2022-P-0101.sldprt  Drivetrain side plate
4079-2022-P-0102.sldprt  Drivetrain spacer
4079-2022-P-0103.sldprt  Drivetrain shaft

4079-2022-A-0200.sldasm  Intake
4079-2022-P-0201.sldprt  Intake side plate
4079-2022-P-0202.sldprt  Intake roller shaft
4079-2022-P-0203.sldprt  Intake mounting bracket

4079-2022-A-0300.sldasm  Shooter
4079-2022-P-0301.sldprt  Shooter plate
4079-2022-P-0302.sldprt  Flywheel spacer
4079-2022-P-0303.sldprt  Hood bracket

4079-2022-A-0400.sldasm  Climber
4079-2022-P-0401.sldprt  Climber hook
4079-2022-P-0402.sldprt  Climber side plate
4079-2022-P-0403.sldprt  Winch spacer

How It Was Used

Top-level assemblies and major subsystem assemblies were assigned first so the robot had a clear structure before smaller parts were created. Individual parts and subassemblies were then numbered based on where they belonged in the model tree.

This made it easier to keep SolidWorks files, drawings, and fabricated components connected to the same organizational system. If a part was sent out for manufacturing, used in a drawing, or referenced in a fabrication list, the part number made it clear where that part belonged in the robot.

Why It Helped

This system improved the team's CAD workflow because it made files easier to search, review, and manufacture. It also helped newer students understand how a robot assembly was organized because part numbers showed the relationship between individual parts and the subsystem they belonged to.

Instead of naming files based only on descriptions, the team had a repeatable structure that showed:

  • What team the file belonged to
  • What year or robot project it came from
  • Whether the file was a part or assembly
  • What subsystem the file belonged to
  • Whether the file represented a full assembly or an individual part

This was especially useful for projects like Ascent, X001, X002, X003, Backlash, and Overhang, where many custom parts and subassemblies needed to stay organized. When a project followed the X--- naming scheme, it meant it was an off-season project and was not tied to a specific year.

Interested in this kind of work?

Get in touch