Cylindrical Joint¶
In one sentence: Allow a part to both rotate and slide along a single axis simultaneously — the joint for splined shafts and telescoping drives.
Overview¶
Workbench: Assembly
Menu: Assembly → Joints → Cylindrical
Shortcut: C
DOF removed: 4 | DOF remaining: 2 (rotation + translation along one axis)
A Cylindrical joint aligns two axes and keeps them co-linear while allowing both free rotation and free axial translation about that shared axis. All off-axis translation and off-axis rotation are locked. It is the combination of a Revolute and a Slider on the same axis — but with the rotation and translation completely independent of each other.
Intuition¶
Imagine a pen cap sliding onto a pen barrel: the cap can both rotate around the barrel's axis and slide along it — two independent DOF on one axis, with no motion permitted in any other direction. A Cylindrical joint models exactly this.
The key distinction from a Screw joint is independence: in a Cylindrical joint the part can rotate without advancing and advance without rotating. In a Screw joint, rotation and translation are rigidly linked by a pitch ratio.
When to use it¶
- A splined shaft that can both spin and slide axially in a splined bore (e.g. telescoping drive shaft, sliding gear selector).
- A telescoping tube where both rotation and length change are independent.
- Any mechanism where rotation and axial translation on one axis must be independently free.
When NOT to use it¶
- Don't use Cylindrical if rotation and translation are linked by a ratio — use Screw instead (a Cylindrical joint with a fixed pitch coupling).
- Don't use Cylindrical if the shaft cannot slide — use Revolute to lock axial translation.
- Don't use Cylindrical if the shaft cannot rotate — use Slider to lock rotation.
Step-by-step¶
- Press
Cor choose Assembly → Joints → Cylindrical. - Click a cylindrical face or circular edge on Part 1.
- Click the mating cylindrical face or edge on Part 2.
- Optionally set an Offset (initial axial position) and Rotation (initial angle) in the task panel.
- Click OK.
Parameters¶
| Parameter | Type | Default | Description |
|---|---|---|---|
| Reference 1 | Link | — | Cylindrical face or circular edge on Part 1 |
| Reference 2 | Link | — | Cylindrical face or circular edge on Part 2 |
| Offset | Length | 0 mm | Initial axial offset along the axis |
| Rotation | Angle | 0° | Initial rotation angle |
Python API¶
Minimal example¶
import FreeCAD as App
doc = App.ActiveDocument
asm = doc.getObject("Assembly")
joint = asm.Joints.newObject("Assembly::JointObject", "SplinedShaft")
joint.JointType = "Cylindrical"
joint.Reference1 = (doc.getObject("OuterTube"), ["Face2"])
joint.Reference2 = (doc.getObject("InnerShaft"), ["Face1"])
doc.recompute()
Common mistakes and pitfalls¶
Cylindrical vs Screw for lead-screw mechanisms
Both allow rotation and translation on the same axis, but a Cylindrical joint makes them independent — the part can rotate without advancing. A lead screw requires a fixed ratio between rotation and advance. Use the Screw joint for that.
Cylindrical removes only 4 DOF
If your mechanism count shows more residual DOF than expected, check whether a Cylindrical joint was intended to be a Revolute (5 DOF removed). The extra free axial translation may be the source.
See also¶
- Revolute Joint — rotation only (locks axial translation)
- Slider Joint — translation only (locks rotation)
- Screw Joint — rotation and translation on one axis, linked by a pitch ratio
- Solve Assembly — apply joints