Skip to main content

Unified worm gear calculator and CNC-ready 3D geometry generator

Project description

Wormgear

Worm gear design: engineering calculations to CNC-ready STEP files.

PyPI version License: MIT

Two Ways to Use

1. Web Calculator (No Installation)

https://wormgear.studio

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

  1. Design at wormgear.studio
  2. Download the JSON file
  3. Generate geometry: wormgear-geometry design.json
  4. Import STEP files into CAD/CAM software
  5. 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

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wormgear-0.0.48.tar.gz (181.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wormgear-0.0.48-py3-none-any.whl (126.4 kB view details)

Uploaded Python 3

File details

Details for the file wormgear-0.0.48.tar.gz.

File metadata

  • Download URL: wormgear-0.0.48.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

Hashes for wormgear-0.0.48.tar.gz
Algorithm Hash digest
SHA256 9d9c68a250e0aaf88ae521d0ba6e91457845e6d17b18dc4f2653f127e847cff4
MD5 0ca3156adc5c1eb83c029052e4795f83
BLAKE2b-256 97d092fe23ab2ef30e8e49836f3195a9551e33704769366542a25c053e4ee2a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for wormgear-0.0.48.tar.gz:

Publisher: publish.yml on pzfreo/wormgear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wormgear-0.0.48-py3-none-any.whl.

File metadata

  • Download URL: wormgear-0.0.48-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

Hashes for wormgear-0.0.48-py3-none-any.whl
Algorithm Hash digest
SHA256 33bc66e08c5746e7d96a3e5ae78466734c087e263e9d8098c986ecd95a3d17f0
MD5 1d1915f1a473c230245cdc2c399ea5bd
BLAKE2b-256 9e99a4a99ffe7254e5d3ce445379adb04397884f3b629b2e12acbc9289b0faee

See more details on using hashes here.

Provenance

The following attestation bundles were made for wormgear-0.0.48-py3-none-any.whl:

Publisher: publish.yml on pzfreo/wormgear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page