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 gear rack, ISO 53 basic rack, modules 0.5 to 2, any length, with common lengths as presets.
Straight miter gear (1:1 bevel, 90 degree) envelope, modules 1 to 3, with catalogue numbers as presets.
Shaft collar: DIN 705 A set collar, bores 3 to 20 mm, and one-piece clamp collars.