| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- // License: CC0
- //
- FN=20;
- hole_width = 162.5;
- hole_height = 107.5;
- bottom_plate_width = 90;
- bottom_plate_height = 70;
- rpi_center_x = -22;
- rpi_center_y = -8;
- rpi_hole_x_length = 58;
- rpi_hole_y_length = 48;
- m2r=1;
- m3r=1.75;
- m6r=3;
- screen_width = 122;
- screen_height = 76;
- module rounded_rect(w,h,r) {
- _w = w-2*r;
- _h = h-2*r;
-
- x2 = _w/2;
- y2 = _h/2;
-
- hull() {
- translate([-x2, y2]) circle(r, $fn=FN);
- translate([ x2, y2]) circle(r, $fn=FN);
- translate([ x2,-y2]) circle(r, $fn=FN);
- translate([-x2,-y2]) circle(r, $fn=FN);
- }
- }
- module top_plate() {
- _outr = 16;
- _r = 3;
-
- w2 = hole_width/2;
- h2 = hole_height/2;
- difference() {
- rounded_rect(hole_width+_outr, hole_height+_outr, _r);
-
- translate([-w2, h2]) circle(m3r, $fn=FN);
- translate([ w2, h2]) circle(m3r, $fn=FN);
- translate([ w2+0.5,-h2+2.5]) circle(m3r, $fn=FN);
- translate([-w2+2.5,-h2+1.5]) circle(m3r, $fn=FN);
- square([screen_width,screen_height], center=true);
-
- // notch
- translate([-w2 + 30, h2+_outr/2]) rounded_rect(10,10,_r);
- }
- }
- module back_plate() {
- cx = rpi_center_x/2;
- cy = rpi_center_y/2;
- //x = bottom_plate_width;
- //y = bottom_plate_height;
- _outr = 16;
- w2 = hole_width/2;
- h2 = hole_height/2;
- x = hole_width + _outr;
- y = hole_height + _outr;
-
- first_hole_dx = 24.0;
- first_hole_dy = 4.0;
-
- first_hole_x = -(screen_width/2 - first_hole_dx);
- first_hole_y = (screen_height/2 - first_hole_dy);
-
- _r = 3;
-
- sx2 = hole_width/2;
- sy2 = hole_height/2;
- difference() {
- rounded_rect(x,y,_r);
-
- translate([55,0]) rounded_rect(50,90,2);
- translate([-60,0]) rounded_rect(30,90,2);
- //translate([-40,35]) rounded_rect(70,40,2);
- //translate([ 40,35]) rounded_rect(70,40,2);
- //translate([ 41,-25]) rounded_rect(68,60,2);
- translate([first_hole_x, first_hole_y])
- translate([0,0]) circle(m2r, $fn=FN);
-
- translate([first_hole_x, first_hole_y])
- translate([rpi_hole_x_length,0]) circle(m2r, $fn=FN);
- translate([first_hole_x, first_hole_y])
- translate([rpi_hole_x_length,-rpi_hole_y_length]) circle(m2r, $fn=FN);
- translate([first_hole_x, first_hole_y])
- translate([0,-rpi_hole_y_length]) circle(m2r, $fn=FN);
-
- translate([sx2,sy2]) circle(m3r, $fn=FN);
- translate([sx2+0.5,-sy2+2.5]) circle(m3r, $fn=FN);
- translate([-sx2+2.5,-sy2+1.5]) circle(m3r, $fn=FN);
- translate([-sx2,sy2]) circle(m3r, $fn=FN);
-
- // notch
- translate([-w2 + 30, h2+_outr/2]) rounded_rect(10,10,_r);
- }
- }
- //back_plate();
- //translate([0,150]) top_plate();
- top_plate();
|