Introducing FRCBOM.com - Simplifying BOM Experience (Using Onshape API)

Introducing FRCBOM.com - Simplify Your Robotics Build Process

I’m excited to share a project we’ve been working on: FRC BOM, a Bill of Materials (BOM) Management System built specifically for FRC teams. This platform integrates seamlessly with Onshape to help teams organize, track, and manage their robot parts from CAD design to final assembly.

Full documentation can be accessed here: docs.frcbom.com

:wrench: What Is FRC BOM?

FRC BOM is a web-based system that simplifies how FRC teams handle manufacturing processes by:

  • Fetching part data directly from Onshape CAD documents.
  • Automatically generating a full BOM with details like part names, materials, and required quantities.
  • Tracking the manufacturing process across multiple stages like CNC, Lathe, 3D Printing, and more.
  • Supporting multiple robots for teams building multiple designs.

:star2: Key Features

1. Full Onshape Integration

  • Fetch BOM data directly from Onshape using API keys.
  • Use our custom FeatureScript to assign manufacturing processes to each part.

2. Custom Manufacturing Pipeline

  • Track parts through these customizable stages:
    • Pre-Process: Initial material prep (e.g., cutting stock).
    • Process 1: Primary operation (e.g., CNC, Lathe).
    • Process 2: Secondary operations or finishing steps.

3. Part Management Tools

  • Update quantities and process completion with simple + and - buttons.
  • Download CAD Files: Export Parasolid (.x_t) files directly from Onshape. (In the near future)

4. Secure Multi-User System

  • Admin Accounts: Manage team robots, parts, and processes.
  • User Accounts: Update part statuses and view progress.
  • Every Team has their passwords encrypted and the their BOM is securely locked (ONLY team 1111 can access 1111’s BOM)

5. Smart Filtering and Dashboard View

  • Filter parts by COTS, In-House, or specific processes.
  • See pending parts, completed parts, and ready-to-use components.

Future plans:

  1. Using Onshape API’s ability to download parts from the frcbom.com site.
  2. Creating a visualizer on the frcbom site so you can see the part visualized in a 3d perspective.
  3. Making an option to update the BOM without all qty that was already made being deleted (if you want to change an already on-going bom let me know)
  4. Making an option to assign tasks for specific students and each student has their own frcbom account (maybe)

Known Bugs:

  • Seeing the password while registering/logining (the eye thing) doesn’t work currently.
  • When going to frcbom.com/5987 and entering an Admin account, it redirects you back to the home page (because of security stuff)

I’m always open to suggestions and ideas for improving this project. If you think of a feature that could enhance the platform or notice something that could be better, chances are others might feel the same—so please don’t hesitate to share your thoughts!

While the system has been tested extensively, no platform is ever completely bug-free. If you encounter any issues or unexpected behavior, let me know so I can work on a fix. Your feedback is invaluable! :rocket:

36 Likes

Does this work with documents imported into onshape from another CAD program such as Fusion?

1 Like

The short answer is Yes.

The long answer is that you must set the processes using the setProcesses FeatureScript. In other words, you can import an assembly from another CAD software to Onshape and then set the processes there.

(I haven’t tested it but I am 90% sure it would work)
Let me know if you try!

2 Likes

This looks like a really cool tool! I’m messing around with this to consider it for our 2025 season and have a few questions/comments.

“Gerung” is used as what I assume to mean “Cut.” I notice your team is from Israel, so I assume this is purely a translation thing. I’ve personally never heard the word Gerung, so I would advise changing this.

Most of the raw materials you listed are great, but there are many missing. Specifically when it comes to tubing profiles from the various vendors, it can be quite important which material is selected (WCP vs. REV tubing). There are a lot of non-standard materials that teams stock as well, like nut strips, that may be nice to add into here.

Even better, it would be nice if there were a series of drop-downs that provide the relevant options. For example, the first selection can be “Type,” where you can select between sheet/plate, bar, tubing, hex, etc. Then the next drop down can select the general size or something, and then another option for the manufacturer. That’s just an example, but I am sure there are better ways to do this.

I can imagine other processes as well, like welding, riveting, sanding/deburring, painting/powder coating, that would be nice to include.

As for questions:
Can the BOM be imported from the top-level assembly? I saw this note in the docs and was a bit confused as to what it means: warning DO NOT FETCH IN THE “Main” SYSTEM!

If the robot BOM changes, can it be re-imported without destroying the parts/processes that are already in the system?

Is the idea that all team members can log into this page to update the parts/process as they complete them?

Thanks for putting this together!

What info do we put into the API application creation? I can’t seem to find the right info to put in on the FRCBOM Docs.

I don’t see an option to choose they type of OAuth to use, just the format and a URL.

Thanks for the correction.
I use the word Geraung all the time but let me know how you guys call this tool in the US

If you want I can add “Vendor” and make a FS for it.

I’ll think what is the best way to implement it! Love the idea!

Will add.

About the questions:

You can theoretically fetch into the “Main” System but I strongly wouldn’t recommend it. If you do it in sections (System 1, System 2…) it would be a lot more organized. But you can do it if you want all of the parts in a single page.

Currently working on it. It will be available at latest in End of January

Exactly. The team members need to log into the “User” account, not the Admin account.

(You can save the following link for easy access: frcbom.com/<team-number>/<robot-name>)

See Onshape API
If you believe something is missing let me know!

Thanks for the feedback!

1 Like

We would generally call that a Circular Saw or a Chop Saw. I would think the word “Cut” or “Saw” would cover bandsaw and hacksaw as well.

I think adding them as options in your materials FS would be better and less cumbersome.

Got it. I believe that answers another question of mine: Is this a structured BOM or a flat BOM? Based on your answer, this sounds like a flat BOM.

I used that page to try to get the OAuth setup, but I don’t have the options you mention, namely OAuth Type.

1 Like

Sorry for the confusion there is a mistake in the docs!
You need to select “API Keys” here
And then Create new API key on the top-right corner and select all the permissions.

1 Like

Awesome. That worked!

So, I was able to import all the parts I needed. Again, everything came in as a flat BOM sorted in numerical/alphabetical order. There are many different pieces of hardware that come in the swerve modules that we use, and likely the planetary gearboxes we use as well. These come in as undefined and don’t show up in any of the sub-categories. Is there a way to clear these?

Also, all of the parts came in as in-house parts and did not filter into the different categories. It doesn’t look like there is a way to make them move to that category without re-importing.

For example, about 90% of the parts imported are actually COTS parts but did not import as such. I can’t seem to get them to be part of the COTS parts category from this interface.

Did you set processes in Onshape using the FS?

If they are parts I didn’t create (like the ones in MKCAD) then I cannot run the FS on those.

In other words, I can only run the FS on parts that I have edit-access to the document. Many users often pull parts from places they do not have edit access too, so if it is dependent on that, I don’t think that will work for most people.

Ahh
I understand. I’ll think about a solution for this and will update this thread.
We as a team import only COTS parts from other documents, so it’s not a problem I even thought about :upside_down_face:

If I can ask, what exactly parts are you importing from other documents? (That you manufacture In-House)

Well, I have a drive train subassembly that contains our swerve modules. In other subassemblies I will be using motors, gears, and various other parts that are COTS. Every major subassembly will contain several COTS parts or subassemblies.

It’s generally bad practice to always import COTS items if they already exist in a library (like MKCAD) or somewhere else in Onshape.

The “easy” fix for this is to have your web interface allow users to change the category of the part after it is imported. That seems like a good thing to have anyway in case you have just one messed up part where you didn’t properly assign the manufacturing process.

Just to clarify
When i said that we import COTS parts, I meant that we use MKCAD and other libraries (we don’t import into a Part Studio)

For COTS parts you don’t need to have processes. Unless you change them and then they are not COTS anymore.

For your swerve module, you can add the setProcesses in the document they were created.

Good idea

1 Like

My problem is everything is showing up as an in-house part and nothing is showing up as a COTS part, and I cannot move anything to their respective categories.

I can edit it in the document they were created only because I am a MKCAD contributor, but most people cannot, and the MKCAD team likely isn’t going to go through this featureacript process for every part in the library.

How are you able to import assemblies and such from MKCAD into FRC BOM with them being assigned to COTS components?

What you describe is an interesting bug.
The program can identify if a Part is a In-house or COTS by looking if there are processes for the part.
If the part has processes than the part is In-house and if the part doesn’t have processes its COTS

I don’t expect any public library to setProcesses (it will even ruin the program)

I’ll add tomorrow more detailed documentation about how the importing works from onshape and how to set everything properly.

Sounds good!

It is also entirely possible I am using it incorrectly, so don’t rule that out!

1 Like

Hopefully, I documented everything that you need to import the BOM as intended.

Onshape Setup for Importing BOM for FRCBOM

Make sure you read everything and don’t forget to change the IDs in the FS
(I hope one day I will find a better solution and not require changing IDs in the FS)

2 Likes