Sign in with STEVE

steve/shaft-support

Shaft support: SK8 to SK40 upright and SHF10 to SHF40 flanged, for round linear shafts.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 74 lines · Python · STEVE runtime · checked
Download
1"""Shaft support, SK (upright, foot on the XY plane, shaft along Y) and SHF (flange on the XY plane, shaft along Z), with the shaft
2centred on the origin's axis. Fit dimensions come from the table in the README. The clamp's slit and clamp hole sizes are proportions, for
3looks. detail = "simple" leaves out the slit and clamp hole."""
4import cadquery as cq
5from steve import Model
6
7designation = "SK8" # Shaft support
8detail = "full" # full: with the clamp's slit and hole; simple: bore and mounting holes only
9
10# type: (bore D, centre height h, half width E, width W, thickness L, height F, foot G, top width P, hole pitch B, hole S, clamp screw).
11# Motion-and-Drives, SK steel shaft supports technical specifications, revision 12.03.2021,
12# https://cdn.shopify.com/s/files/1/0509/9690/4105/files/SK_supports_technical_specification.pdf
13SK = {
14 "SK8": (8, 20, 21, 42, 14, 32.8, 6, 18, 32, 5.5, 4), "SK10": (10, 20, 21, 42, 14, 32.8, 6, 18, 32, 5.5, 4),
15 "SK12": (12, 23, 21, 42, 14, 37.5, 6, 20, 32, 5.5, 4), "SK16": (16, 27, 24, 48, 16, 44, 8, 25, 38, 5.5, 4),
16 "SK20": (20, 31, 30, 60, 20, 51, 10, 30, 45, 6.6, 5), "SK25": (25, 35, 35, 70, 24, 60, 12, 38, 56, 6.6, 6),
17 "SK30": (30, 42, 42, 84, 28, 70, 12, 44, 64, 9, 6), "SK35": (35, 50, 49, 98, 32, 82, 15, 50, 74, 11, 8),
18 "SK40": (40, 60, 57, 114, 36, 96, 15, 60, 90, 11, 8),
19}
20# type: (bore D, width W, length L, flange T, height F, boss G, hole pitch B, hole S, clamp screw).
21# Motion-and-Drives, SHF steel shaft supports technical specifications, revision 12.03.2021,
22# https://cdn.shopify.com/s/files/1/0509/9690/4105/files/SHF_supports_technical_specification.pdf
23SHF = {
24 "SHF10": (10, 43, 10, 5, 24, 20, 32, 5.5, 4), "SHF12": (12, 47, 13, 7, 28, 25, 36, 5.5, 4), "SHF16": (16, 50, 16, 8, 31, 28, 40, 5.5, 4),
25 "SHF20": (20, 60, 20, 8, 37, 34, 48, 7, 5), "SHF25": (25, 70, 25, 10, 42, 40, 56, 7, 5), "SHF30": (30, 80, 30, 12, 50, 46, 64, 9, 6),
26 "SHF35": (35, 92, 35, 14, 58, 50, 72, 12, 8), "SHF40": (40, 102, 40, 16, 67, 56, 80, 12, 10),
27}
28
29model = Model()
30if designation in SK:
31 D, h, E, W, L, F, G, P, B, S, screw = SK[designation]
32 root = 0.1 * P # a small sloped root under the column, for looks
33 with model.sketch("body_sketch", on="XZ", name="Body") as sk:
34 sk.polyline("body", [(-W / 2, 0), (W / 2, 0), (W / 2, G), (P / 2 + root, G), (P / 2, G + root), (P / 2, F), (-P / 2, F), (-P / 2, G + root), (-P / 2 - root, G), (-W / 2, G)], closed=True)
35 model.extrude("body", "body_sketch", distance=L, both=True, name="Body")
36 with model.sketch("bore_sketch", on="XZ", name="Bore") as sk:
37 sk.circle("bore_circle", (0, h), D / 2)
38 model.extrude("bore", "bore_sketch", distance=L + 1, both=True, op="cut", name="Bore")
39 with model.sketch("holes_sketch", on="XY", name="Mounting holes") as sk:
40 sk.circle("hole_left", (-B / 2, 0), S / 2)
41 sk.circle("hole_right", (B / 2, 0), S / 2)
42 model.extrude("holes", "holes_sketch", distance=G, op="cut", name="Mounting holes")
43 if detail == "full":
44 slit = 0.05 * P
45 with model.sketch("slit_sketch", on="XZ", name="Clamp slit") as sk:
46 sk.rect("slit_rect", (-slit / 2, h), (slit / 2, F + 1))
47 model.extrude("slit", "slit_sketch", distance=L + 1, both=True, op="cut", name="Clamp slit")
48 clamp_z = (h + D / 2 + F) / 2
49 with model.sketch("clamp_sketch", on="YZ", name="Clamp hole") as sk:
50 sk.circle("clamp_circle", (0, clamp_z), screw / 2)
51 model.extrude("clamp_hole", "clamp_sketch", distance=P + 1, both=True, op="cut", name="Clamp hole")
52 model.note("centre_height", f"Centre height h = {h} +/-0.02, half width E = {E} +/-0.05 (maker's table)")
53else:
54 D, W, L, T, F, G, B, S, screw = SHF[designation]
55 r = (W - B) / 2
56 R = G / 2
57 # the flange: the boss's circle and the two ears, joined by straight sides
58 flange = (cq.Workplane("XY").moveTo(-B / 2, -r).lineTo(0, -R).lineTo(B / 2, -r).threePointArc((W / 2, 0), (B / 2, r))
59 .lineTo(0, R).lineTo(-B / 2, r).threePointArc((-W / 2, 0), (-B / 2, -r)).close().extrude(T))
60 body = flange.union(cq.Workplane("XY").circle(R).extrude(L), clean=False)
61 top = F - R
62 ear = 0.2 * G
63 body = body.union(cq.Workplane("XY").workplane(offset=T).center(0, (R * 0.7 + top) / 2).rect(2 * ear, top - R * 0.7).extrude(L - T), clean=False)
64 body = body.cut(cq.Workplane("XY").workplane(offset=-1).circle(D / 2).extrude(L + 2))
65 for x in (-B / 2, B / 2):
66 body = body.cut(cq.Workplane("XY").workplane(offset=-1).center(x, 0).circle(S / 2).extrude(T + 2))
67 if detail == "full":
68 slit = 0.05 * G
69 body = body.cut(cq.Workplane("XY").workplane(offset=T).center(0, (D / 2 * 0.9 + top + 1) / 2).rect(slit, top + 1 - D / 2 * 0.9).extrude(L - T + 1))
70 body = body.cut(cq.Workplane("YZ").center((R + top) / 2, (T + L) / 2).circle(screw / 2).extrude(2 * ear + 1, both=True))
71 model.add("body", body, name="Body")
72model.material("steel-generic", color="#6d7075")
73result = model.result()
74

Shaft supports for round linear shafts: SK upright clamp blocks and SHF flanged clamps. Fit dimensions from the maker's tables; the clamp's slit and screw hole are proportions, for looks. See the README.

Shaft support

Clamp blocks for round linear shafts. SK stands upright with its foot on the XY plane and the shaft along Y, centred at height h. SHF has its flange on the XY plane and the shaft along Z through the origin.

Source

Bore, heights, widths, thicknesses, hole pitch and hole diameters are the table's. SK states h +/-0.02 and E +/-0.05, carried as a note.

Proportions, for looks only: the clamp slit's width, the clamp hole's height, the small root under the SK column, and the width of the SHF clamp block. None changes a fit dimension. The clamp screw isn't modelled; its hole is the fastening screw's nominal size.

Other makers' SK and SHF blocks are usually close to these but not always identical: check the drawing of the one you buy. SHF8 isn't in this table, so it isn't offered.

Standard
ISO · independency principle Not stated in the code: the steve runtime’s default.
General tolerance
None stated
Inspection list (CSV) Each characteristic with its nominal, limits and datums, at the parameters shown; ISO 2768-1 and ISO 286 values worked out.
1 requirement At the default parameters.
  1. centre_height L52

Select a requirement to show its faces in the 3D view; edges aren’t marked there. This build’s 3D preview doesn’t map its faces, so a requirement’s faces can’t be shown there. Requirements are written in the part’s code and compiled by the steve runtime at each build; nothing is exported as a file.

  1. 1.0.0 Latest
STEVEMIT

steve/miniature-linear-guide

HIWIN MGN miniature linear guideway, sizes 7, 9, 12 and 15: rail (MGNR) or block (MGN-C / MGN-H).

1 11 sizes 0 56 minutes ago v1.1.1
STEVEMIT

steve/lead-screw

Trapezoidal lead screw with a real thread: Tr8, Tr10, Tr12 and Tr16, leads 2 to 8 mm, any length.

1 85 sizes 0 57 minutes ago v1.1.1
STEVEMIT

steve/screw-end-support

Ball screw end support: BK and BF rectangular, FK and FF round, 6 to 40 mm shafts.

0 33 sizes 0 58 minutes ago v1.0.0
STEVEMIT

steve/linear-bushing-block

Linear bushing block SC6UU to SC30UU (also sold as SCS8UU and so on), shafts 6 to 30 mm.

0 10 sizes 0 2 hours ago v1.0.0