Some Helpful Featurescripts

Yeah - just tried it out lol & it seems difficult to use in a part studio for an entire subsystem like a drivetrain >_[

1 Like

Not a featurescript, but configurable vex sprockets.

Search “Vex Sprockets (Configurable) - FRC 1745” when inserting. I will move this to MKCad eventually…

1 Like

You’ll need to describe your workflow in a little more depth. What types of tubes are you adding holes to? What is the hole pattern?

My Custom Length Extrusion featurescript allows you to add some types of hole patterns in the ‘Other’ tab. It works only for Rectangular Tube, Angle, C-Channel, and Rectangular Bar. But this is not a featurescript just to add holes patterns to parts you make. That part of it could theoretically be pulled out separately.

We Typically draw all the tubes in a sub assm in a single master sketch and extrude them from that single sketch, this means that we can go back and change all dimensions for the sub assm in one place.

I’ve been looking around in the configurable tub featurescript and im going to try and extract the hole pattern part of it!

1 Like

Thanks, this is good to know. However, I was mainly looking for something to make large >10" sprockets for turrets and such.

This is what I used to create the configurable sprocket files.

Alternatively, here is a direct link to the configurable sprocket document. It includes all the math from above. You can make a copy of one of the part studios and create whatever size sprocket you want.

1 Like

By request of @jjsessa I’ve added a script to convert an extruded block of any size into a hole-patterned tube. Link is here. (“Tube Converter”)


Absolute life saver, especially on tubes that are slanted which would typically require its own sketch + extrude to put holes into.

turns this mess of sketches and features for holes into a single feature per tube:


no way.


The only “catch” about it is that for things relative to the holes on the tube you have to model it more parametrically since the feature patterns the holes from the center of the tube, but it is good practice to do so regardless


parametric on the left side, not parametric (uses convert entities for the holes and models based off of those holes) on the right side

From this:

To this:

1 Like

Wow @dydx, TSMFC.

@juju_beans our solution to this problem has always been to model gussets as slots with only the corners of the gussets constrained. This means when we change a tube length we just quickly jump back to the broken gussets, delete the concentric constants and move the corners of the gussets back to the correct holes. Not completely parametric but probably saves more time in the long run.

cough cough parametric gusset feature script? cough cough


Input is multiple tubes by query and a number of rows of holes to cover, output is a gusset in place?

1 Like

Something like that. Here’s how we draw our gussets:

Construction lines:

Offset the consturction lines:

Fillet the corners:

Put in holes:
Linear pattern of holes (the parametric way):

If I’m lazy I just end up doing convert entities on the holes on the tube, but I’m not sure if that’s the best way for a script to do it.

The same result can also be achieved with slots instead of offset entities, alleviating the need for the fillet step, but it makes the sketch messier:

edit: actually I think the best way might be just to select the outside holes, would make the script easier (?) since it would just draw slots connecting all the holes, but you’ll need something to detect where to put holes in the gusset.


This feature script is amazing! Thank you so much for putting this together.

1678 will be using this with some of our off-season projects and report back with results. I very much appreciate the 1678-specific hole pattern options :slight_smile:

A few notes after poking around for a bit:

  1. It seems like your featurescript is robust to not doing any “partial holes”, even in angled cut faces. Nice job!
  2. I noticed there is a threshold somewhere between .7 and .8" over an integer length where the featurescript decides to add another row of holes. Could this be adjusted when running a .5" pattern? We would generally like for there to be another row of holes added at the .25" mark above a .5" interval in length. See below screenshots for example. The 4.7" long tube has a large gap at both ends indicating that another row of holes probably should be added sooner in the featurescript logic.

Great work on this! Can’t wait for my kids to stress test it in the coming months.



Mike, good catch. The margin is actually based on the hole size because we want to make sure that there are no partial holes. It looks like I was too conservative and set the margin to 2 hole sizes instead of 1 at some point. This is fixed so your 4.7" tube should now have the proper holes.

I’ve also added a margin adjustment box in case you really want an extra row of holes that the script otherwise wouldn’t let you add.

The first 4 are the same as yours, the 5th has a 1" inset margin.

The new version should be published now.



Just tried the update, looks great!

Another feature request! Sometimes, there’s a tube that we’d prefer for the hole pattern to start .5" from one end, rather than centered between the extents. This is particularly applicable for tubes with an angled face on one side, we typically want the square end to be nominal (.5" from end of tube) and don’t care where the hole pattern ends up on the angled side.

Does this make sense? Is this possible?

This is super cool, I like the margin adjustment ability.



Thank you for this feature script. I had never used one before and this was very easy to implement and works very well.

1 Like

(It’s kind of hard to see but this tube has the pattern starting at 0.5" above the bottom)

New version should be available. The option is “Centered on tube” / “Offset from End” and you can choose which face to base off.



You rock! This is perfect, exactly what I was envisioning.

Thank you so much for this.




@dydx I’ve loved working with this new tube featurescript. Would love it even more if it worked on tubes with features already in them. Example - I have this tube here that I made and put bearing holes in a previous operation. The FS is doing a good job of hollowing it out, but is creating weird geometry around the hole I already have in there. Would also be nice to have some cases to avoid existing geometry - say I make a tube with critical features then want my normal hole pattern to work “around” it.

Thanks for your hard work!