Unified worm gear calculator and CNC-ready 3D geometry generator
Project description
Wormgear
Worm gear design: engineering calculations to CNC-ready STEP files.
Two Ways to Use
1. Web Calculator (No Installation)
Design worm gear pairs in your browser:
- Calculate parameters from engineering constraints
- Real-time validation (DIN 3975/DIN 3996)
- Export JSON for geometry generation
- Works on any device
2. Python Package (For 3D Geometry)
pip install wormgear
Generate CNC-ready STEP files:
# Design in browser at wormgear.studio, download JSON, then:
wormgear-geometry design.json
# Or generate with specific options:
wormgear-geometry design.json --profile ZK --globoid --worm-bore 8
Quick Examples
Command Line
# Basic generation (auto-sized bores and keyways)
wormgear-geometry design.json
# For 3D printing (convex tooth flanks)
wormgear-geometry design.json --profile ZK
# For CNC machining (straight flanks, default)
wormgear-geometry design.json --profile ZA
# Globoid worm (hourglass shape, better contact)
wormgear-geometry design.json --globoid
# Custom bore sizes
wormgear-geometry design.json --worm-bore 8 --wheel-bore 12
# View in VS Code (requires ocp-vscode extension)
wormgear-geometry design.json --view --no-save
Python API
from wormgear.calculator import design_from_module, validate_design
from wormgear.core import WormGeometry, WheelGeometry, BoreFeature, KeywayFeature
from wormgear.io import save_design_json
# Calculate parameters
design = design_from_module(module=2.0, ratio=30)
validation = validate_design(design)
if validation.valid:
save_design_json(design, "design.json")
# Generate 3D geometry
worm = WormGeometry(
params=design.worm,
assembly_params=design.assembly,
length=40.0,
bore=BoreFeature(diameter=8.0),
keyway=KeywayFeature()
)
worm.build()
worm.export_step("worm.step")
Features
- Engineering calculations per DIN 3975/DIN 3996
- Validation with errors and warnings
- Tooth profiles: ZA (CNC), ZK (3D printing), ZI (hobbing)
- Worm types: Cylindrical, Globoid (hourglass)
- Wheel generation: Helical or virtual hobbing
- Features: Bores, keyways (DIN 6885), set screws, hubs
- Output: Watertight STEP files for CAM/slicers
Requirements
- Python 3.9+
- build123d (installed automatically)
Note: build123d requires OpenCascade. Most platforms handle this automatically via pip, but see build123d installation if you encounter issues.
Design Workflow
- Design at wormgear.studio
- Download the JSON file
- Generate geometry:
wormgear-geometry design.json - Import STEP files into CAD/CAM software
- Manufacture via CNC or 3D printing
CLI Reference
wormgear-geometry design.json [OPTIONS]
Options:
--profile {ZA,ZK,ZI} Tooth profile (default: ZA)
--globoid Generate globoid (hourglass) worm
--virtual-hobbing Use virtual hobbing for wheel
--worm-bore MM Override worm bore diameter
--wheel-bore MM Override wheel bore diameter
--no-bore Generate solid parts (no bores)
--no-keyway Omit keyways
--worm-length MM Worm length (default: 40)
--wheel-width MM Wheel width (default: auto)
-o, --output-dir DIR Output directory
--view View in OCP viewer
--no-save Don't save STEP files
-h, --help Show all options
Documentation
- Architecture - System design
- Geometry - Technical specification
- Engineering Context - Standards and formulas
Background
Created for custom worm gear design in luthier (violin making) applications, where standard gears don't fit unusual envelope constraints. Extended to support CNC machining and 3D printing for makers and engineers.
License
MIT
Author
Paul Fremantle (@pzfreo)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wormgear-0.0.49.tar.gz.
File metadata
- Download URL: wormgear-0.0.49.tar.gz
- Upload date:
- Size: 181.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf3f9b3fe6411f916874a341477be9cfba55507ac94f467601c7dea72ed516c
|
|
| MD5 |
f42ba07f763bf5dea311dafed1ec218d
|
|
| BLAKE2b-256 |
88031094c1e6750524f94439c4eb6b9456a41e75df8d8f0b8d7f391a2a691311
|
Provenance
The following attestation bundles were made for wormgear-0.0.49.tar.gz:
Publisher:
publish.yml on pzfreo/wormgear
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wormgear-0.0.49.tar.gz -
Subject digest:
8bf3f9b3fe6411f916874a341477be9cfba55507ac94f467601c7dea72ed516c - Sigstore transparency entry: 953469680
- Sigstore integration time:
-
Permalink:
pzfreo/wormgear@534d669bde7a527b08156ad54d26b653019e7be7 -
Branch / Tag:
refs/tags/v0.0.49 - Owner: https://github.com/pzfreo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@534d669bde7a527b08156ad54d26b653019e7be7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file wormgear-0.0.49-py3-none-any.whl.
File metadata
- Download URL: wormgear-0.0.49-py3-none-any.whl
- Upload date:
- Size: 126.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83813026fee6d7b3633215b4bfc7f4d7912f322d1f19a395acbb99b94b3bc852
|
|
| MD5 |
908a4140c4f91b7b4affa612c591880d
|
|
| BLAKE2b-256 |
d60821da9ca373107cf36e683fdeec849f6fdb52123c8be55cb5088e83e900aa
|
Provenance
The following attestation bundles were made for wormgear-0.0.49-py3-none-any.whl:
Publisher:
publish.yml on pzfreo/wormgear
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wormgear-0.0.49-py3-none-any.whl -
Subject digest:
83813026fee6d7b3633215b4bfc7f4d7912f322d1f19a395acbb99b94b3bc852 - Sigstore transparency entry: 953469681
- Sigstore integration time:
-
Permalink:
pzfreo/wormgear@534d669bde7a527b08156ad54d26b653019e7be7 -
Branch / Tag:
refs/tags/v0.0.49 - Owner: https://github.com/pzfreo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@534d669bde7a527b08156ad54d26b653019e7be7 -
Trigger Event:
release
-
Statement type: