row_spacing = column_spacing;
/* This number should exceed row_spacing and column_spacing. The
- default gives a 1mm = (20mm - 19mm) gap between keycaps and cuts in
- the top plate.*/
+ default gives a 1mm = (20mm - 19mm) gap between keycaps and cuts in
+ the top plate.*/
key_hole_size = 20;
/* rotation angle; the angle between the halves is twice this
around center. Used to compute locations of screw holes near the
USB cable hole. */
function rz_fun(p, angle, center) = [cos(angle) * (p[0] - center[0]) - sin(angle) * (p[1] - center[1]) + center[0],
- sin(angle) * (p[0] - center[0]) + cos(angle) * (p[1] - center[1])+ center[1]];
+ sin(angle) * (p[0] - center[0]) + cos(angle) * (p[1] - center[1])+ center[1]];
module switch_hole(position, notches=use_notched_holes) {
/* Cherry MX switch hole with the center at `position`. Sizes come
notch_depth = 0.8128;
translate(position) {
union() {
- translate([0,0,-1])
- cube([hole_size, hole_size,50], center=true);
+ translate([0,0,-1])
+ cube([hole_size, hole_size,50], center=true);
if (notches == true) {
translate([0, notch_offset,-1]) {
cube([hole_size+2*notch_depth, notch_width,50], center=true);
for (i=[0:$children-1]) {
translate([0.5*hand_separation, /* we get back the full separation
because of mirroring */
- 0]) children(i);
+ 0]) children(i);
}
}
module right_screw_holes(hole_radius) {
/* coordinates of the back right screw hole before rotation... */
back_right = [(n_cols+n_thumb_keys)*row_spacing,
- staggering_offsets[n_cols-1] + n_rows * column_spacing];
+ staggering_offsets[n_cols-1] + n_rows * column_spacing];
/* and after */
tmp = rz_fun(back_right, angle, [0, 2.25*column_spacing]);
rotate_half() {
add_hand_separation() {
screw_hole(hole_radius, washer_radius,
- [row_spacing, 0],
- [-nudge, -nudge]);
+ [row_spacing, 0],
+ [-nudge, -nudge]);
screw_hole(hole_radius, washer_radius,
- [(n_cols+n_thumb_keys)*row_spacing, staggering_offsets[n_cols-1]],
- [nudge, -nudge]);
+ [(n_cols+n_thumb_keys)*row_spacing, staggering_offsets[n_cols-1]],
+ [nudge, -nudge]);
screw_hole(hole_radius, washer_radius,
- back_right,
- [nudge, nudge]);
+ back_right,
+ [nudge, nudge]);
}
}
/* add the screw hole near the cable hole */
translate([washer_radius - tmp[0],
- back_screw_hole_offset]) {
+ back_screw_hole_offset]) {
rotate_half() {
add_hand_separation() {
screw_hole(hole_radius,
- washer_radius,
- back_right,
- [nudge, nudge]);
+ washer_radius,
+ back_right,
+ [nudge, nudge]);
}
}
}
right_half(switch_holes=false, key_size=switch_hole_size + 3);
left_half(switch_holes=false, key_size=switch_hole_size + 3);
}
- /* add the USB cable hole: */
- translate([-0.5*cable_hole_width, 2*column_spacing,0]) {
- cube([cable_hole_width, (2*n_rows) * column_spacing,50]);
- }
+ /* add the USB cable hole: */
+ translate([-0.5*cable_hole_width, 2*column_spacing,0]) {
+ cube([cable_hole_width, (2*n_rows) * column_spacing,50]);
+ }
}
screw_holes(washer_radius);
}