summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board-2d.scad11
-rw-r--r--board-2d.svg76
-rw-r--r--board.scad136
-rw-r--r--bottom-2d.scad7
-rw-r--r--bottom-2d.svg86
-rw-r--r--bottom.stlbin0 -> 404084 bytes
-rw-r--r--case.scad202
-rw-r--r--left.stlbin0 -> 28084 bytes
-rw-r--r--right.stlbin0 -> 27684 bytes
9 files changed, 518 insertions, 0 deletions
diff --git a/board-2d.scad b/board-2d.scad
new file mode 100644
index 0000000..684cd5c
--- /dev/null
+++ b/board-2d.scad
@@ -0,0 +1,11 @@
+include <board.scad>
+module keyplan() {
+difference() {
+ projection() plate();
+ union() {
+ projection() keys();
+ projection() switches();
+ projection() leds();
+ }
+}
+}
diff --git a/board-2d.svg b/board-2d.svg
new file mode 100644
index 0000000..c18ef33
--- /dev/null
+++ b/board-2d.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="323mm" height="101mm" viewBox="2 -107 323 101" xmlns="http://www.w3.org/2000/svg" version="1.1">
+<title>OpenSCAD Model</title>
+<path d="
+M 310.11,-9.42999 L 310.11,-6.5 L 324.4,-6.5 L 324.4,-49.31 L 321.13,-49.31 L 321.13,-87.8
+ L 310.01,-87.8 L 310.01,-106.5 L 5.87,-106.5 L 5.87,-49.31 L 2.59999,-49.31 L 2.59999,-6.5
+ L 304.07,-6.5 L 304.07,-9.42999 z
+M 227.53,-85.58 L 227.53,-103.58 L 245.53,-103.58 L 245.53,-85.58 z
+M 114.13,-85.58 L 114.13,-103.58 L 132.13,-103.58 L 132.13,-85.58 z
+M 133.03,-85.58 L 133.03,-103.58 L 151.03,-103.58 L 151.03,-85.58 z
+M 95.23,-85.58 L 95.23,-103.58 L 113.23,-103.58 L 113.23,-85.58 z
+M 76.33,-85.58 L 76.33,-103.58 L 94.33,-103.58 L 94.33,-85.58 z
+M 57.43,-85.58 L 57.43,-103.58 L 75.43,-103.58 L 75.43,-85.58 z
+M 38.53,-85.58 L 38.53,-103.58 L 56.53,-103.58 L 56.53,-85.58 z
+M 284.23,-85.58 L 284.23,-103.58 L 302.23,-103.58 L 302.23,-85.58 z
+M 265.33,-85.58 L 265.33,-103.58 L 283.33,-103.58 L 283.33,-85.58 z
+M 246.43,-85.58 L 246.43,-103.58 L 264.43,-103.58 L 264.43,-85.58 z
+M 19.63,-85.58 L 19.63,-103.58 L 37.63,-103.58 L 37.63,-85.58 z
+M 208.63,-85.58 L 208.63,-103.58 L 226.63,-103.58 L 226.63,-85.58 z
+M 189.73,-85.58 L 189.73,-103.58 L 207.73,-103.58 L 207.73,-85.58 z
+M 170.83,-85.58 L 170.83,-103.58 L 188.83,-103.58 L 188.83,-85.58 z
+M 151.93,-85.58 L 151.93,-103.58 L 169.93,-103.58 L 169.93,-85.58 z
+M 180.79,-66.68 L 180.79,-84.68 L 198.79,-84.68 L 198.79,-66.68 z
+M 161.89,-66.68 L 161.89,-84.68 L 179.89,-84.68 L 179.89,-66.68 z
+M 105.19,-66.68 L 105.19,-84.68 L 123.19,-84.68 L 123.19,-66.68 z
+M 124.09,-66.68 L 124.09,-84.68 L 142.09,-84.68 L 142.09,-66.68 z
+M 10.69,-66.68 L 10.69,-84.68 L 28.69,-84.68 L 28.69,-66.68 z
+M 48.49,-66.68 L 48.49,-84.68 L 66.49,-84.68 L 66.49,-66.68 z
+M 67.39,-66.68 L 67.39,-84.68 L 85.39,-84.68 L 85.39,-66.68 z
+M 29.59,-66.68 L 29.59,-84.68 L 47.59,-84.68 L 47.59,-66.68 z
+M 86.29,-66.68 L 86.29,-84.68 L 104.29,-84.68 L 104.29,-66.68 z
+M 294.19,-66.68 L 294.19,-84.68 L 312.19,-84.68 L 312.19,-66.68 z
+M 275.29,-66.68 L 275.29,-84.68 L 293.29,-84.68 L 293.29,-66.68 z
+M 256.39,-66.68 L 256.39,-84.68 L 274.39,-84.68 L 274.39,-66.68 z
+M 199.69,-66.68 L 199.69,-84.68 L 217.69,-84.68 L 217.69,-66.68 z
+M 218.59,-66.68 L 218.59,-84.68 L 236.59,-84.68 L 236.59,-66.68 z
+M 237.49,-66.68 L 237.49,-84.68 L 255.49,-84.68 L 255.49,-66.68 z
+M 142.99,-66.68 L 142.99,-84.68 L 160.99,-84.68 L 160.99,-66.68 z
+M 204.55,-47.78 L 204.55,-65.78 L 222.55,-65.78 L 222.55,-47.78 z
+M 15.55,-47.78 L 15.55,-65.78 L 33.55,-65.78 L 33.55,-47.78 z
+M 223.45,-47.78 L 223.45,-65.78 L 241.45,-65.78 L 241.45,-47.78 z
+M 91.15,-47.78 L 91.15,-65.78 L 109.15,-65.78 L 109.15,-47.78 z
+M 128.95,-47.78 L 128.95,-65.78 L 146.95,-65.78 L 146.95,-47.78 z
+M 72.25,-47.78 L 72.25,-65.78 L 90.25,-65.78 L 90.25,-47.78 z
+M 53.35,-47.78 L 53.35,-65.78 L 71.35,-65.78 L 71.35,-47.78 z
+M 34.45,-47.78 L 34.45,-65.78 L 52.45,-65.78 L 52.45,-47.78 z
+M 147.85,-47.78 L 147.85,-65.78 L 165.85,-65.78 L 165.85,-47.78 z
+M 166.75,-47.78 L 166.75,-65.78 L 184.75,-65.78 L 184.75,-47.78 z
+M 261.25,-47.78 L 261.25,-65.78 L 279.25,-65.78 L 279.25,-47.78 z
+M 185.65,-47.78 L 185.65,-65.78 L 203.65,-65.78 L 203.65,-47.78 z
+M 280.15,-47.78 L 280.15,-65.78 L 307.6,-65.78 L 307.6,-47.78 z
+M 110.05,-47.78 L 110.05,-65.78 L 128.05,-65.78 L 128.05,-47.78 z
+M 242.35,-47.78 L 242.35,-65.78 L 260.35,-65.78 L 260.35,-47.78 z
+M 10.89,-53.785 L 10.89,-59.825 L 13.82,-59.825 L 13.82,-53.785 z
+M 251.8,-28.88 L 251.8,-46.88 L 279.25,-46.88 L 279.25,-28.88 z
+M 138.4,-28.88 L 138.4,-46.88 L 156.4,-46.88 L 156.4,-28.88 z
+M 119.5,-28.88 L 119.5,-46.88 L 137.5,-46.88 L 137.5,-28.88 z
+M 157.3,-28.88 L 157.3,-46.88 L 175.3,-46.88 L 175.3,-28.88 z
+M 100.6,-28.88 L 100.6,-46.88 L 118.6,-46.88 L 118.6,-28.88 z
+M 81.7,-28.88 L 81.7,-46.88 L 99.7,-46.88 L 99.7,-28.88 z
+M 62.8,-28.88 L 62.8,-46.88 L 80.8,-46.88 L 80.8,-28.88 z
+M 43.9,-28.88 L 43.9,-46.88 L 61.9,-46.88 L 61.9,-28.88 z
+M 15.55,-28.88 L 15.55,-46.88 L 43,-46.88 L 43,-28.88 z
+M 195.1,-28.88 L 195.1,-46.88 L 213.1,-46.88 L 213.1,-28.88 z
+M 214,-28.88 L 214,-46.88 L 232,-46.88 L 232,-28.88 z
+M 176.2,-28.88 L 176.2,-46.88 L 194.2,-46.88 L 194.2,-28.88 z
+M 232.9,-28.88 L 232.9,-46.88 L 250.9,-46.88 L 250.9,-28.88 z
+M 280.15,-28.88 L 280.15,-46.88 L 298.15,-46.88 L 298.15,-28.88 z
+M 15.55,-9.98 L 15.55,-27.98 L 43,-27.98 L 43,-9.98 z
+M 62.8,-9.98 L 62.8,-27.98 L 213.1,-27.98 L 213.1,-9.98 z
+M 231.97,-12.5 L 231.97,-21.83 L 249.37,-21.83 L 249.37,-12.5 z
+M 264.75,-12.5 L 264.75,-21.83 L 282.15,-21.83 L 282.15,-12.5 z
+M 297.57,-12.5 L 297.57,-21.83 L 314.97,-21.83 L 314.97,-12.5 z
+" stroke="black" fill="lightgray" stroke-width="0.5"/>
+</svg>
diff --git a/board.scad b/board.scad
new file mode 100644
index 0000000..f1b2ce8
--- /dev/null
+++ b/board.scad
@@ -0,0 +1,136 @@
+//uncentered hole
+module u_hole() {
+ translate([2.7/2,2.7/2, -5]) cylinder(10, d=2.7,false, $fn=20);
+}
+//divot
+module divot() {
+ u_hole();
+ translate([12.9-2.7 ,0, 0]) u_hole();
+ translate([0,-1,-5]) cube([12.9,1+2.7/2,10]);
+}
+/*
+ * PCB Board itself
+ */
+p_w = 327;
+p_h = 113;
+module pcb() {
+difference (){
+ //PCB Board
+ union() {
+ cube([p_w,p_h,1.8],false);
+ //represents solder on bottom
+ translate([7.3,7.3,-1]) cube([p_w-2*7.3,p_h-2*7.3,1]);
+ };
+ //holes
+ translate([4.85,16.6,0]) u_hole();
+ translate([4.85,54.8,0]) u_hole();
+ translate([p_w-4.85-2.7,54.8,0]) u_hole();
+ translate([p_w-4.85-2.7,93.8,0]) u_hole();
+
+ //divots
+ translate([p_w/2 - 12.9/2,0,0])divot();
+ translate([p_w/2 - 12.9/2,p_h,0]) rotate([180,0,0]) divot();
+
+}
+}
+/*
+ * Plate above PCB and KEy switches
+ */
+pl_d = 13.08-3.92-1.8; //plate depth
+pl_w = p_w - 2.6*2;
+pl_h = p_h - 6.5 - 6.5;
+module plate() {
+//move above pcb
+translate([0,0,3.92+1.8]) {
+difference() {
+ union () {
+ //account for size shrink
+ translate([2.6,6.5,0])
+ cube([pl_w, pl_h ,pl_d]);
+ }
+ translate([2.6-1,42.81+6.5,-5]) cube([1+3.27,10+57.2,pl_d+10]);
+ translate([2.6+pl_w-3.27,42.81+6.5,-5]) cube([1+3.27,10+57.2,pl_d+10]);
+ translate([2.6+pl_w-3.27-11.12,81.3+6.5,-5]) cube([1+3.27+11.12,10+18.51,pl_d+10]);
+} }
+}
+/*
+ * Keys
+ */
+module key(x,y, w=1) {
+ translate([x*(18+0.9), y* (18+0.9),0])
+ cube([w*(18+0.9)-0.9,18,12.5]);
+}
+//Keys
+module keys() {
+translate([15.55, 9.98,18.5+1.8]) {
+//translate([15,10,18.5+1.8]) {
+ union() {
+ translate ([4.08,0,0]) {
+ for(i=[0:1:14]) key(i,4);
+ }
+
+ translate([-4.86,0,0]) {
+ for(i=[0:1:15]) key(i,3);
+ }
+
+ for(i=[0:1:13]) key(i,2);
+ key(14,2,1.5);
+
+ key(0,1,1.5);
+ for(i=[1.5:1:11.5]) key(i,1);
+ key(12.5,1,1.5);
+ key(14,1);
+
+ key(0,0,1.5);
+ key(2.5,0,8);
+ }
+}
+}
+module switches() {
+translate([p_w - 12.23 - 82.8 ,12.5, 13.08])
+union() {
+ translate([0,0,0]) cube([17.4,9.33,13]);
+ translate([32.78,0,0]) cube([17.4,9.33,13]);
+ translate([65.6,0,0]) cube([17.4,9.33,13]);
+}
+}
+/*
+ * Leds
+ */
+module led() {
+ translate([6.04/2, 2.93/2,0])
+ cylinder(7.47, d=2.93, false, $fn=25);
+ cube([6.04,2.93,2.4]);
+}
+module leds() {
+translate([11.11+2.71, 52.23+(6.04-2.93)/2, 13.08]) rotate([0,0,90])led();
+translate([p_w-16.85-6.08,6.5,13.8]) led();
+}
+/*
+ * Connectors
+ */
+module f_header(x, y) {
+ translate([x*2.56, y*4, 0]) {
+ difference() {
+ cube([2.56,4,4.5]);
+ translate([2.54/2-1/2, 4/2-0.4/2, 4.5-4])
+ cube([1,0.4,4+1]);
+ }
+ }
+}
+ translate([p_w - 121.5, p_h - 5.6, 1.8]) {
+ for(i=[0:1:11]) f_header(i,0);
+ for(i=[13:1:24]) f_header(i,0);
+
+ }
+/*
+ * Fin.
+ */
+module keyboard() {
+ pcb();
+ plate();
+ keys();
+ switches();
+ leds();
+}
+//keyboard();
diff --git a/bottom-2d.scad b/bottom-2d.scad
new file mode 100644
index 0000000..c3045ed
--- /dev/null
+++ b/bottom-2d.scad
@@ -0,0 +1,7 @@
+include <case.scad>
+difference() {
+projection(cut=true) translate([0,0,1.8]) bottom();
+projection(cut=true) translate([0,0,-1]) bottom();
+projection(cut=true) translate([0,0,-0.2]) bottom();
+}
+//bottom();
diff --git a/bottom-2d.svg b/bottom-2d.svg
new file mode 100644
index 0000000..b28fc80
--- /dev/null
+++ b/bottom-2d.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="331mm" height="115mm" viewBox="-2 -114 331 115" xmlns="http://www.w3.org/2000/svg" version="1.1">
+<title>OpenSCAD Model</title>
+<path d="
+M 167.269,-110.68 L 166.985,-110.964 L 166.803,-111.321 L 166.74,-111.717 L 159.615,-111.717 L 159.552,-111.321
+ L 159.37,-110.964 L 159.086,-110.68 L 158.729,-110.498 L 158.332,-110.435 L 157.936,-110.498 L 157.579,-110.68
+ L 157.295,-110.964 L 157.113,-111.321 L 157.05,-111.717 L 157.05,-113.565 L -1.63499,-113.565 L -1.63499,0.564987
+ L 157.05,0.564987 L 157.05,-1.28249 L 157.113,-1.6788 L 157.295,-2.03633 L 157.579,-2.32005 L 157.936,-2.50223
+ L 158.332,-2.56499 L 158.729,-2.50223 L 159.086,-2.32005 L 159.37,-2.03633 L 159.552,-1.6788 L 159.615,-1.28249
+ L 166.74,-1.28249 L 166.803,-1.6788 L 166.985,-2.03633 L 167.269,-2.32005 L 167.626,-2.50223 L 168.022,-2.56499
+ L 168.419,-2.50223 L 168.776,-2.32005 L 169.06,-2.03633 L 169.242,-1.6788 L 169.305,-1.28249 L 169.305,0.564987
+ L 328.635,0.564987 L 328.635,-113.565 L 169.305,-113.565 L 169.305,-111.717 L 169.242,-111.321 L 169.06,-110.964
+ L 168.776,-110.68 L 168.419,-110.498 L 168.022,-110.435 L 167.626,-110.498 z
+M 5.73799,-6.808 L 5.73799,-16.6889 L 5.40648,-16.8578 L 5.10782,-17.1565 L 4.91606,-17.5328 L 4.84999,-17.95
+ L 4.91606,-18.3672 L 5.10782,-18.7435 L 5.40648,-19.0422 L 5.73799,-19.2111 L 5.73799,-54.8889 L 5.40648,-55.0578
+ L 5.10782,-55.3565 L 4.91606,-55.7328 L 4.84999,-56.15 L 4.91606,-56.5672 L 5.10782,-56.9435 L 5.40648,-57.2422
+ L 5.73799,-57.4111 L 5.73799,-106.192 L 321.262,-106.192 L 321.262,-96.4111 L 321.594,-96.2422 L 321.892,-95.9435
+ L 322.084,-95.5672 L 322.15,-95.15 L 322.084,-94.7328 L 321.892,-94.3565 L 321.594,-94.0578 L 321.262,-93.8889
+ L 321.262,-57.4111 L 321.594,-57.2422 L 321.892,-56.9435 L 322.084,-56.5672 L 322.15,-56.15 L 322.084,-55.7328
+ L 321.892,-55.3565 L 321.594,-55.0578 L 321.262,-54.8889 L 321.262,-6.808 z
+M 292.227,-94.5366 L 292.8,-96.3 L 292.227,-98.0634 L 290.727,-99.1532 L 288.873,-99.1532 L 287.373,-98.0634
+ L 286.8,-96.3 L 287.373,-94.5366 L 288.873,-93.4468 L 290.727,-93.4468 z
+M 289.598,-95.2391 L 289.34,-95.3228 L 289.112,-95.4678 L 288.926,-95.6652 L 288.796,-95.9024 L 288.729,-96.1646
+ L 288.729,-96.4353 L 288.796,-96.6976 L 288.926,-96.9348 L 289.112,-97.1321 L 289.34,-97.2772 L 289.598,-97.3609
+ L 289.868,-97.3779 L 290.134,-97.3271 L 290.379,-97.2119 L 290.587,-97.0393 L 290.746,-96.8203 L 290.846,-96.5686
+ L 290.88,-96.3 L 290.846,-96.0314 L 290.746,-95.7797 L 290.587,-95.5607 L 290.379,-95.3881 L 290.134,-95.2729
+ L 289.868,-95.2221 z
+M 197.927,-94.5366 L 198.5,-96.3 L 197.927,-98.0634 L 196.427,-99.1532 L 194.573,-99.1532 L 193.073,-98.0634
+ L 192.5,-96.3 L 193.073,-94.5366 L 194.573,-93.4468 L 196.427,-93.4468 z
+M 195.298,-95.2391 L 195.04,-95.3228 L 194.812,-95.4678 L 194.626,-95.6652 L 194.496,-95.9024 L 194.429,-96.1646
+ L 194.429,-96.4353 L 194.496,-96.6976 L 194.626,-96.9348 L 194.812,-97.1321 L 195.04,-97.2772 L 195.298,-97.3609
+ L 195.568,-97.3779 L 195.834,-97.3271 L 196.079,-97.2119 L 196.287,-97.0393 L 196.446,-96.8203 L 196.546,-96.5686
+ L 196.58,-96.3 L 196.546,-96.0314 L 196.446,-95.7797 L 196.287,-95.5607 L 196.079,-95.3881 L 195.834,-95.2729
+ L 195.568,-95.2221 z
+M 254.727,-73.1366 L 255.3,-74.9 L 254.727,-76.6633 L 253.227,-77.7532 L 251.373,-77.7532 L 249.873,-76.6633
+ L 249.3,-74.9 L 249.873,-73.1366 L 251.373,-72.0468 L 253.227,-72.0468 z
+M 252.098,-73.8391 L 251.84,-73.9228 L 251.612,-74.0678 L 251.426,-74.2652 L 251.296,-74.5024 L 251.229,-74.7646
+ L 251.229,-75.0354 L 251.296,-75.2976 L 251.426,-75.5348 L 251.612,-75.7321 L 251.84,-75.8772 L 252.098,-75.9609
+ L 252.368,-75.9779 L 252.634,-75.9271 L 252.879,-75.8119 L 253.087,-75.6393 L 253.246,-75.4203 L 253.346,-75.1686
+ L 253.38,-74.9 L 253.346,-74.6314 L 253.246,-74.3797 L 253.087,-74.1607 L 252.879,-73.9881 L 252.634,-73.8728
+ L 252.368,-73.8221 z
+M 119.727,-73.1366 L 120.3,-74.9 L 119.727,-76.6633 L 118.227,-77.7532 L 116.373,-77.7532 L 114.873,-76.6633
+ L 114.3,-74.9 L 114.873,-73.1366 L 116.373,-72.0468 L 118.227,-72.0468 z
+M 117.098,-73.8391 L 116.84,-73.9228 L 116.612,-74.0678 L 116.426,-74.2652 L 116.296,-74.5024 L 116.229,-74.7646
+ L 116.229,-75.0354 L 116.296,-75.2976 L 116.426,-75.5348 L 116.612,-75.7321 L 116.84,-75.8772 L 117.098,-75.9609
+ L 117.368,-75.9779 L 117.634,-75.9271 L 117.879,-75.8119 L 118.087,-75.6393 L 118.246,-75.4203 L 118.346,-75.1686
+ L 118.38,-74.9 L 118.346,-74.6314 L 118.246,-74.3797 L 118.087,-74.1607 L 117.879,-73.9881 L 117.634,-73.8728
+ L 117.368,-73.8221 z
+M 33.727,-73.1366 L 34.3,-74.9 L 33.727,-76.6633 L 32.227,-77.7532 L 30.3729,-77.7532 L 28.8729,-76.6633
+ L 28.3,-74.9 L 28.8729,-73.1366 L 30.3729,-72.0468 L 32.227,-72.0468 z
+M 31.0976,-73.8391 L 30.8401,-73.9228 L 30.6116,-74.0678 L 30.4263,-74.2652 L 30.2958,-74.5024 L 30.2285,-74.7646
+ L 30.2285,-75.0354 L 30.2958,-75.2976 L 30.4263,-75.5348 L 30.6116,-75.7321 L 30.8401,-75.8772 L 31.0976,-75.9609
+ L 31.3678,-75.9779 L 31.6337,-75.9271 L 31.8787,-75.8119 L 32.0873,-75.6393 L 32.2464,-75.4203 L 32.3461,-75.1686
+ L 32.38,-74.9 L 32.3461,-74.6314 L 32.2464,-74.3797 L 32.0873,-74.1607 L 31.8787,-73.9881 L 31.6337,-73.8728
+ L 31.3678,-73.8221 z
+M 296.727,-16.3366 L 297.3,-18.1 L 296.727,-19.8633 L 295.227,-20.9532 L 293.373,-20.9532 L 291.873,-19.8633
+ L 291.3,-18.1 L 291.873,-16.3366 L 293.373,-15.2468 L 295.227,-15.2468 z
+M 294.098,-17.0391 L 293.84,-17.1228 L 293.612,-17.2678 L 293.426,-17.4652 L 293.296,-17.7024 L 293.229,-17.9646
+ L 293.229,-18.2354 L 293.296,-18.4976 L 293.426,-18.7348 L 293.612,-18.9321 L 293.84,-19.0772 L 294.098,-19.1609
+ L 294.368,-19.1779 L 294.634,-19.1271 L 294.879,-19.0119 L 295.087,-18.8393 L 295.246,-18.6203 L 295.346,-18.3686
+ L 295.38,-18.1 L 295.346,-17.8314 L 295.246,-17.5797 L 295.087,-17.3607 L 294.879,-17.1881 L 294.634,-17.0728
+ L 294.368,-17.0221 z
+M 220.827,-16.3366 L 221.4,-18.1 L 220.827,-19.8633 L 219.327,-20.9532 L 217.473,-20.9532 L 215.973,-19.8633
+ L 215.4,-18.1 L 215.973,-16.3366 L 217.473,-15.2468 L 219.327,-15.2468 z
+M 218.198,-17.0391 L 217.94,-17.1228 L 217.712,-17.2678 L 217.526,-17.4652 L 217.396,-17.7024 L 217.329,-17.9646
+ L 217.329,-18.2354 L 217.396,-18.4976 L 217.526,-18.7348 L 217.712,-18.9321 L 217.94,-19.0772 L 218.198,-19.1609
+ L 218.468,-19.1779 L 218.734,-19.1271 L 218.979,-19.0119 L 219.187,-18.8393 L 219.346,-18.6203 L 219.446,-18.3686
+ L 219.48,-18.1 L 219.446,-17.8314 L 219.346,-17.5797 L 219.187,-17.3607 L 218.979,-17.1881 L 218.734,-17.0728
+ L 218.468,-17.0221 z
+M 85.827,-16.3366 L 86.4,-18.1 L 85.827,-19.8633 L 84.327,-20.9532 L 82.4729,-20.9532 L 80.9729,-19.8633
+ L 80.4,-18.1 L 80.9729,-16.3366 L 82.4729,-15.2468 L 84.327,-15.2468 z
+M 83.1976,-17.0391 L 82.9402,-17.1228 L 82.7116,-17.2678 L 82.5263,-17.4652 L 82.3958,-17.7024 L 82.3285,-17.9646
+ L 82.3285,-18.2354 L 82.3958,-18.4976 L 82.5263,-18.7348 L 82.7116,-18.9321 L 82.9402,-19.0772 L 83.1976,-19.1609
+ L 83.4678,-19.1779 L 83.7337,-19.1271 L 83.9787,-19.0119 L 84.1873,-18.8393 L 84.3464,-18.6203 L 84.4461,-18.3686
+ L 84.48,-18.1 L 84.4461,-17.8314 L 84.3464,-17.5797 L 84.1873,-17.3607 L 83.9787,-17.1881 L 83.7337,-17.0728
+ L 83.4678,-17.0221 z
+M 28.627,-16.3366 L 29.2,-18.1 L 28.627,-19.8633 L 27.127,-20.9532 L 25.2729,-20.9532 L 23.7729,-19.8633
+ L 23.2,-18.1 L 23.7729,-16.3366 L 25.2729,-15.2468 L 27.127,-15.2468 z
+M 25.9976,-17.0391 L 25.7402,-17.1228 L 25.5116,-17.2678 L 25.3262,-17.4652 L 25.1958,-17.7024 L 25.1285,-17.9646
+ L 25.1285,-18.2354 L 25.1958,-18.4976 L 25.3262,-18.7348 L 25.5116,-18.9321 L 25.7402,-19.0772 L 25.9976,-19.1609
+ L 26.2678,-19.1779 L 26.5337,-19.1271 L 26.7787,-19.0119 L 26.9873,-18.8393 L 27.1464,-18.6203 L 27.2461,-18.3686
+ L 27.28,-18.1 L 27.2461,-17.8314 L 27.1464,-17.5797 L 26.9873,-17.3607 L 26.7787,-17.1881 L 26.5337,-17.0728
+ L 26.2678,-17.0221 z
+" stroke="black" fill="lightgray" stroke-width="0.5"/>
+</svg>
diff --git a/bottom.stl b/bottom.stl
new file mode 100644
index 0000000..71d5b8d
--- /dev/null
+++ b/bottom.stl
Binary files differ
diff --git a/case.scad b/case.scad
new file mode 100644
index 0000000..930dd1a
--- /dev/null
+++ b/case.scad
@@ -0,0 +1,202 @@
+include <board.scad>
+//keyboard();
+w_t = 2; // wall thickness
+tol = 1.01;
+tl = -(tol - 1)/2;
+//hole post for supporting PCB
+module hole_p() {
+ translate([0,0,tl * 1.8]) {
+ cylinder(d=2.7 * .8,h=0.5, $fn=25);
+ translate([0,0,-8]) cylinder(d=6, h=8);
+ }
+}
+/*
+ * Functional Case bottom
+ */
+module body() {
+//Case body
+ //carve out hole for general shape of board
+ difference() {
+ translate([-w_t, -w_t, -8 -3])
+ cube([p_w + w_t*2, p_h + w_t *2, 8+1.8+3]);
+ //board itself
+ translate([tl * p_w, tl* p_h, tl * 1.8]) cube([p_w * tol, p_h * tol, 1.8 * tol]);
+ //solder stuff
+ s_w = p_w - 7.3*2;
+ s_h = p_h - 7.3 *2;
+ translate([tl * s_w +7.3, tl* s_h +7.3, tl * 3 - 2])
+ cube([s_w * tol, s_h * tol, 3 * tol]);
+ //mounting holes
+ translate([4.85,16.6,0]) scale([1,1,100])u_hole();
+ translate([4.85,54.8,0]) scale([1,1,100])u_hole();
+ translate([p_w-4.85-2.7,54.8,0]) scale([1,1,100])u_hole();
+ translate([p_w-4.85-2.7,93.8,0]) scale([1,1,100])u_hole();
+ //mounting hole heads
+ adj = +2.7/2;
+ b_h = 13.08 + 8 +3 - (20 - 2) +2;
+ translate([4.85 +adj,16.6 +adj,-8 -3 -1]) cylinder(d=6, h=b_h+1);
+ translate([4.85 +adj,54.8 +adj, -8 -3 -1]) cylinder(d=6, h=b_h+1);
+ translate([p_w-4.85-2.7 +adj,54.8 +adj,-8 -3 -1])cylinder(d=6, h=b_h+1);
+ translate([p_w-4.85-2.7 +adj,93.8 +adj, -8 -3 -1]) cylinder(d=6, h=b_h+1);
+ }
+ //divots and stuff
+ translate([p_w/2 - 12.9/2,0,]) scale([0.95, .95, 1])divot();
+ translate([p_w/2 - 12.9/2,p_h,]) rotate([180,0,0]) scale([0.95, .95, 1]) divot();
+ //mounting hole heads
+ translate([p_w-32.7,18.1,0]) hole_p();
+ translate([p_w-108.6,18.1,0]) hole_p();
+ translate([26.2,18.1,0]) hole_p();
+ translate([83.4,18.1,0]) hole_p();
+ translate([31.3,74.9,0]) hole_p();
+ translate([117.3,74.9,0]) hole_p();
+ translate([p_w-74.7,74.9,0]) hole_p();
+ translate([p_w-37.2, p_h-16.7,0]) hole_p();
+ translate([p_w-131.5, p_h-16.7,0]) hole_p();
+
+}
+
+/*
+ * Case Bottom with all the decorative cuts
+ */
+module bottom() {
+difference() {
+ body();
+
+ //vevels
+ translate([0,0,-75])rotate([90,0,0])
+ cylinder(r=70, h=p_h*20, center=true, $fn=30);
+ translate([p_w,0,-75])rotate([90,0,0])
+ cylinder(r=70, h=p_h*20, center=true, $fn=30);
+
+ //bottom cut
+ translate([-w_t,p_h+w_t,-5-8-3]) rotate([-2,0,0])
+ translate([0,-600,0]) {
+ translate([p_w/2,600-p_h/2,0])linear_extrude(1+5+3-1)
+ rotate([0,180,180]){
+ translate([0,20,0])
+ text("マイクロスイッチ", halign="center",valign="center", size=10,
+ font="HanaMinA");
+
+ translate([0,-10,0])
+ text("「微鍵㍿」", halign="center",valign="center", size=30,
+ font="HanaMinA");
+ }
+
+ translate([50,0,5-1])cube([p_w+2*w_t-2*50,600,3]);
+ cube([p_w+2*w_t,600,5]);
+ }
+}
+}
+/*
+ * Case Top
+ */
+//spacebar width
+space_w = (18+0.9)*8-0.9;
+module top() {
+ //spacebar cover and cutout
+ difference() {
+ translate([15.55 + 2.5*(18 + 0.9) -3, -w_t, 9])
+ cube([space_w +3*2, 8+w_t, 19.32+w_t -9]);
+
+ //spacebar stabilizer cutout
+ space_w = (18+0.9)*8-0.9;
+ translate([15.55 + 2.5*(18 + 0.9) + tl * space_w, 0, 0])
+ cube([space_w* tol, 13.46, 17.91 * tol]);
+ }
+difference() {
+ translate([-w_t,-w_t,1.8])cube([p_w+w_t*2, p_h+w_t*2, 13.08+3-1.8]);
+
+ //interior chamfers
+ translate([0.01 * pl_w,0.01 * (pl_h),13.08-1])
+ linear_extrude(100) scale([.98,.98,0])
+ projection() plate();
+
+ translate([p_w*80/243,p_h/2, +1010])rotate([90,0,0])
+ cylinder(r=1000, h=0.98*(pl_h), center=true, $fn=100);
+
+ translate([p_w*163/243,p_h/2, +1010])rotate([90,0,0])
+ cylinder(r=1000, h=0.98*(pl_h), center=true, $fn=100);
+
+ translate([p_w/2,p_h/4 , +113])rotate([0,90,0])
+ cylinder(r=100, h=0.88*(pl_w), center=true, $fn=50);
+ translate([p_w/2,p_h*3/4 , +113])rotate([0,90,0])
+ cylinder(r=100, h=0.88*(pl_w), center=true, $fn=50);
+
+ //plate void
+ translate([-1,-1,1.8+3.92 -0.5])
+ cube([p_w+1*2, p_h+1*2, pl_d +0.5]);
+ //key void
+ translate([10,-1,1.8 -1])cube([p_w-10*2, p_h+1*2, 3.92 +1+0.5]);
+ //front & back bevels
+ difference() {
+ f_r = 2;
+ translate([-w_t -1, -w_t -1, 13.08+3-f_r])
+ cube([p_w+w_t*2 +2, f_r +1, f_r + 1]);
+ translate([p_w/2 + 1,f_r-w_t,13.08+3-f_r])rotate([0,90,0])
+ cylinder(r=f_r, h=(p_w + w_t*2 +2), center=true ,$fn=50);
+ }
+ difference() {
+ f_r = 4;
+ translate([-w_t -1, p_h + w_t -f_r, 13.08+3-f_r])
+ cube([p_w+w_t*2 +2, f_r +1, f_r + 1]);
+ translate([p_w/2 + 1,p_h +w_t - f_r ,13.08+3-f_r])rotate([0,90,0])
+ cylinder(r=f_r, h=(p_w + w_t*2 +2), center=true ,$fn=50);
+ }
+ //spacebar stabilizer cutout
+ translate([15.55 + 2.5*(18 + 0.9) + tl * space_w, 0, 0])
+ cube([space_w* tol, 13.46, 17.91 * tol]);
+ //green led cutout
+ translate([p_w-16.85-6.08 + 6.04 * tl -1,6.5 + 2.93 * tl -1,9])
+ cube([6.04 * tol +2*1,2.93 * tol + 2*1,20]);
+
+ //mounting holes
+ translate([4.85,16.6,-1]) scale([1,1,2])u_hole();
+ translate([4.85,54.8,-1]) scale([1,1,2])u_hole();
+ translate([p_w-4.85-2.7,54.8,-1]) scale([1,1,3])u_hole();
+ translate([p_w-4.85-2.7,93.8,-1]) scale([1,1,2])u_hole();
+ //mounting hole heads
+ adj = +2.7/2;
+
+ translate([4.85 +adj,16.6 +adj,3.92+1.8-2*tol])
+ cylinder(d=6, h=2*tol);
+
+ translate([4.85 +adj,54.8 +adj, 3.92+1.8-2*tol])
+ cylinder(d=6, h=2*tol);
+
+ translate([p_w-4.85-2.7 +adj,54.8 +adj,3.92+1.8-2*tol])
+ cylinder(d=6,h=2*tol);
+
+ translate([p_w-4.85-2.7 +adj,93.8 +adj, 3.92+1.8-2*tol])
+ cylinder(d=6, h=2*tol);
+
+}
+}
+/*
+ * Divide Top into Elft and Right sections
+ */
+module right() {
+ difference() {
+ top();
+ rotate([0,0,45])
+ translate([-1000 + p_w/2, -500, -500])
+ cube([1000,1000,1000 ]);
+ }
+}
+module left() {
+ intersection() {
+ top();
+ rotate([0,0,45])
+ translate([-1000 + p_w/2, -500, -500])
+ cube([1000,1000,1000 ]);
+ }
+}
+
+/*
+ * Fin.
+ */
+//color([1,0,0])left();
+color([0,1,0])right();
+//top();
+color([0,0,1])bottom();
+color([1,1,0])keyboard();
+
diff --git a/left.stl b/left.stl
new file mode 100644
index 0000000..916c37f
--- /dev/null
+++ b/left.stl
Binary files differ
diff --git a/right.stl b/right.stl
new file mode 100644
index 0000000..0a27b4b
--- /dev/null
+++ b/right.stl
Binary files differ