Just to share one cool pillow block / stepper housing design. This was designed to take a pair of 6801 bearings and a NEMA 17 stepper, hence the parameters in the script. In my application it will receive a shaft loaded in cantilever.
The assembly for my application (without bearings), to hold the bearings in place, we have in one side a flange (purple), on the other a flanged nut (not shown) screwed to the shaft. In red is the shaft designed for my application, with a groove to receive a belt. In black is a representation of a stepper motor.
Here is the pillow block / stepper housing alone. The feature on the top is an access slot for easy access to the curved jaw coupling. Inside the cylinder theres a ring, meant to be an spacer for the bearing pair.
The cadquery code for this part:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import cadquery as cq | |
from Helpers import show | |
# pillow block | |
height = 42 #cube parameters | |
width = 42 | |
length = 35 | |
cyl_dia = 32 #cylinder parameters | |
cyl_lenght = 17 | |
between_holes = 31 #holes parameters | |
bore = 3 | |
cbore = 6 | |
cbore_depth = 18 | |
fbore = 2 #threaded hole for flange | |
fbore_depth = 10 | |
ring_dia = 18 #inner ring diameter (bearing spacer) | |
bearing_OD = 21 | |
acess_slot = cq.Workplane("front").box(14, 20, height/2).edges("|Z") \ | |
.fillet(4).translate((0, -5, height/3)) | |
pb = cq.Workplane("front").box(width, length, height).edges("|Y").chamfer(2) \ | |
.faces("<Y").workplane() \ | |
.rect(between_holes, between_holes, forConstruction=True) \ | |
.vertices().cboreHole(bore, cbore, cbore_depth, depth=None) \ | |
.faces("<Y").workplane().circle(cyl_dia/2).extrude(cyl_lenght) \ | |
.faces(">Y").workplane().hole(ring_dia) \ | |
.faces(">Y").workplane().hole(bearing_OD, 45) \ | |
.faces("<Y").workplane().hole(bearing_OD, 5) \ | |
.faces("<Y").workplane() \ | |
.polygon(6, cyl_dia-6, forConstruction=True) \ | |
.vertices().hole(fbore, fbore_depth) | |
pb = pb.cut(acess_slot) | |
show(pb, (204, 204, 204, 0.5)) |