Sign in with STEVE

steve/screw-end-support

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

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 100 lines · Python · STEVE runtime · checked
Download
1"""Ball screw end support, one solid. BK and BF: rectangular, foot on the XY plane, screw along Y at height h, shaft end towards -Y. FK and FF: round with a
2square flange, flange's face on the XY plane, screw along Z. The bearings aren't modelled. Dimensions in the README."""
3import math
4
5import cadquery as cq
6from steve import Model
7
8designation = "BK10" # Support unit
9detail = "full" # full: with the mounting and retainer holes; simple: outline and bore only
10
11# TBI Ball Screw Support Units, Anaheim Automation sheets L011175 (BK), L011178 (BF), L011176 (FK), L011179 (FF).
12# BK: (d1, d2, L, L1, L2, L3, C1, C2, B, H, b, h, B1, H1, E, P, X, Y, Z)
13BK = {
14 "BK10": (10, 5.5, 25, 5, 29, 5, 13, 6, 60, 39, 30, 22, 34, 32.5, 15, 46, 6.6, 10.8, 5),
15 "BK12": (12, 5.5, 25, 5, 29, 5, 13, 6, 60, 43, 30, 25, 34, 32.5, 18, 46, 6.6, 10.8, 1.5),
16 "BK15": (15, 5.5, 27, 6, 32, 6, 15, 6, 70, 48, 35, 28, 40, 38, 18, 54, 6.6, 11, 6.5),
17 "BK17": (17, 6.6, 35, 9, 44, 7, 19, 8, 86, 64, 43, 39, 50, 55, 28, 68, 9, 14, 8.5),
18 "BK20": (20, 6.6, 35, 8, 43, 8, 19, 8, 88, 60, 44, 34, 52, 50, 22, 70, 9, 14, 8.5),
19 "BK25": (25, 9.0, 42, 12, 54, 9, 22, 10, 106, 80, 53, 48, 64, 70, 33, 85, 11, 17.5, 11),
20 "BK30": (30, 11, 45, 14, 61, 9, 23, 11, 128, 89, 64, 51, 76, 78, 33, 102, 14, 20, 13),
21 "BK35": (35, 11, 50, 14, 67, 12, 26, 12, 140, 96, 70, 52, 88, 79, 35, 114, 14, 20, 13),
22 "BK40": (40, 14, 61, 18, 76, 15, 33, 14, 160, 110, 80, 60, 100, 90, 37, 130, 18, 26, 17.5),
23}
24# BF: (d1, L, B, H, b, h, B1, H1, E, P, d2, X, Y, Z)
25BF = {
26 "BF10": (8, 20, 60, 39, 30, 22, 34, 32.5, 15, 46, 5.5, 6.6, 10.8, 5), "BF12": (10, 20, 60, 43, 30, 25, 34, 32.5, 18, 46, 5.5, 6.6, 10.8, 1.5),
27 "BF15": (15, 20, 70, 48, 35, 28, 40, 38, 18, 54, 5.5, 6.6, 11, 6.5), "BF17": (17, 23, 86, 64, 43, 39, 50, 55, 28, 68, 6.6, 9, 14, 8.5),
28 "BF20": (20, 26, 88, 60, 44, 34, 52, 50, 22, 70, 6.6, 9, 14, 8.5), "BF25": (25, 30, 106, 80, 53, 48, 64, 70, 33, 85, 9, 11, 17.5, 11),
29 "BF30": (30, 32, 128, 89, 64, 51, 76, 78, 33, 102, 11, 14, 20, 13), "BF35": (35, 32, 140, 96, 70, 52, 88, 79, 35, 114, 11, 14, 20, 13),
30 "BF40": (40, 37, 160, 110, 80, 60, 100, 90, 37, 130, 14, 18, 26, 17.5),
31}
32# FK: (d1, L, H, F, E, D, A, PCD, B, L1, T1, X, Y, Z)
33FK = {
34 "FK8": (8, 23, 9, 14, 26, 28, 43, 35, 35, 7, 4, 3.4, 6.5, 4), "FK10": (10, 27, 10, 17, 29.5, 34, 52, 42, 42, 7.5, 5, 4.5, 8, 4),
35 "FK12": (12, 27, 10, 17, 29.5, 36, 54, 44, 44, 7.5, 5, 4.5, 8, 4), "FK15": (15, 32, 15, 17, 36, 40, 63, 50, 52, 10, 6, 5.5, 9.5, 6),
36 "FK20": (20, 52, 22, 30, 50, 57, 85, 70, 68, 8, 10, 6.6, 11, 10), "FK25": (25, 57, 27, 30, 60, 63, 98, 80, 79, 13, 10, 9, 15, 13),
37 "FK30": (30, 62, 30, 32, 61, 75, 117, 95, 93, 11, 12, 11, 17.5, 15),
38}
39# FF: (d1, L, H, F, D, A, PCD, B, X, Y, Z)
40FF = {
41 "FF6": (6, 10, 6, 4, 22, 36, 28, 28, 3.4, 6.5, 4), "FF10": (8, 12, 7, 5, 28, 43, 35, 35, 3.4, 6.5, 4), "FF12": (10, 15, 7, 8, 34, 52, 42, 42, 4.5, 8, 4),
42 "FF15": (15, 17, 9, 8, 40, 63, 50, 52, 5.5, 9.5, 5.5), "FF20": (20, 20, 11, 9, 57, 85, 70, 68, 6.6, 11, 6.5),
43 "FF25": (25, 24, 14, 10, 63, 98, 80, 79, 9, 14, 8.5), "FF30": (30, 27, 18, 9, 75, 117, 95, 93, 11, 17.5, 11),
44}
45
46
47def rectangular(d1, L, B, H, h, B1, H1, E, P, d2, X, Y, Z, collar):
48 """The wings to H1 and the centre block to H, extruded from y = 0 to L, with a shaft-end collar towards -Y when collar > 0."""
49 outline = [(-B / 2, 0), (B / 2, 0), (B / 2, H1), (B1 / 2, H1), (B1 / 2, H), (-B1 / 2, H), (-B1 / 2, H1), (-B / 2, H1)]
50 body = cq.Workplane("XZ").polyline(outline).close().extrude(-L)
51 if collar:
52 body = body.union(cq.Workplane("XZ").center(0, h).circle(0.8 * d1 + 2).extrude(collar), clean=False)
53 body = body.cut(cq.Workplane("XZ").workplane(offset=collar + 1).center(0, h).circle(d1 / 2).extrude(-(L + collar + 2)))
54 if detail == "full":
55 low = (H1 - E) / 2 # the pair of wing holes is centred on the wing, for looks: the sheet gives E between them, not their height
56 for x in (-P / 2, P / 2):
57 for z in (low, low + E):
58 body = body.cut(cq.Workplane("XZ").workplane(offset=1).center(x, z).circle(d2 / 2).extrude(-(L + 2)))
59 reach = B1 / 2 - Y / 2 - 0.5 # the block's four counterbored holes: X, Y and Z are the sheet's, their places a proportion, for looks
60 for x in (-reach, reach):
61 for z in (h - reach, h + reach):
62 if z + Y / 2 < H and z - Y / 2 > 0:
63 body = body.cut(cq.Workplane("XZ").workplane(offset=1).center(x, z).circle(X / 2).extrude(-(L + 2)))
64 body = body.cut(cq.Workplane("XZ").workplane(offset=-L + Z).center(x, z).circle(Y / 2).extrude(-(Z + 1)))
65 return body
66
67
68def round_unit(d1, L, H, D, A, PCD, B, X, Y, Z, collar):
69 """The flange (the square B cut by the circle A) from z = 0 to H, the body D to L, and a shaft-end collar below when collar > 0."""
70 flange = cq.Workplane("XY").rect(B, B).extrude(H).intersect(cq.Workplane("XY").circle(A / 2).extrude(H))
71 body = flange.union(cq.Workplane("XY").circle(D / 2).extrude(L), clean=False)
72 if collar:
73 body = body.union(cq.Workplane("XY").workplane(offset=-collar).circle(0.8 * d1 + 2).extrude(collar), clean=False)
74 body = body.cut(cq.Workplane("XY").workplane(offset=-collar - 1).circle(d1 / 2).extrude(L + collar + 2))
75 if detail == "full":
76 at = PCD / 2 / math.sqrt(2)
77 for x in (-at, at):
78 for y in (-at, at):
79 body = body.cut(cq.Workplane("XY").workplane(offset=-1).center(x, y).circle(X / 2).extrude(H + 2))
80 body = body.cut(cq.Workplane("XY").workplane(offset=H - Z).center(x, y).circle(Y / 2).extrude(Z + 1))
81 return body
82
83
84model = Model()
85if designation in BK:
86 d1, d2, L, L1, L2, L3, C1, C2, B, H, b, h, B1, H1, E, P, X, Y, Z = BK[designation]
87 shape = rectangular(d1, L, B, H, h, B1, H1, E, P, d2, X, Y, Z, L1)
88elif designation in BF:
89 d1, L, B, H, b, h, B1, H1, E, P, d2, X, Y, Z = BF[designation]
90 shape = rectangular(d1, L, B, H, h, B1, H1, E, P, d2, X, Y, Z, 0)
91elif designation in FK:
92 d1, L, H, F, E, D, A, PCD, B, L1, T1, X, Y, Z = FK[designation]
93 shape = round_unit(d1, L, H, D, A, PCD, B, X, Y, Z, L1)
94else:
95 d1, L, H, F, D, A, PCD, B, X, Y, Z = FF[designation]
96 shape = round_unit(d1, L, H, D, A, PCD, B, X, Y, Z, 0)
97model.add("body", shape, name="Support unit")
98model.material("steel-generic", color="#26282b")
99result = model.result()
100

Ball screw end support unit as one solid: BK fixed and BF support side rectangular, FK fixed and FF support side round. Outer dimensions, bore and holes from TBI's sheets. See the README.

Ball screw end support

A ball screw end support unit as one solid; the bearings aren't modelled. BK and BF stand with their foot on the XY plane and the screw along Y at height h. FK and FF have their flange face on the XY plane and the screw along Z.

Source

TBI Ball Screw Support Units, Anaheim Automation sheets:

Bore, outer sizes, centre height, hole sizes, pitch P and PCD are the sheets'. The sheets state b and h as +/-0.02.

Proportions, for looks only: the shaft-end collar's diameter, the height of the BK and BF wing holes (the sheet gives E between them, not where they sit), and where the block's four counterbored holes sit. The FK and FF bolt circle is the sheet's, set on the diagonals as drawn. Overall length is L + L1 here; the sheet's reference L2 is not modelled.

The bore follows the sheet: BF10 has an 8 mm bore and BK10 a 10 mm bore, since the support side takes a smaller shaft end. BK8, BF8, FF8, FK17 and FF17 aren't in these tables, so they aren't offered.

  1. 1.0.0 Latest
More #ball-screw
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 44 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 45 minutes ago v1.1.1
STEVEMIT

steve/shaft-support

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

0 18 sizes 0 2 hours 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