Skip to content

Sprocket

In one sentence: Generate a parametric sprocket (chain wheel) profile as a closed sketch wire that you can pad into a solid sprocket body, with chain standard presets for ANSI, ISO 606, bicycle, and motorcycle chains.


Overview

Workbench: Part Design · Menu: Part Design → Sprocket...
Toolbar: Part Design Modeling Features · Shortcut: none

Sprocket creates a Part::Part2DObjectPython object whose shape is a closed planar wire — the tooth profile of a sprocket matched to a specific roller chain standard. You pad (or extrude) that wire using the Pad tool to produce a solid sprocket body. Because the wire is parametric, changing any parameter recalculates the tooth geometry instantly.

The sprocket profile is generated by the fcsprocket library that ships with FreeCAD. The profile follows the standard roller-chain sprocket geometry: circular tooth flanks tangent to roller seats, a defined pitch, and a tooth width that matches the chain plate clearance.


Intuition

Think of a Sprocket object the same way you think of a regular sketch: it is a 2D profile that you turn into a solid by padding it. The difference is that instead of drawing the tooth geometry by hand (dozens of arcs and tangency constraints), you enter four numbers — pitch, roller diameter, tooth count, and tooth width — and FreeCAD draws the ISO- or ANSI-correct profile for you.

Once padded, the sprocket is a full PartDesign body feature. You can add Pockets for lightening holes, a Revolution bore for the shaft, or any other dress-up.


When to use it

  • You need a physically accurate sprocket body matched to a standard roller chain (ANSI, ISO 606, bicycle, or motorcycle chain).
  • You want a parametric sprocket that updates when the tooth count or chain standard changes.
  • You are designing a chain-drive assembly and need the sprocket solid for FEM analysis, rendering, or manufacturing documentation.
  • You want a starting profile that you can post-process with additional PartDesign features (bore, keyway, lightening holes).

When NOT to use it

  • You need an involute gear, not a roller-chain sprocket — use Involute Gear instead.
  • Your chain standard is not in the built-in list and you need full control of the tooth curve — draw the profile manually in a Sketcher sketch.
  • You only need a 2D drawing or DXF export of the pitch circle — the Sprocket object creates a solid-ready wire, not a dimensioned technical drawing.

Step-by-step walkthrough

Prerequisites: An active Body. No sketch is needed beforehand — the Sprocket creates its own profile object.

  1. Activate Sprocket. Go to Part Design → Sprocket.... FreeCAD creates a new Sprocket object and opens its task panel.

  2. Select a chain standard. In the Sprocket reference dropdown, choose the chain standard that matches your design. The pitch and roller diameter fields update automatically to the standard values. Available standards include:

    • ANSI 25 through ANSI 240 (inch series)
    • ISO 606 06B through ISO 606 24B (metric series)
    • Bicycle with derailleur, Bicycle without derailleur
    • Motorcycle 420, 425, 428, 520, 525, 530, 630
  3. Set the number of teeth. Enter the desired tooth count in the Number of teeth spinbox (minimum 3, maximum 9999, default 50).

  4. Adjust pitch and roller diameter (optional). The Chain pitch and Chain roller diameter fields are pre-filled from the selected standard. You may override them for non-standard chain. Values are entered in inches, as stored internally, but FreeCAD displays them with unit conversion according to your preferences.

  5. Set the tooth width. The Tooth width field (labelled Thickness in the internal property) sets the tooth plate clearance width. This defaults to the value from the selected chain standard and does not affect the 2D profile — it is stored for reference when you pad the sprocket.

  6. Click OK. FreeCAD calculates the tooth profile wire and adds the Sprocket to the model tree.

  7. Pad the sprocket. With the Sprocket selected, activate Pad (Part Design → Pad). Enter the pad depth — for a single-row sprocket this equals the inner width of your chain. Click OK to produce the solid.

Tip

The Tooth width value stored on the Sprocket object is an informational property that records the chain's nominal tooth width from the standard table. It does not automatically set the pad depth — you still enter the pad depth manually. Use the Sprocket's Tooth width as the reference value when setting the pad.

Tip

After padding, add a Revolution pocket for the bore and a LinearPattern or PolarPattern for lightening holes. All these features reference the same Body and update correctly when you change the tooth count.


Parameters

Parameter Type Default Description
Number of teeth Integer (3–9999) 50 Number of sprocket teeth. Determines the pitch circle diameter together with Pitch.
Sprocket reference Enumeration ANSI 25 Chain standard preset. Selecting a preset fills Pitch, Roller Diameter, and Tooth Width with standard values.
Chain pitch Length (inches internally) 0.375 in (ANSI 35) Distance between consecutive roller centres. The primary parameter controlling sprocket size.
Chain roller diameter Length (inches internally) 0.200 in (ANSI 35) Diameter of the chain roller. Controls the radius of the tooth root seating arc.
Tooth width Length (inches internally) 0.168 in (ANSI 35) Width of the tooth (inner plate clearance of the chain). Stored for reference; use as the pad depth.

Chain standard reference table (selected entries)

Standard Pitch (in) Roller Ø (in) Tooth width (in)
ANSI 25 0.250 0.130 0.110
ANSI 35 0.375 0.200 0.168
ANSI 40 0.500 0.312 0.284
ANSI 50 0.625 0.400 0.343
ANSI 60 0.750 0.469 0.459
ANSI 80 1.000 0.625 0.575
ISO 606 06B 0.375 0.225 0.205
ISO 606 08B 0.500 0.305 0.276
ISO 606 16B 1.000 0.670 0.638
Bicycle w/ derailleur 0.500 0.3125 0.110
Motorcycle 530 0.625 0.400 0.343

(All 30 standards in the built-in table are listed in the Sprocket reference dropdown.)


Advanced usage

Overriding standard values

After selecting a chain standard preset, the Chain pitch and Chain roller diameter spinboxes become editable. You can enter any values to model non-standard or custom sprockets. The tooth profile is recomputed using whatever values are currently in those fields, regardless of the selected preset name.

Multi-row sprockets

FreeCAD's Sprocket tool generates a single-row tooth profile. For a double- or triple-row sprocket, create the single-row profile, pad it to the single-row width, then use additional Pads or Revolve features for the spacers and repeat the tooth pad. Alternatively, model the multi-row profile as a single wider sketch by duplicating the tooth geometry manually in Sketcher.

Using the sprocket in an assembly

After padding, the sprocket is a regular PartDesign Body. In Assembly workbench or the Assembly 4 add-on, mount it on a shaft using a Bore concentric constraint. The pitch circle radius is Pitch * NumberOfTeeth / (2 * pi) — use this value in layout sketches to position meshing sprockets correctly.

Changing the standard after padding

If you change the Sprocket reference or Number of teeth after padding, the wire profile recalculates but the Pad feature uses a stored depth value and will not automatically update. The model tree may show a warning. Click Refresh / Recompute (Model menu → Refresh) to propagate the changes through the Pad.


Common mistakes and pitfalls

Sprocket is placed outside the Body or appears in the wrong location

Cause: The Sprocket object was created while the wrong Body was active, or no Body was active.
Fix: Make sure exactly one Body is active (double-click it in the model tree to activate) before invoking Part Design → Sprocket. The Sprocket object is added to the active Body automatically.

Pad depth does not match the chain width

Cause: The Pad depth was entered as an arbitrary value rather than the tooth width from the chain standard.
Fix: Read the Thickness (tooth width) property from the Sprocket object in the Properties panel and use that value as the Pad depth. For double-row chains, use twice the tooth width plus the spacer width.

The profile looks correct but the Pad fails

Cause: The Sprocket wire is not a closed loop due to floating-point gaps between arc endpoints when the tooth count is very high.
Fix: Try reducing the number of teeth or reporting the issue. For very high tooth counts (above ~500) the profile generator may produce tiny gaps. A workaround is to reduce teeth, then scale the sketch manually.

Changing Number of teeth causes the Pad to show an error

Cause: After a tooth count change, the 2D wire is recalculated but the downstream Pad feature needs a recompute.
Fix: Select the Pad in the model tree and press Space to toggle visibility, or use Model → Refresh. This forces a fresh recompute of the full feature chain.


Python API

Minimal example

import FreeCAD as App
import FreeCADGui as Gui
import SprocketFeature

doc = App.newDocument()

# Create the Sprocket profile object
sprocket = SprocketFeature.makeSprocket("Sprocket")

# Set parameters
sprocket.NumberOfTeeth = 18
# Select ANSI 40 (index 3 in the SprocketReferenceRollerTable)
# Pitch = 0.500 in, Roller Ø = 0.312 in, Tooth width = 0.284 in
sprocket.Pitch = "0.5 in"
sprocket.RollerDiameter = "0.312 in"
sprocket.Thickness = "0.284 in"

doc.recompute()

# Pad the sprocket to the tooth width
import PartDesign
body = App.ActiveDocument.getObject("Body")
pad = doc.addObject("PartDesign::Pad", "SprocketPad")
body.addObject(pad)
pad.Profile = sprocket
pad.Length = sprocket.Thickness.Value  # use tooth width as pad depth
doc.recompute()

print(f"Sprocket pitch circle Ø ≈ {sprocket.Pitch.Value * sprocket.NumberOfTeeth / 3.14159:.2f} mm")

Key properties

Property Type Default Description
NumberOfTeeth App::PropertyInteger 50 Number of sprocket teeth (3–9999).
SprocketReference App::PropertyEnumeration "ANSI 25" Chain standard preset name.
Pitch App::PropertyLength 0.375 in Chain pitch (centre-to-centre roller spacing).
RollerDiameter App::PropertyLength 0.200 in Chain roller diameter.
Thickness App::PropertyLength 0.168 in Tooth width / chain inner plate clearance.

See also

  • Involute Gear — parametric involute spur gear profile
  • Pad — extrude the sprocket wire into a solid
  • Pocket — add a bore or lightening holes to the padded sprocket
  • Polar Pattern — pattern lightening holes around the sprocket axis