initial commit
This commit is contained in:
50
lego_test.py
Normal file
50
lego_test.py
Normal file
@@ -0,0 +1,50 @@
|
||||
#####
|
||||
# Inputs
|
||||
######
|
||||
lbumps = 6 # number of bumps long
|
||||
wbumps = 2 # number of bumps wide
|
||||
thin = True # True for thin, False for thick
|
||||
|
||||
#
|
||||
# Lego Brick Constants-- these make a Lego brick a Lego :)
|
||||
#
|
||||
pitch = 8.0
|
||||
clearance = 0.1
|
||||
bumpDiam = 4.8
|
||||
bumpHeight = 1.8
|
||||
if thin:
|
||||
height = 3.2
|
||||
else:
|
||||
height = 9.6
|
||||
|
||||
t = (pitch - (2 * clearance) - bumpDiam) / 2.0
|
||||
postDiam = pitch - t # works out to 6.5
|
||||
total_length = lbumps*pitch - 2.0*clearance
|
||||
total_width = wbumps*pitch - 2.0*clearance
|
||||
|
||||
# make the base
|
||||
s = cq.Workplane("XY").box(total_length, total_width, height)
|
||||
|
||||
# shell inwards not outwards
|
||||
s = s.faces("<Z").shell(-1.0 * t)
|
||||
|
||||
# make the bumps on the top
|
||||
s = (s.faces(">Z").workplane().
|
||||
rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0)
|
||||
.extrude(bumpHeight))
|
||||
|
||||
# add posts on the bottom. posts are different diameter depending on geometry
|
||||
# solid studs for 1 bump, tubes for multiple, none for 1x1
|
||||
tmp = s.faces("<Z").workplane(invert=True)
|
||||
|
||||
if lbumps > 1 and wbumps > 1:
|
||||
tmp = (tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True).
|
||||
circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t))
|
||||
elif lbumps > 1:
|
||||
tmp = (tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True).
|
||||
circle(t).extrude(height - t))
|
||||
elif wbumps > 1:
|
||||
tmp = (tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True).
|
||||
circle(t).extrude(height - t))
|
||||
else:
|
||||
tmp = s
|
||||
Reference in New Issue
Block a user