steve/bellows-coupling
Bellows shaft coupling, clamping type: 12 to 32 mm outside diameter, bores 4 to 14 mm.
Jaw shaft coupling, clamping type: 14, 20 and 30 mm outside diameter, bores 3 to 12 mm.
Not affiliated with or endorsed by MISUMI.
| 1 | """Jaw coupling, clamping type. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub, bore d2 in the second. Two hubs and a spacer, |
| 2 | three bodies. Fit dimensions from MISUMI's table; see the README.""" |
| 3 | import math |
| 4 | |
| 5 | import cadquery as cq |
| 6 | from steve import Model |
| 7 | |
| 8 | size = 20 # mm Outside diameter D |
| 9 | d1 = 5 # mm Bore 1 (d1 <= d2) |
| 10 | d2 = 8 # mm Bore 2 |
| 11 | detail = "full" # full: jaws, slits and clamp screw holes; simple: plain cylinder with the bores |
| 12 | |
| 13 | # D: (L, hub length l, spacer B, gap C, screw from the end F, screw offset G, clamp screw M, bores offered). |
| 14 | # MISUMI Couplings catalogue, Jaw Couplings, Clamping, CPJC table, https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf, PDF p. 20. |
| 15 | SIZES = { |
| 16 | 14: (22, 7, 6, 1, 3.5, 4, 2, (3, 4, 5)), |
| 17 | 20: (30, 10, 8, 1, 5, 6.5, 2.5, (5, 6, 6.35, 7, 8)), |
| 18 | 30: (35, 11, 10, 1.5, 5.5, 10, 4, (7, 8, 9.525, 10, 11, 12)), |
| 19 | } |
| 20 | L, hub, spacer_h, gap, screw_at, screw_off, screw, bores = SIZES[size] |
| 21 | if d1 not in bores or d2 not in bores or d1 > d2: |
| 22 | raise ValueError(f"The {size} mm jaw coupling offers bores {bores}, with d1 <= d2.") |
| 23 | R = size / 2 |
| 24 | SLIT = 0.05 * size # the slit's width, the jaws' width and inner radius, and the spacer's shape are proportions, for looks |
| 25 | JAW = 40 |
| 26 | INNER = 0.45 * R |
| 27 | |
| 28 | |
| 29 | def sector(angle, spread, inner, outer, z0, height): |
| 30 | """A sector of a ring, spread degrees wide.""" |
| 31 | a, b, c = (math.radians(angle + t) for t in (-spread / 2, 0, spread / 2)) |
| 32 | return (cq.Workplane("XY").workplane(offset=z0).moveTo(inner * math.cos(a), inner * math.sin(a)).lineTo(outer * math.cos(a), outer * math.sin(a)) |
| 33 | .threePointArc((outer * math.cos(b), outer * math.sin(b)), (outer * math.cos(c), outer * math.sin(c))) |
| 34 | .lineTo(inner * math.cos(c), inner * math.sin(c)).threePointArc((inner * math.cos(b), inner * math.sin(b)), (inner * math.cos(a), inner * math.sin(a))).close().extrude(height)) |
| 35 | |
| 36 | |
| 37 | def half(z0, first_angle, bore, slit_z0): |
| 38 | """One hub with its three jaws, from z0 for a hub length, the jaws reaching across the spacer.""" |
| 39 | near, far = (hub, hub + gap) if first_angle == 0 else (hub + gap, hub) |
| 40 | shape = cq.Workplane("XY").workplane(offset=z0).circle(R).extrude(hub) |
| 41 | for k in range(3): |
| 42 | shape = shape.union(sector(first_angle + 120 * k, JAW, 1.1 * INNER, R, near, L - 2 * hub - gap), clean=False) |
| 43 | shape = shape.cut(cq.Workplane("XY").workplane(offset=slit_z0).center(R / 2 + 0.5, 0).rect(R + 1, SLIT).extrude(hub + 1)) |
| 44 | shape = shape.cut(cq.Workplane("XY").workplane(offset=z0 - 1).circle(bore / 2).extrude(hub + 2)) |
| 45 | return shape |
| 46 | |
| 47 | |
| 48 | model = Model() |
| 49 | if detail == "simple": |
| 50 | body = cq.Workplane("XY").circle(R).extrude(L) |
| 51 | body = body.cut(cq.Workplane("XY").workplane(offset=-1).circle(d1 / 2).extrude(L / 2 + 1)) |
| 52 | body = body.cut(cq.Workplane("XY").workplane(offset=L / 2).circle(d2 / 2).extrude(L / 2 + 1)) |
| 53 | model.add("body", body, name="Jaw coupling") |
| 54 | model.material("aluminum-generic", color="#c9ccd1") |
| 55 | else: |
| 56 | first = half(0, 0, d1, -1) |
| 57 | second = half(L - hub, 60, d2, L - hub) |
| 58 | for z in (screw_at, L - screw_at): |
| 59 | cross = cq.Workplane("YZ").center(screw_off, z).circle(screw / 2).extrude(R + 1, both=True) |
| 60 | first, second = first.cut(cross), second.cut(cross) |
| 61 | spacer = cq.Workplane("XY").workplane(offset=hub + gap).circle(INNER).circle(d2 / 2 + 0.3).extrude(spacer_h) |
| 62 | for k in range(6): |
| 63 | spacer = spacer.union(sector(30 + 60 * k, 60 - JAW - 2, 0.9 * INNER, R * 0.82, hub + gap, spacer_h), clean=False) |
| 64 | model.add("hub_1", first, op="new", body="hub_1_body", name="Hub, d1") |
| 65 | model.add("hub_2", second, op="new", body="hub_2_body", name="Hub, d2") |
| 66 | model.add("spacer", spacer, op="new", body="spacer_body", name="Spacer") |
| 67 | model.material("aluminum-generic", bodies=["hub_1_body", "hub_2_body"], color="#c9ccd1") |
| 68 | model.material("tpu-98a", bodies=["spacer_body"], color="#c8362e") |
| 69 | result = model.result() |
| 70 |
| 1 | name = "steve/jaw-coupling" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Jaw shaft coupling, clamping type: 14, 20 and 30 mm outside diameter, bores 3 to 12 mm." |
| 6 | description = """Jaw shaft coupling, clamping type, as two hubs and a spacer, with jaws, slits and clamp screw holes. Sizes and bores from MISUMI's CPJC table. See the README.""" |
| 7 | tags = ["coupling", "shaft-coupling", "jaw-coupling", "spider", "power-transmission", "metric"] |
| 8 | |
| 9 | [parameters.size] |
| 10 | type = "choice" |
| 11 | default = 20 |
| 12 | choices = [14, 20, 30] |
| 13 | unit = "mm" |
| 14 | label = "Outside diameter" |
| 15 | |
| 16 | [parameters.d1] |
| 17 | type = "choice" |
| 18 | default = 5 |
| 19 | choices = [3, 4, 5, 6, 6.35, 7, 8, 9.525, 10, 11, 12] |
| 20 | unit = "mm" |
| 21 | label = "Bore 1" |
| 22 | |
| 23 | [parameters.d2] |
| 24 | type = "choice" |
| 25 | default = 8 |
| 26 | choices = [3, 4, 5, 6, 6.35, 7, 8, 9.525, 10, 11, 12] |
| 27 | unit = "mm" |
| 28 | label = "Bore 2" |
| 29 | description = "d1 <= d2, both offered on the outside diameter chosen." |
| 30 | |
| 31 | [parameters.detail] |
| 32 | type = "choice" |
| 33 | default = "full" |
| 34 | choices = ["full", "simple"] |
| 35 | label = "Detail" |
| 36 | description = "full: jaws, slits and clamp screw holes. simple: a plain cylinder with the bores." |
| 37 | |
| 38 | [[presets]] |
| 39 | id = "CPJC14-3-3" |
| 40 | title = "Jaw coupling D14, 3 to 3 mm" |
| 41 | params = { size = 14, d1 = 3, d2 = 3 } |
| 42 | aliases = ["3x3 jaw coupling", "3 to 3 jaw coupling", "3mm to 3mm jaw coupling", "3-3 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 3x3", "coupling kind=jaw_coupling; bore1=3 mm; bore2=3 mm; set screw/clamp envelope"] |
| 43 | standard = "MISUMI" |
| 44 | |
| 45 | [[presets]] |
| 46 | id = "CPJC14-3-4" |
| 47 | title = "Jaw coupling D14, 3 to 4 mm" |
| 48 | params = { size = 14, d1 = 3, d2 = 4 } |
| 49 | aliases = ["3x4 jaw coupling", "3 to 4 jaw coupling", "3mm to 4mm jaw coupling", "3-4 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 3x4", "coupling kind=jaw_coupling; bore1=3 mm; bore2=4 mm; set screw/clamp envelope"] |
| 50 | standard = "MISUMI" |
| 51 | |
| 52 | [[presets]] |
| 53 | id = "CPJC14-3-5" |
| 54 | title = "Jaw coupling D14, 3 to 5 mm" |
| 55 | params = { size = 14, d1 = 3, d2 = 5 } |
| 56 | aliases = ["3x5 jaw coupling", "3 to 5 jaw coupling", "3mm to 5mm jaw coupling", "3-5 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 3x5", "coupling kind=jaw_coupling; bore1=3 mm; bore2=5 mm; set screw/clamp envelope"] |
| 57 | standard = "MISUMI" |
| 58 | |
| 59 | [[presets]] |
| 60 | id = "CPJC14-4-4" |
| 61 | title = "Jaw coupling D14, 4 to 4 mm" |
| 62 | params = { size = 14, d1 = 4, d2 = 4 } |
| 63 | aliases = ["4x4 jaw coupling", "4 to 4 jaw coupling", "4mm to 4mm jaw coupling", "4-4 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 4x4", "coupling kind=jaw_coupling; bore1=4 mm; bore2=4 mm; set screw/clamp envelope"] |
| 64 | standard = "MISUMI" |
| 65 | |
| 66 | [[presets]] |
| 67 | id = "CPJC14-4-5" |
| 68 | title = "Jaw coupling D14, 4 to 5 mm" |
| 69 | params = { size = 14, d1 = 4, d2 = 5 } |
| 70 | aliases = ["4x5 jaw coupling", "4 to 5 jaw coupling", "4mm to 5mm jaw coupling", "4-5 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 4x5", "coupling kind=jaw_coupling; bore1=4 mm; bore2=5 mm; set screw/clamp envelope"] |
| 71 | standard = "MISUMI" |
| 72 | |
| 73 | [[presets]] |
| 74 | id = "CPJC14-5-5" |
| 75 | title = "Jaw coupling D14, 5 to 5 mm" |
| 76 | params = { size = 14, d1 = 5, d2 = 5 } |
| 77 | aliases = ["5x5 jaw coupling", "5 to 5 jaw coupling", "5mm to 5mm jaw coupling", "5-5 jaw coupling", "CPJC14", "D14 jaw coupling", "spider coupling 5x5", "coupling kind=jaw_coupling; bore1=5 mm; bore2=5 mm; set screw/clamp envelope"] |
| 78 | standard = "MISUMI" |
| 79 | |
| 80 | [[presets]] |
| 81 | id = "CPJC20-5-6" |
| 82 | title = "Jaw coupling D20, 5 to 6 mm" |
| 83 | params = { size = 20, d1 = 5, d2 = 6 } |
| 84 | aliases = ["5x6 jaw coupling", "5 to 6 jaw coupling", "5mm to 6mm jaw coupling", "5-6 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 5x6", "coupling kind=jaw_coupling; bore1=5 mm; bore2=6 mm; set screw/clamp envelope"] |
| 85 | standard = "MISUMI" |
| 86 | |
| 87 | [[presets]] |
| 88 | id = "CPJC20-5-6.35" |
| 89 | title = "Jaw coupling D20, 5 to 6.35 mm" |
| 90 | params = { size = 20, d1 = 5, d2 = 6.35 } |
| 91 | aliases = ["5x6.35 jaw coupling", "5 to 6.35 jaw coupling", "5mm to 6.35mm jaw coupling", "5-6.35 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 5x6.35", "coupling kind=jaw_coupling; bore1=5 mm; bore2=6.35 mm; set screw/clamp envelope"] |
| 92 | standard = "MISUMI" |
| 93 | |
| 94 | [[presets]] |
| 95 | id = "CPJC20-5-8" |
| 96 | title = "Jaw coupling D20, 5 to 8 mm" |
| 97 | params = { size = 20, d1 = 5, d2 = 8 } |
| 98 | aliases = ["5x8 jaw coupling", "5 to 8 jaw coupling", "5mm to 8mm jaw coupling", "5-8 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 5x8", "coupling kind=jaw_coupling; bore1=5 mm; bore2=8 mm; set screw/clamp envelope"] |
| 99 | standard = "MISUMI" |
| 100 | |
| 101 | [[presets]] |
| 102 | id = "CPJC20-6-6" |
| 103 | title = "Jaw coupling D20, 6 to 6 mm" |
| 104 | params = { size = 20, d1 = 6, d2 = 6 } |
| 105 | aliases = ["6x6 jaw coupling", "6 to 6 jaw coupling", "6mm to 6mm jaw coupling", "6-6 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 6x6", "coupling kind=jaw_coupling; bore1=6 mm; bore2=6 mm; set screw/clamp envelope"] |
| 106 | standard = "MISUMI" |
| 107 | |
| 108 | [[presets]] |
| 109 | id = "CPJC20-6-6.35" |
| 110 | title = "Jaw coupling D20, 6 to 6.35 mm" |
| 111 | params = { size = 20, d1 = 6, d2 = 6.35 } |
| 112 | aliases = ["6x6.35 jaw coupling", "6 to 6.35 jaw coupling", "6mm to 6.35mm jaw coupling", "6-6.35 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 6x6.35", "coupling kind=jaw_coupling; bore1=6 mm; bore2=6.35 mm; set screw/clamp envelope"] |
| 113 | standard = "MISUMI" |
| 114 | |
| 115 | [[presets]] |
| 116 | id = "CPJC20-6-8" |
| 117 | title = "Jaw coupling D20, 6 to 8 mm" |
| 118 | params = { size = 20, d1 = 6, d2 = 8 } |
| 119 | aliases = ["6x8 jaw coupling", "6 to 8 jaw coupling", "6mm to 8mm jaw coupling", "6-8 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 6x8", "coupling kind=jaw_coupling; bore1=6 mm; bore2=8 mm; set screw/clamp envelope"] |
| 120 | standard = "MISUMI" |
| 121 | |
| 122 | [[presets]] |
| 123 | id = "CPJC20-6.35-6.35" |
| 124 | title = "Jaw coupling D20, 6.35 to 6.35 mm" |
| 125 | params = { size = 20, d1 = 6.35, d2 = 6.35 } |
| 126 | aliases = ["6.35x6.35 jaw coupling", "6.35 to 6.35 jaw coupling", "6.35mm to 6.35mm jaw coupling", "6.35-6.35 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 6.35x6.35", "coupling kind=jaw_coupling; bore1=6.35 mm; bore2=6.35 mm; set screw/clamp envelope"] |
| 127 | standard = "MISUMI" |
| 128 | |
| 129 | [[presets]] |
| 130 | id = "CPJC20-6.35-8" |
| 131 | title = "Jaw coupling D20, 6.35 to 8 mm" |
| 132 | params = { size = 20, d1 = 6.35, d2 = 8 } |
| 133 | aliases = ["6.35x8 jaw coupling", "6.35 to 8 jaw coupling", "6.35mm to 8mm jaw coupling", "6.35-8 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 6.35x8", "coupling kind=jaw_coupling; bore1=6.35 mm; bore2=8 mm; set screw/clamp envelope"] |
| 134 | standard = "MISUMI" |
| 135 | |
| 136 | [[presets]] |
| 137 | id = "CPJC20-8-8" |
| 138 | title = "Jaw coupling D20, 8 to 8 mm" |
| 139 | params = { size = 20, d1 = 8, d2 = 8 } |
| 140 | aliases = ["8x8 jaw coupling", "8 to 8 jaw coupling", "8mm to 8mm jaw coupling", "8-8 jaw coupling", "CPJC20", "D20 jaw coupling", "spider coupling 8x8", "coupling kind=jaw_coupling; bore1=8 mm; bore2=8 mm; set screw/clamp envelope"] |
| 141 | standard = "MISUMI" |
| 142 | |
| 143 | [[presets]] |
| 144 | id = "CPJC30-8-10" |
| 145 | title = "Jaw coupling D30, 8 to 10 mm" |
| 146 | params = { size = 30, d1 = 8, d2 = 10 } |
| 147 | aliases = ["8x10 jaw coupling", "8 to 10 jaw coupling", "8mm to 10mm jaw coupling", "8-10 jaw coupling", "CPJC30", "D30 jaw coupling", "spider coupling 8x10", "coupling kind=jaw_coupling; bore1=8 mm; bore2=10 mm; set screw/clamp envelope"] |
| 148 | standard = "MISUMI" |
| 149 | |
| 150 | [[presets]] |
| 151 | id = "CPJC30-10-10" |
| 152 | title = "Jaw coupling D30, 10 to 10 mm" |
| 153 | params = { size = 30, d1 = 10, d2 = 10 } |
| 154 | aliases = ["10x10 jaw coupling", "10 to 10 jaw coupling", "10mm to 10mm jaw coupling", "10-10 jaw coupling", "CPJC30", "D30 jaw coupling", "spider coupling 10x10", "coupling kind=jaw_coupling; bore1=10 mm; bore2=10 mm; set screw/clamp envelope"] |
| 155 | standard = "MISUMI" |
| 156 | |
| 157 | [[presets]] |
| 158 | id = "CPJC20-5-8-simple" |
| 159 | title = "Jaw coupling D20, 5 to 8 mm, simple" |
| 160 | params = { size = 20, d1 = 5, d2 = 8, detail = "simple" } |
| 161 | aliases = ["CPJC20-5-8 simple"] |
| 162 | standard = "MISUMI" |
| 163 |
A clamping jaw shaft coupling: two hubs and a spacer, three solids. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub and bore d2 in the second.
MISUMI Couplings catalogue, Jaw Couplings, Clamping, CPJC table, https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf, PDF page 20: outside diameter D, length L, hub length l, spacer B, gap C, clamp screw positions F and G, screw M, and the bores offered on each size.
Only bore pairs from one size's list are offered, so 3 to 10 mm isn't a part here, because no size offers both.
Proportions, for looks only: the jaws' width and inner radius, the spacer's shape and the slit's width. The clamp screws themselves aren't modelled, only their holes at nominal M. The spacer shown is the red, Shore A 98 one (table: blue A 80, white A 92, red A 98, polyurethane). MISUMI's 40 mm size has a different hub and isn't here.
| 1 | # Jaw coupling |
| 2 | |
| 3 | A clamping jaw shaft coupling: two hubs and a spacer, three solids. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub and bore d2 in the second. |
| 4 | |
| 5 | ## Source |
| 6 | |
| 7 | MISUMI Couplings catalogue, *Jaw Couplings, Clamping*, CPJC table, <https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf>, PDF page 20: outside diameter D, length L, hub length l, spacer B, gap C, clamp screw positions F and G, screw M, and the bores offered on each size. |
| 8 | |
| 9 | Only bore pairs from one size's list are offered, so 3 to 10 mm isn't a part here, because no size offers both. |
| 10 | |
| 11 | **Proportions, for looks only:** the jaws' width and inner radius, the spacer's shape and the slit's width. The clamp screws themselves aren't modelled, only their holes at nominal M. The spacer shown is the red, Shore A 98 one (table: blue A 80, white A 92, red A 98, polyurethane). MISUMI's 40 mm size has a different hub and isn't here. |
| 12 |
Jaw shaft coupling, clamping type, as two hubs and a spacer, with jaws, slits and clamp screw holes. Sizes and bores from MISUMI's CPJC table. See the README.
A clamping jaw shaft coupling: two hubs and a spacer, three solids. Axis along Z, the first hub's end face on the XY plane, bore d1 in the first hub and bore d2 in the second.
MISUMI Couplings catalogue, Jaw Couplings, Clamping, CPJC table, https://de.misumi-ec.com/files/images/products/docs/flexibleshaftcouplings.pdf, PDF page 20: outside diameter D, length L, hub length l, spacer B, gap C, clamp screw positions F and G, screw M, and the bores offered on each size.
Only bore pairs from one size's list are offered, so 3 to 10 mm isn't a part here, because no size offers both.
Proportions, for looks only: the jaws' width and inner radius, the spacer's shape and the slit's width. The clamp screws themselves aren't modelled, only their holes at nominal M. The spacer shown is the red, Shore A 98 one (table: blue A 80, white A 92, red A 98, polyurethane). MISUMI's 40 mm size has a different hub and isn't here.
Bellows shaft coupling, clamping type: 12 to 32 mm outside diameter, bores 4 to 14 mm.
Rigid shaft coupling, split clamping type: 16 to 32 mm outside diameter, bores 5 to 14 mm.
Oldham shaft coupling, clamping type: 15 to 26, bores 4 to 12 mm.
Slit shaft coupling, long clamping: 12 to 32 mm outside diameter, bores 4 to 14 mm.