Onshape Featurescript Belt Calculator

Hello all, I recently finished the initial version of my Onshape featurescript belt calculator. This is my first ever featurescript project, so I’m excited to be sharing it with the FRC community.


You can add the featurescript belt to your toolbar by searching “FRC Belt Calculator” in the add featurescript menu in Onshape. You can also find the document itself, and the accompanying configurable parts, under the name “FRC Belt Calculator - Alex Kempen”.

Basic Features

  • Create GT2 and HTD belts based on the number of teeth of the belt, and the teeth of your two pulleys
    • You can also enable belt teeth, although this is very performance intensive and has a significant impact on regeneration times
    • Choose to only allow belts sold by VEXpro or REV

  • Position the belt by selecting a point or mate connector for the first pulley, and an axis or point (circular face or edge, point, or mate connector) for the second pulley to orient towards
    • You can also enter an offset for the belt, which is measured from the center of the belt automatically
    • You can also choose to measure the offset from the side of any inserted VEXpro or Custom pulleys (except Vexpro pinions)

Advanced Functionality

  • Automatically choose the belt size closest to the distance between your two positioning selections

    • Can also choose to get the next largest or next smallest belt
    • The automatic belt selector will also honor COTS belt only selections; for example, locking belt sizes to VEXpro belts only will cause the automatic selector to choose from only VEXpro belts
  • Automatically display the center to center distance of the belt, and warns the user if the belt center to center does not match the distance between selections

  • Insert and configure custom pulleys optimized for 3D printing, based on a modified version of @Ty_Tremblay’s MKcad configurable pulleys

    • Enable and configure the pulley width, flange width, bore type, and bore diameter of each custom pulley
    • You can also insert standard VEXpro pulleys and pinions, although this is not typically recommended since COTS parts should usually stay out of part studios
    • Choose whether to make the belt and configured pulleys one composite part, to make assembling multiple belt runs more straightforward

These features should greatly improve upon the traditional belt workflow by removing the need to use a third party belt calculator like the WCP belt calculator to get appropriate belt center to center distances.

Configurable Parts

I’ve also created several configurable parts which may be of use, all of which can be found in the FRC Belt calculator document. Most notably, I’ve created a configurable belt, which should allow you to place standard belts into assemblies directly.

You can also find an updated version of @Ty_Tremblay’s MKcad configurable pulley generators, where I’ve merged the GT2 and the HTD versions into one, standardized the options between them, and changed some of the behind the scenes values to work better for featurescript.

Furthermore, I have also created configurable part studios of all of the VEXpro GT2 and HTD pulleys. There is one with all of the VEXpro GT2 pinions and pulleys, one with all of the VEXpro HTD pulleys for 9mm wide belts, and one with all of the VEXpro HTD pulleys for 15mm wide belts. These should make the process of finding the appropriate VEXpro pulley to insert into an assembly a much more straightforward experience.

Thanks to Ernie Huerta for creating the original Creo belt calculators which inspired this one. Thanks to Andrew Kempen for helping me with some of the automatic belt selector code, and to Everen Wegner for helping with bug testing and refining the UI design.

If you have any feedback or suggestions for improvement, please let me know. I hope you enjoy using the calculator!


Top tier. Well done

1 Like

This looks magnificent!

Any chance we could also get the AndyMark lineup added? Their 15mm width HTD belts have several lengths that are missing on the current list, the 42T pulley is ubiquitous having been in every KoP drive system since 2013 or 2014, and the 93T 9mm width belt they use on TileRunner was a just-right length on our 2019 intake.

I know GT2 is where the game is headed, but this year more than ever it’ll be helpful for teams to be able to clean out the fridge a bit!


While it might be a bit much to ask, you could also try to do anything that actually exists on vbeltguys… unfortunately there’s not a great way to do that without doing some web scraping.

1 Like

Andymark belts shouldn’t be too much of a problem. I’ll add them in the next feature release. I’ll see what I can do about the Andymark pulleys as well.

1 Like

For the Vbeltguys ask, here’s the list of all belts from them available between 0-1000t for 9mm and 15mm width 5M (HTD-compatible)

[24, 25, 36, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 158, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 176, 178, 179, 180, 182, 184, 185, 186, 187, 188, 190, 192, 193, 195, 196, 198, 200, 204, 205, 207, 208, 210, 212, 216, 218, 220, 221, 222, 223, 225, 226, 227, 229, 230, 232, 235, 236, 237, 239, 240, 242, 245, 247, 248, 250, 252, 254, 256, 259, 260, 267, 270, 275, 276, 278, 280, 284, 285, 290, 291, 298, 300, 304, 305, 306, 317, 319, 320, 323, 334, 337, 338, 340, 344, 346, 350, 356, 358, 360, 374, 376, 379, 389, 392, 400, 420, 422, 432, 450, 470, 475, 500, 505, 530, 550, 560, 582, 624, 640, 651, 674, 680, 686, 750, 754, 760]


This is excellent! Terrific Job!

Got a chance to play with this a little bit more. One of the tips I might add would be to add a range just under the calculated c-c (probably down to -.07" or so) that doesn’t raise an error. There are many reasons to run lower c-c distances, such as reducing current draw on high-speed mechanisms like intakes.

I really like the integrated custom pulleys, but I’m not a fan of deriving COTS pulleys for something like this-- I consider that a bad habit since it can easily result in duplicate geometry.

Nice work!

At this current point in time, I’m kinda hesitant to add the V-belt guys to the calculator. This is for a few reasons. First of all, their catalog is very large, which I could see causing issues due to the size of the drop down, particularly on smaller screens.

Also, and please correct me if I’m wrong, I’m not sure of how many teams actually use them for belts. I’ve personally never heard of them before, but I also don’t make a habit of asking where teams get their belts at competition, so I just don’t know how popular they are in FRC.

In the interim, since they do sell so many sizes of belts, it should be relatively straightforward to simply use the custom belt length option, and then round off to the closest belt size manually. I know it’s a little more tedious, but I’m thinking it shouldn’t be to awful to use.

If anyone else does use them, and would like to see their catalog added, please let me know, and I’ll definitely take another look at adding it.

We’re almost exclusively going to be ordering from vbeltguys in the coming months, since they’re way cheaper and offer more variety than frc specific suppliers

1 Like

Alternatively, you could have a checkbox for custom belt sizes, and have people input their own tooth counts

You can already select “custom belts” to enter any belt size you want, rather than choosing a supplier, like Rev belts only or VEXpro belts only. The main benefits of adding a supplier is that it changes from a filed to a drop down, and the auto belt chooser will only return the selected supplier’s belts, making it easier to find the best belt length for your needs.

I’ll look into adding the Vbelt guys then, eh chic should be a problem unless the drop down becomes to large and goes off the screen.

Hello all, I’ve just released an update to my FRC belt calculator with several helpful new features.

  • Andymark belts - I’ve added Andymark’s 9mm wide and 15mm wide HTD belts as another default option in the selectable dropdown.
    • Note that I choose not to differentiate between gates and generic belts they sell in order to keep things simple.
  • Pulley orientation - Pulleys now tend to orient their hex profiles relative to the world rather than your belt selection. This means that their hex profiles should line up relative to other pulleys and other parts.
  • Center to center adjustment - You can now enter a slight adjustment to your center to center distance, in case you want to modify the tension slightly from the default value.
    • Adjusting the center to center also adjusts the belt model, so it won’t interfere with your pulleys and will reflect the desired center to center distance.
  • Code modifications - I’ve improved the code to allow you to more easily make changes to it, even if you have little to no featurescript and/or coding experience.
    • Easily adjust default values, which have all been called out with annotations and/or moved near the top for easy locating and modifying.
    • Add up to two custom suppliers of your choosing. Does your team buy all their belts from a small, local supplier? Add their inventory to the calculator. Does your team have lots of random belts lying around your shop? Add the belts your team has on hand to the calculator.
  • Descriptions - I’ve updated the calculator to take advantage of the recently released featurescript descriptions; there are now descriptions for many of the more complicated features, which better explains their functionality and uses.
  • Custom icon - there is now a custom icon for the belt calculator, drawn by Eliza Barnett of team 1745.

I’ve also chosen to disable the option to add COTs VEXpro pulleys by default, as they do not function properly with Onshape’s bills of materials, and because it is generally best to avoid placing strictly COTs parts inside part studios unless absolutely necessary. However, you can easily re-enable them via a simple code change, so you can re-enable them if you wish.

As an added bonus, I’ve also made several improvements to @rickyrobot’s Extrusion Featurescript (with his blessing). If you’re not familiar with it, Ricky’s Featurescript allows easy insertion of many different types of extrusions, including hex shaft, tube stock, angle, spacers, and more. It’s my go to for pretty much every COTs item with a length.

  • Offset - you can now enter an offset for extrusions, making it easier to place them exactly where you want.
  • Mate connector selection - It is now possible to select mate connectors in addition to sketch points when placing extrusions.
  • Custom icon - The Extrusions featurescript also has a shiny new custom icon, also drawn by Eliza Barnett.

Ricky’s custom length extrusions featurescript, as well as a few other miscellaneous featurescripts, can be found here:

My FRC belt calculator featurescript can be found here:

If you already use one or both featurescripts, you can update them in your toolbar by right clicking and choosing update. As always, If you have any feedback or suggestions for improvement, please let me know. I hope you find these features useful!


Feature request: Can you increase the range of c-c adders? We usually run 20 thou undersized, and I know other teams have gone far more undersized, so being restricted to ± 0.01 is a bit limiting

+1 to this, we typically use -0.03 down to -0.08 in serious cases with short belts.

I’d like to add to the compliments here: +1, this will help a huge ton, thank you!

Sure thing. 0.01 was just an arbitrary number I choose when first designing.

1 Like

Hello all,
I’ve just pushed a new version of my Belt Calculator FeatureScript which features a new pulley profile for HTD belts which should work much better than the old version (I hope!). I would accordingly recommend that teams upgrade to the latest version, which can be found here:

You can also find documentation for the Belt Calculator FeatureScript here:

If you have HTD pulleys added using an old version of the Belt Calculator FeatureScript, you may wish to change them to the latest version in order to take advantage of the new profile and avoid potential issues while assembling.

If you have any further problems, please let me know. Credit to @Dan_Karol for creating the thread which alerted me to this issue, and @juju_beans for posting the link to the new profile. Feedback and suggestions for improvement are always welcome.

This update breaks 18t pulleys. Here is a document with that issue…


Thanks for the report - I’m investigating now.

1 Like