Trunnion TopOpt Try it live
Python · FEA · CadQuerylive

A 5-axis printer part optimised for every tilt angle

Topology-optimised A-axis trunnion upright: stiff for loads in any tilt direction and for belt pull, prints with no supports, checked by fine-mesh FE.

Python · FEA · CadQuery
trunnion-topopt · live demolive demo
Trunnion TopOpt screenshot
3platforms: Python, FEA, CadQuery
4.6′axle tilt under 100 N belt pull
0.0 %unsupported overhang at 45°
1.96 N·mmworst-case compliance, from 6.83
Why it exists

The load turns with the tilt axis.

On an AC-trunnion 5-axis printer the bed tilts, so the load on each trunnion upright turns with the A axis.

Trunnion TopOpt optimises the A-axis upright for 80 N in any direction of the tilt plane plus 30 N along the axle, and for a 100 N belt pull on a pulley 15 mm outboard of the outer bearing.

How it works

Get the part

  1. 1

    Open the results page

    Rotate the 3D view, compare the designs and read the six pass/fail checks.

  2. 2

    Download the STL

    trunnion_upright_v4_final.stl is watertight and one body.

  3. 3

    Finish the seats

    Ream the 28 mm bearing seats to H7 for the press fit, then check stiffness with a test print.

What's inside

What the optimiser checks

Any tilt direction

A p-norm over the eigenvalues of the load-envelope compliance matrix covers 80 N in every tilt-plane direction plus 30 N axial.

Belt pull included

100 N on a pulley 15 mm outboard, in any direction. v4 tilts the axle 4.6 arcmin, inside the 5 arcmin target.

No supports

A 45° additive-manufacturing filter keeps unsupported overhang at 0.0 % for the build direction +Z.

Exact interfaces

Two 6001-2RS seats, a 16 mm bore, four M5 holes and hex-key access columns, rebuilt as a single valid STEP solid.

Fine-mesh verified

Independent FE at 1.25 mm agrees with the 2.5 mm mesh within about 3 %.

Six designs compared

A hand-style baseline, a single-load optimisation and four improvements, each with the same checks.

Good to know

Honest limits.

Straight from the README, so you know what you're getting before you try it.

  • A checked computer model, not a tested part.
  • Material treated as isotropic (PA-CF or PETG-CF, E = 3.0 GPa, 100 % infill).
  • Loads, bearings and the 5 arcmin tilt limit are stated assumptions, not a supplied specification.
  • v4 weighs 179 g. The lighter v2 (129 g) meets 5 arcmin only if belt pull stays below 56 N.
Under the hood

How it's built.

Built with

Language
PythonJavaScriptHTML/CSS
Data
NumPy
CAD
CadQuery

38 files in the repo · last updated 8 Nov 2026.

Browse the code
Questions

Good questions.

What does it run on?

Python, FEA, CadQuery. You can try it in the browser with nothing to install.

Where do I start?

Open the results page: Rotate the 3D view, compare the designs and read the six pass/fail checks.

What doesn't it do yet?

A checked computer model, not a tested part. Material treated as isotropic (PA-CF or PETG-CF, E = 3.0 GPa, 100 % infill).

Is it finished?

Not yet: it's marked “live” and still changing. The README always has the current state.

Is it free?

The source is public on GitHub under the MIT licence.

Who made it?

Juwen Lie, an R&D mechanical engineer in Batam, Indonesia, as an independent personal project.

Keep exploring

More from the same workbench.

Every number from fine-mesh FE.

A 5-axis printer part optimised for every tilt angle