d2b2f016 |
1 | // challenge-bot |
2 | // GNU AGPLv3 (or later at your option) |
3 | // project available at these locations: |
4 | // https://gitorious.org/ozzloy/challenge-bot |
5 | // https://github.com/waynegramlich/challenge-bot |
6 | |
3258faff |
7 | mm_per_inch = 25.4; |
8 | |
9 | material_width = (1/8) * mm_per_inch; |
10 | |
11 | board_length = 1.75 * mm_per_inch; |
12 | board_width = 1.5 * mm_per_inch; |
13 | board_depth = (3/16) * mm_per_inch; |
14 | tab_length = 3 * mm_per_inch; |
15 | tab_width = (1/4) * mm_per_inch; |
16 | |
17 | union(){ |
18 | rotate(a = 90, v = [1, 0, 0]) { |
19 | cube([board_length + material_width, |
20 | 1.75 * mm_per_inch + material_width, |
21 | material_width ]);} |
22 | |
23 | translate(v = [0, -material_width, 0]){ |
24 | rotate(a = -90, v = [0, 1, 0]) { |
25 | cube( [1.75 * mm_per_inch + material_width, |
26 | 1.5 * mm_per_inch + 2 * material_width, |
27 | material_width ]);}} |
28 | |
29 | translate(v = [(1.75*mm_per_inch + material_width)/2 + tab_width, |
30 | -tab_length, 0]){ |
31 | rotate(a = 90, v = [0 ,0 ,1 ]){ |
32 | cube([3*mm_per_inch, 0.5*mm_per_inch , material_width]);}} |
33 | |
34 | translate(v = [-tab_length, |
35 | (1.5*mm_per_inch + material_width)/2 - tab_width, |
36 | 0]){ |
37 | cube([3*mm_per_inch, 0.5*mm_per_inch , material_width]);} |
38 | |
39 | translate(v = [(1.75*mm_per_inch + material_width)/2 + tab_width, |
40 | (1.5*mm_per_inch), |
41 | 0]){ |
42 | rotate(a = 90, v = [0, 0, 1]){ |
43 | cube([3*mm_per_inch, 0.5*mm_per_inch , material_width]);}} |
44 | |
45 | translate(v = [(1.75*mm_per_inch), |
46 | (1.5*mm_per_inch+material_width)/2 - tab_width, |
47 | 0]){ |
48 | cube([3*mm_per_inch, 0.5*mm_per_inch , material_width]);}} |
49 | |
50 | _4_40 = 0.1285*mm_per_inch/2; // size of hole for 4x40 |
51 | _6_32 = 0.1495*mm_per_inch/2; // size of hole for 6x32 |
52 | |
53 | module collar_hole(){ |
54 | cylinder(h = board_depth, r = 2*_6_32, $fn=20);} |
55 | |
56 | module nubbin_hole(){ |
57 | cylinder(h = board_depth, r = _6_32, $fn=20);} |
58 | |
59 | module mounting_screw_hole(){ |
60 | cylinder(h = board_depth, r = _6_32, $fn=20);} |
61 | |
62 | module bracket_screw_hole(){ |
63 | cylinder(h = board_depth, r = _6_32, $fn=20);} |
64 | |
65 | module wheel_motor_holes(scale){ |
66 | translate([ 51-26.78,38-10.8, 0] * scale) { |
67 | collar_hole();} |
68 | translate([ 51-26.78,38-22.23, 0] * scale){ |
69 | nubbin_hole();} |
70 | translate([51-18.05-17.45,38-30.81, 0] * scale){ |
71 | mounting_screw_hole();} |
72 | translate([51-18.05,38-30.81, 0] * scale){ |
73 | mounting_screw_hole();} |
74 | translate([7.5,8.5, 0] * scale){ |
75 | bracket_screw_hole();} |
76 | translate([7.5,21+8.5, 0] * scale){ |
77 | bracket_screw_hole();}} |
78 | |
79 | module wheel_mount(scale){ |
80 | difference(){ |
81 | cube(scale * [board_length + material_width, |
82 | board_width + material_width, |
83 | material_width]); |
84 | wheel_motor_holes(scale);}} |
85 | |
86 | wheel_mount(1); |
87 | |
88 | translate(v = [0, 0, board_length]) jig_lid(); |
89 | |
90 | module jig_lid() { |
91 | union() { |
92 | wheel_mount(1); |
93 | translate(v = [0, -2.1 * material_width, material_width]){ |
94 | cube([board_length + material_width, |
95 | 3.1 * material_width, |
96 | material_width]);} |
97 | translate(v = [0, -2.1 * material_width, 0]){ |
98 | cube([board_length + material_width, material_width, material_width]);} |
99 | translate(v = [-2.1 * material_width, 0, material_width]){ |
100 | cube([3.1 * material_width, |
101 | board_width + material_width, |
102 | material_width]);} |
103 | translate(v = [-2.1 * material_width, 0, 0]){ |
104 | cube([material_width, board_width+material_width, material_width]);}}} |