Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
New FeatureScript: Crush Ribs — Parametric Press-Fit Ribs for Cylindrical Holes
mikey_strauss
Member Posts: 7 ✭
Hi everyone,
I’ve been taking my first real steps in proper 3D modeling (I came from Tinkercad, so this was a big jump for me 😅), and I wanted to share something useful that came out of that learning process.
I wrote a FeatureScript called Crush Ribs — a fully parametric tool for generating wedge-shaped crush ribs inside cylindrical holes. This is especially handy for 3D-printed press fits, friction-fit inserts, and parts that need just a little extra grip without modifying the hole diameter.
👉 Document link: Crush Ribs FeatureScript
The feature creates wedge-shaped ribs arranged radially inside a hole.
Ribs are automatically aligned to the cylindrical axis and can be trimmed, filleted, and merged cleanly into the surrounding geometry.
Key capabilities
Geometry Controls
- Number of ribs (1–100)
- Rib width (tangential/chord)
- Rib height (radial intrusion)
- Rib length (axial depth)
- Optional axial offset (start ribs deeper inside hole)
Fillets
- Rib tip fillet — rounds the inner rib edges at the deepest point
- Head fillet — softens the ring where ribs meet the entry surface
Trimming
- Optional Trim face selection:
- planar
- angled
- curved
- counterbore floors
Ribs extend past the trim face and are cut cleanly.

Comments
That is certainly useful. Are you aware of the published FS called "Tapless 3D-printed thread" by kenn_sebesta167? It appears pretty similar in what it does. There is one thing I miss in both: A simple way to define standard setups. Like, I usually use a certain series of inserts and don't want to enter the same numbers time and again.
@martin_kopplow Thanks! I actually wasn’t aware of the “Tapless 3D-printed thread” FeatureScript — just checked it out now. It’s a cool approach, and for some usecases create very similar results, but it’s aimed more at creating a dense toothy pseudo-thread, while mine focuses on traditional crush ribs: simple wedge ribs with custom length and angled hole.
As for state-full presets: Onshape doesn’t give a custom FeatureScript its own built-in preset storage. The configuration panel can hold multiple presets, but they only apply to features whose parameters are explicitly driven by configuration variables. A new feature instance won’t automatically pick up those presets.
From FeatureScript you can only read individual config variables via
getVariable(context, "Name"), so to pull in a full preset you still need onegetVariableper value (rib width, height, length, etc.). There’s no way to grab a whole preset in one call.If you have a example or pattern you think can work, i be happy to try and tackle the issue.
An admittedly non-trivial workaround is to treat a “preset” as a part: apply the feature once to a reference part, then reuse that part in multiple mate locations and combine it with the main geometry using booleans. In that approach, the part effectively stores the state/preset.