steve/timing-pulley
Flanged timing pulley envelope: GT2 (2GT), GT3 (3GT) and MXL, tooth counts, belt widths and bores as presets.
GT2 (2GT) open timing belt as a straight envelope: width and length as parameters, with common lengths as presets.
| 1 | """Open-ended GT2 (2GT) timing belt, straight, 2 mm pitch: length along X, centred on the origin, back of the belt up, teeth down on the XY plane. detail = "full": the teeth along the |
| 2 | length; tooth width is a proportion for looks, not for design (only the height and pitch are published). A belt over 500 mm carries teeth along 250 mm at each end, the middle at full |
| 3 | height: more teeth build too slowly for a belt. detail = "simple": a plain bar of the belt's overall height.""" |
| 4 | import math |
| 5 | |
| 6 | from steve import Model |
| 7 | |
| 8 | width = 6 # mm Belt width |
| 9 | length = 300 # mm Belt length |
| 10 | detail = "full" # full: teeth; simple: a plain bar |
| 11 | |
| 12 | # Handson Technology, GT2 belt data sheet: 2 mm pitch, belt height 1.38 mm, tooth height 0.75 mm. |
| 13 | HEIGHT = 1.38 |
| 14 | TOOTH_HEIGHT = 0.75 |
| 15 | PITCH = 2.0 |
| 16 | TOOTH_WIDTH = 1.2 # a proportion for looks |
| 17 | TOOTHED_LENGTH = 500 # mm: the most of a belt that carries drawn teeth |
| 18 | |
| 19 | model = Model() |
| 20 | if detail == "simple": |
| 21 | outline = [(-length / 2, 0), (length / 2, 0), (length / 2, HEIGHT), (-length / 2, HEIGHT)] |
| 22 | else: |
| 23 | back = TOOTH_HEIGHT |
| 24 | outline = [(-length / 2, back), (-length / 2, HEIGHT), (length / 2, HEIGHT), (length / 2, back)] |
| 25 | count = int(length // PITCH) |
| 26 | centres = [(i - (count - 1) / 2) * PITCH for i in range(count)] |
| 27 | if length > TOOTHED_LENGTH: # teeth at both ends, so an end view shows them |
| 28 | kept = int(TOOTHED_LENGTH / 2 // PITCH) |
| 29 | centres = centres[:kept] + centres[-kept:] |
| 30 | for x in reversed(centres): |
| 31 | half = TOOTH_WIDTH / 2 |
| 32 | outline += [(x + half, back), (x + half * 0.6, 0.0), (x - half * 0.6, 0.0), (x - half, back)] |
| 33 | with model.sketch("belt_sketch", on="XZ", name="Belt section") as sk: |
| 34 | sk.polyline("outline", outline, closed=True) |
| 35 | model.extrude("belt", "belt_sketch", distance=width, both=True, name="Belt") |
| 36 | result = model.result() |
| 37 |
| 1 | name = "steve/timing-belt" |
| 2 | version = "1.1.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "GT2 (2GT) open timing belt as a straight envelope: width and length as parameters, with common lengths as presets." |
| 6 | description = """Open-ended GT2 timing belt, 2 mm pitch, straight, with its teeth. A belt over 500 mm carries teeth along 250 mm at each end. detail = simple is a plain bar of the overall height for big assemblies. Length along X, centred on the origin. See the README; not affiliated with any belt brand.""" |
| 7 | tags = ["belt", "timing-belt", "gt2", "2gt", "power-transmission"] |
| 8 | changes = "Real teeth. detail = simple keeps a plain bar." |
| 9 | |
| 10 | [parameters.width] |
| 11 | type = "number" |
| 12 | default = 6 |
| 13 | min = 4 |
| 14 | max = 15 |
| 15 | unit = "mm" |
| 16 | label = "Width" |
| 17 | |
| 18 | [parameters.length] |
| 19 | type = "number" |
| 20 | default = 300 |
| 21 | min = 10 |
| 22 | max = 5000 |
| 23 | unit = "mm" |
| 24 | label = "Length" |
| 25 | |
| 26 | [parameters.detail] |
| 27 | type = "choice" |
| 28 | default = "full" |
| 29 | choices = ["full", "simple"] |
| 30 | label = "Detail" |
| 31 | description = "full: teeth. simple: a plain bar of the overall height, for big assemblies." |
| 32 | |
| 33 | [[presets]] |
| 34 | id = "GT2-W6-L50" |
| 35 | title = "GT2 belt, 6 mm wide, 50 mm" |
| 36 | params = { width = 6, length = 50 } |
| 37 | aliases = ["GT2 belt 50", "GT2 timing belt 50mm", "GT2 belt", "2GT belt", "2GT 6mm 50", "GT2", "belt profile=GT2; straight reference length=50 mm; simplified envelope"] |
| 38 | standard = "Handson GT2" |
| 39 | |
| 40 | [[presets]] |
| 41 | id = "GT2-W6-L100" |
| 42 | title = "GT2 belt, 6 mm wide, 100 mm" |
| 43 | params = { width = 6, length = 100 } |
| 44 | aliases = ["GT2 belt 100", "GT2 timing belt 100mm", "GT2 belt", "2GT belt", "2GT 6mm 100", "GT2", "belt profile=GT2; straight reference length=100 mm; simplified envelope"] |
| 45 | standard = "Handson GT2" |
| 46 | |
| 47 | [[presets]] |
| 48 | id = "GT2-W6-L150" |
| 49 | title = "GT2 belt, 6 mm wide, 150 mm" |
| 50 | params = { width = 6, length = 150 } |
| 51 | aliases = ["GT2 belt 150", "GT2 timing belt 150mm", "GT2 belt", "2GT belt", "2GT 6mm 150", "GT2", "belt profile=GT2; straight reference length=150 mm; simplified envelope"] |
| 52 | standard = "Handson GT2" |
| 53 | |
| 54 | [[presets]] |
| 55 | id = "GT2-W6-L200" |
| 56 | title = "GT2 belt, 6 mm wide, 200 mm" |
| 57 | params = { width = 6, length = 200 } |
| 58 | aliases = ["GT2 belt 200", "GT2 timing belt 200mm", "GT2 belt", "2GT belt", "2GT 6mm 200", "GT2", "belt profile=GT2; straight reference length=200 mm; simplified envelope"] |
| 59 | standard = "Handson GT2" |
| 60 | |
| 61 | [[presets]] |
| 62 | id = "GT2-W6-L250" |
| 63 | title = "GT2 belt, 6 mm wide, 250 mm" |
| 64 | params = { width = 6, length = 250 } |
| 65 | aliases = ["GT2 belt 250", "GT2 timing belt 250mm", "GT2 belt", "2GT belt", "2GT 6mm 250", "GT2", "belt profile=GT2; straight reference length=250 mm; simplified envelope"] |
| 66 | standard = "Handson GT2" |
| 67 | |
| 68 | [[presets]] |
| 69 | id = "GT2-W6-L300" |
| 70 | title = "GT2 belt, 6 mm wide, 300 mm" |
| 71 | params = { width = 6, length = 300 } |
| 72 | aliases = ["GT2 belt 300", "GT2 timing belt 300mm", "GT2 belt", "2GT belt", "2GT 6mm 300", "GT2", "belt profile=GT2; straight reference length=300 mm; simplified envelope"] |
| 73 | standard = "Handson GT2" |
| 74 | |
| 75 | [[presets]] |
| 76 | id = "GT2-W6-L400" |
| 77 | title = "GT2 belt, 6 mm wide, 400 mm" |
| 78 | params = { width = 6, length = 400 } |
| 79 | aliases = ["GT2 belt 400", "GT2 timing belt 400mm", "GT2 belt", "2GT belt", "2GT 6mm 400", "GT2", "belt profile=GT2; straight reference length=400 mm; simplified envelope"] |
| 80 | standard = "Handson GT2" |
| 81 | |
| 82 | [[presets]] |
| 83 | id = "GT2-W6-L500" |
| 84 | title = "GT2 belt, 6 mm wide, 500 mm" |
| 85 | params = { width = 6, length = 500 } |
| 86 | aliases = ["GT2 belt 500", "GT2 timing belt 500mm", "GT2 belt", "2GT belt", "2GT 6mm 500", "GT2", "belt profile=GT2; straight reference length=500 mm; simplified envelope"] |
| 87 | standard = "Handson GT2" |
| 88 | |
| 89 | [[presets]] |
| 90 | id = "GT2-W6-L600" |
| 91 | title = "GT2 belt, 6 mm wide, 600 mm" |
| 92 | params = { width = 6, length = 600 } |
| 93 | aliases = ["GT2 belt 600", "GT2 timing belt 600mm", "GT2 belt", "2GT belt", "2GT 6mm 600", "GT2", "belt profile=GT2; straight reference length=600 mm; simplified envelope"] |
| 94 | standard = "Handson GT2" |
| 95 | |
| 96 | [[presets]] |
| 97 | id = "GT2-W6-L750" |
| 98 | title = "GT2 belt, 6 mm wide, 750 mm" |
| 99 | params = { width = 6, length = 750 } |
| 100 | aliases = ["GT2 belt 750", "GT2 timing belt 750mm", "GT2 belt", "2GT belt", "2GT 6mm 750", "GT2", "belt profile=GT2; straight reference length=750 mm; simplified envelope"] |
| 101 | standard = "Handson GT2" |
| 102 | |
| 103 | [[presets]] |
| 104 | id = "GT2-W6-L1000" |
| 105 | title = "GT2 belt, 6 mm wide, 1000 mm" |
| 106 | params = { width = 6, length = 1000 } |
| 107 | aliases = ["GT2 belt 1000", "GT2 timing belt 1000mm", "GT2 belt", "2GT belt", "2GT 6mm 1000", "GT2", "belt profile=GT2; straight reference length=1000 mm; simplified envelope"] |
| 108 | standard = "Handson GT2" |
| 109 | |
| 110 | [[presets]] |
| 111 | id = "GT2-W9-L300" |
| 112 | title = "GT2 belt, 9 mm wide, 300 mm" |
| 113 | params = { width = 9, length = 300 } |
| 114 | aliases = ["GT2 9mm belt 300", "GT2 9mm belt"] |
| 115 | standard = "Handson GT2" |
| 116 | |
| 117 | [[presets]] |
| 118 | id = "GT2-W9-L500" |
| 119 | title = "GT2 belt, 9 mm wide, 500 mm" |
| 120 | params = { width = 9, length = 500 } |
| 121 | aliases = ["GT2 9mm belt 500", "GT2 9mm belt"] |
| 122 | standard = "Handson GT2" |
| 123 | |
| 124 | [[presets]] |
| 125 | id = "GT2-W9-L1000" |
| 126 | title = "GT2 belt, 9 mm wide, 1000 mm" |
| 127 | params = { width = 9, length = 1000 } |
| 128 | aliases = ["GT2 9mm belt 1000", "GT2 9mm belt"] |
| 129 | standard = "Handson GT2" |
| 130 | |
| 131 | [[presets]] |
| 132 | id = "GT2-W6-L300-simple" |
| 133 | title = "GT2 belt, 6 mm wide, 300 mm, simple (no teeth)" |
| 134 | params = { width = 6, length = 300, detail = "simple" } |
| 135 | aliases = ["GT2 belt simple"] |
| 136 | standard = "Handson GT2" |
| 137 |
Open-ended GT2 (2GT) belt, 2 mm pitch, straight. Length along X, centred on the origin, teeth down on the XY plane. Tooth pitch and height are published; the tooth's width and taper are proportions for looks, not for design. A belt over 500 mm carries teeth along 250 mm at each end, because more take too long to build. detail = "simple" is a plain bar.
Handson Technology, GT2 belt data specs: pitch 2 mm, belt height 1.38 mm, tooth height 0.75 mm, as hosted at https://naylampmechatronics.com/img/cms/000117/000117 gt2-belt-B.pdf. MISUMI's catalogue gives the same 0.75 mm tooth height for 2GT (https://uk.misumi-ec.com/pdf/fa/2014/P1_1381-1382_F19_EN_001.pdf).
Some sellers list a 1.52 mm belt height for GT2 belts. Width and length are the belt's designation. Preset lengths: step.parts catalogue
metadata (MIT, library/NOTICE.md). GT3, HTD3M and HTD5M belts aren't offered yet: no table read gives their overall height.
| 1 | # Timing belt (GT2) |
| 2 | |
| 3 | Open-ended GT2 (2GT) belt, 2 mm pitch, straight. Length along X, centred on the origin, teeth down on the XY plane. Tooth pitch and height are published; the tooth's width and taper are proportions for looks, not for design. A belt over 500 mm carries teeth along 250 mm at each end, because more take too long to build. `detail = "simple"` is a plain bar. |
| 4 | |
| 5 | ## Source |
| 6 | |
| 7 | Handson Technology, *GT2 belt* data specs: pitch 2 mm, belt height 1.38 mm, tooth height 0.75 mm, as hosted at |
| 8 | <https://naylampmechatronics.com/img/cms/000117/000117%20gt2-belt-B.pdf>. MISUMI's catalogue gives the same 0.75 mm tooth height for 2GT |
| 9 | (<https://uk.misumi-ec.com/pdf/fa/2014/P1_1381-1382_F19_EN_001.pdf>). |
| 10 | |
| 11 | Some sellers list a 1.52 mm belt height for GT2 belts. Width and length are the belt's designation. Preset lengths: step.parts catalogue |
| 12 | metadata (MIT, `library/NOTICE.md`). GT3, HTD3M and HTD5M belts aren't offered yet: no table read gives their overall height. |
| 13 |
Open-ended GT2 timing belt, 2 mm pitch, straight, with its teeth. A belt over 500 mm carries teeth along 250 mm at each end. detail = simple is a plain bar of the overall height for big assemblies. Length along X, centred on the origin. See the README; not affiliated with any belt brand.
Open-ended GT2 (2GT) belt, 2 mm pitch, straight. Length along X, centred on the origin, teeth down on the XY plane. Tooth pitch and height are published; the tooth's width and taper are proportions for looks, not for design. A belt over 500 mm carries teeth along 250 mm at each end, because more take too long to build. detail = "simple" is a plain bar.
Handson Technology, GT2 belt data specs: pitch 2 mm, belt height 1.38 mm, tooth height 0.75 mm, as hosted at https://naylampmechatronics.com/img/cms/000117/000117 gt2-belt-B.pdf. MISUMI's catalogue gives the same 0.75 mm tooth height for 2GT (https://uk.misumi-ec.com/pdf/fa/2014/P1_1381-1382_F19_EN_001.pdf).
Some sellers list a 1.52 mm belt height for GT2 belts. Width and length are the belt's designation. Preset lengths: step.parts catalogue
metadata (MIT, library/NOTICE.md). GT3, HTD3M and HTD5M belts aren't offered yet: no table read gives their overall height.
Real teeth. detail = simple keeps a plain bar.
Flanged timing pulley envelope: GT2 (2GT), GT3 (3GT) and MXL, tooth counts, belt widths and bores as presets.
Straight miter gear (1:1 bevel, 90 degree) envelope, modules 1 to 3, with catalogue numbers as presets.
Straight gear rack, ISO 53 basic rack, modules 0.5 to 2, any length, with common lengths as presets.
Shaft collar: DIN 705 A set collar, bores 3 to 20 mm, and one-piece clamp collars.