Skip to content

Add involute splines - #623

Merged
jmtts merged 1 commit into
mainfrom
claude/sleepy-gates-hvgksm
Oct 26, 2026
Merged

jmtts merged 1 commit into
mainfrom
claude/sleepy-gates-hvgksm

Conversation

@werk24

@werk24 werk24 commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

An involute spline is specified by a standard, for example DIN 5480 - W 40 x 2 x 30 x 18 x 8f. That reads as:

  • W: a shaft (a hub is written N);
  • 40: the reference diameter;
  • 2: the module;
  • 30: the pressure angle in degrees;
  • 18: the number of teeth;
  • 8f: the tolerance class (quality 8, deviation f; a hub's class is in capitals, e.g. 9H).

The older form of the designation leaves out the pressure angle: W 40 x 2 x 18.

What changes

  • New model InvoluteSpline (a Feature) with these fields:
    • quantity
    • standard
    • spline_side, which reuses SplineSide (SHAFT / HUB)
    • reference_diameter (Size)
    • module
    • pressure_angle, optional
    • number_of_teeth
    • tolerance_class, optional and kept as written (8f, 9H, 9H/8f)
  • ResponseFeaturesComponentDrawing.involute_splines: a new list beside splines. It defaults to empty, so responses from older servers still parse, and older clients ignore it.
  • InvoluteSpline is its own model rather than a variant of Spline because the two are sized by different things: straight-sided splines by a count and two diameters, involute splines by a module and a number of teeth.

Tests: five new tests in tests/test_standard_features.py cover:

  • a round trip;
  • the older form without the pressure angle or the class;
  • the bounds on teeth, module and quantity;
  • the response round trip;
  • a response without the new list.

.venv/bin/python -m pytest on Python 3.13: 1046 passed, 5 skipped (the 5 need credentials).

Questions for the owner

None.


Generated by Claude Code

An involute spline is specified by standard with its reference diameter,
module, pressure angle, number of teeth and tolerance class:
`DIN 5480 - W 40 x 2 x 30 x 18 x 8f` is a shaft (W) with a reference
diameter of 40, module 2, a 30 degree pressure angle, 18 teeth and the class
8f; a hub is written with N and a class in capitals (9H).
ResponseFeaturesComponentDrawing now carries them as `involute_splines`,
with the model InvoluteSpline. It reuses SplineSide for shaft or hub.

The list defaults to empty, so responses from servers that predate it still
parse, and clients that predate it ignore it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jmtts
jmtts merged commit 5c29b70 into main Oct 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants