diff --git a/battery-case-generator.py b/battery-case-generator.py
index a162ba5..6e458d2 100755
--- a/battery-case-generator.py
+++ b/battery-case-generator.py
@@ -36,33 +36,43 @@ else:
args.hole = float(args.hole)
assert(args.height != None)
-GRID = args.hole+args.padding
-RADIUS = args.hole/2
-DIMX = 2*(args.dimension+1)*GRID
-DIMY = 2*(args.dimension+1)*GRID
+args.kerf2 = args.kerf/2
+args.grid = args.hole+args.padding
+args.radius = args.hole/2
+args.interior_edge = args.grid*args.dimension*0.5+args.outside_padding
+args.exterior_edge = args.interior_edge+args.thickness
+args.interior_leg = (args.interior_edge-args.horizontal_finger-args.kerf)/2
+args.n_hor_fingers = int(args.exterior_edge/args.horizontal_finger/2)
+args.exterior_leg = (args.exterior_edge-(2*args.n_hor_fingers-1)*args.horizontal_finger+args.kerf)/2
+args.exterior_slot = (args.exterior_edge-args.horizontal_finger+args.kerf)/2
+args.n_ver_fingers = int(args.height/args.vertical_finger/2)
+args.vertical_finger = args.height/args.n_ver_fingers/2
+
+DIMX = 2.9*args.grid*args.dimension
+DIMY = 3.8*args.grid*args.dimension
PI3 = math.pi/3
def draw_grid(cx, cy):
for row in range(-int(args.dimension/2), int((args.dimension+1)/2)):
- cyr = cy+GRID*row*math.sin(PI3)
+ cyr = cy+args.grid*row*math.sin(PI3)
num_col = args.dimension-abs(row)
- cxr = cx-.5*GRID*(num_col-1.0)
+ cxr = cx-.5*args.grid*(num_col-1.0)
for col in range(num_col):
- print('' % (cxr+col*GRID, cyr, RADIUS))
+ print('' % (cxr+col*args.grid, cyr, args.radius))
def draw_plane(cx, cy, interior=False):
- radius = GRID*args.dimension*0.5+args.outside_padding
- if not interior:
- radius += args.thickness
+ if interior:
+ edge = args.interior_edge
+ else:
+ edge = args.exterior_edge
turtle = svgturtle.SvgTurtle(cx, cy)
turtle.penup()
- turtle.forward(radius)
+ turtle.forward(edge)
turtle.right(120)
turtle.pendown()
if interior:
- leg = (radius-args.horizontal_finger-args.kerf)/2
for side in range(6):
- turtle.forward(leg)
+ turtle.forward(args.interior_leg)
turtle.left(90)
turtle.forward(args.thickness)
turtle.right(90)
@@ -70,30 +80,76 @@ def draw_plane(cx, cy, interior=False):
turtle.right(90)
turtle.forward(args.thickness)
turtle.left(90)
- turtle.forward(leg)
+ turtle.forward(args.interior_leg)
turtle.right(60)
else:
- num_fingers = int(radius/args.horizontal_finger/2)
- leg = (radius-(2*num_fingers-1)*args.horizontal_finger-args.kerf)/2
for side in range(6):
- turtle.forward(leg)
- for finger in range(num_fingers):
+ for finger in range(args.n_hor_fingers):
+ turtle.forward(args.exterior_leg if finger == 0 else args.horizontal_finger+args.kerf)
turtle.right(90)
turtle.forward(args.thickness)
turtle.left(90)
- turtle.forward(args.horizontal_finger+args.kerf)
+ turtle.forward(args.horizontal_finger-args.kerf)
turtle.left(90)
turtle.forward(args.thickness)
turtle.right(90)
- turtle.forward(leg if finger == num_fingers-1 else args.horizontal_finger-args.kerf)
+ turtle.forward(args.exterior_leg)
turtle.right(60)
print('' % turtle.to_s())
+def draw_side(x0, y0, h, slots):
+ turtle = svgturtle.SvgTurtle(x0, y0+args.thickness)
+ for finger in range(args.n_hor_fingers):
+ turtle.forward(args.exterior_leg-args.kerf if finger == 0 else args.horizontal_finger-args.kerf)
+ turtle.left(90)
+ turtle.forward(args.thickness)
+ turtle.right(90)
+ turtle.forward(args.horizontal_finger+args.kerf)
+ turtle.right(90)
+ turtle.forward(args.thickness)
+ turtle.left(90)
+ turtle.forward(args.exterior_leg-args.kerf-args.thickness)
+ turtle.right(90)
+ for finger in range(args.n_ver_fingers):
+ turtle.forward(args.vertical_finger-(args.kerf/2 if finger==0 else args.kerf))
+ turtle.left(90)
+ turtle.forward(args.thickness)
+ turtle.right(90)
+ turtle.forward(args.vertical_finger+args.kerf)
+ turtle.right(90)
+ if finger < args.n_ver_fingers-1:
+ turtle.forward(args.thickness)
+ turtle.left(90)
+ turtle.forward(args.exterior_edge-args.thickness)
+ turtle.right(90)
+ for finger in range(args.n_ver_fingers):
+ turtle.forward(args.vertical_finger-(args.kerf/2 if finger==0 else args.kerf))
+ turtle.left(90)
+ turtle.forward(args.thickness)
+ turtle.right(90)
+ turtle.forward(args.vertical_finger+args.kerf)
+ turtle.right(90)
+ if finger < args.n_ver_fingers-1:
+ turtle.forward(args.thickness)
+ turtle.left(90)
+ print('' % turtle.to_s())
+ for slot in slots:
+ x = x0+args.exterior_slot
+ y = y0+slot
+ w = args.horizontal_finger-args.kerf
+ h = args.thickness-args.kerf
+ print('' % (x, y, w, h))
+
print('')