diff options
author | Haoran S. Diao (刁浩然) <0@hairydiode.xyz> | 2022-04-12 23:12:19 -0700 |
---|---|---|
committer | Haoran S. Diao (刁浩然) <0@hairydiode.xyz> | 2022-04-12 23:12:19 -0700 |
commit | 495c60be9b17bd8cd66765d8cb18c638acb19920 (patch) | |
tree | b79c80dee07a61891a57a4f85d36262fe7987df3 |
-rw-r--r-- | board-2d.scad | 11 | ||||
-rw-r--r-- | board-2d.svg | 76 | ||||
-rw-r--r-- | board.scad | 136 | ||||
-rw-r--r-- | bottom-2d.scad | 7 | ||||
-rw-r--r-- | bottom-2d.svg | 86 | ||||
-rw-r--r-- | bottom.stl | bin | 0 -> 404084 bytes | |||
-rw-r--r-- | case.scad | 202 | ||||
-rw-r--r-- | left.stl | bin | 0 -> 28084 bytes | |||
-rw-r--r-- | right.stl | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..71d5b8d --- /dev/null +++ b/bottom.stl 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 Binary files differnew file mode 100644 index 0000000..916c37f --- /dev/null +++ b/left.stl diff --git a/right.stl b/right.stl Binary files differnew file mode 100644 index 0000000..0a27b4b --- /dev/null +++ b/right.stl |