| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Licnese - CC0
- FN=20;
- m5r = 5.2/2;
- m2r = 2.2/2;
- fix_width = 152.5;
- lip_height = 30;
- speaker_r = 65/2;
- speaker_screw_d = 52;
- speaker_vol_d = 32.5;
- gps_d = 30;
- gps_ant_d = 16;
- 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 speaker_tab() {
- _r=3;
- w = 2*speaker_r + 20;
- h = 2*speaker_r + 20 + lip_height/2;
- d = speaker_screw_d /2;
-
- cx = 0;
- cy = lip_height/2 ;
- difference() {
- rounded_rect(w,h,_r);
- translate([cx,cy]) circle(speaker_r, $fn=2*FN);
- translate([cx + d, cy + d]) circle(m2r, $fn=FN);
- translate([cx + d, cy - d]) circle(m2r, $fn=FN);
- translate([cx - d, cy - d]) circle(m2r, $fn=FN);
- translate([cx - d, cy + d]) circle(m2r, $fn=FN);
- }
- }
- //speaker_tab();
- module plate() {
- _r = 3;
- difference() {
- union() {
- rounded_rect(fix_width + 4*m5r, lip_height, _r);
- translate([-fix_width/2, lip_height+10]) speaker_tab();
- translate([5,lip_height-4]) rounded_rect(80,30,_r);
- translate([-15,30+lip_height]) rounded_rect(46,60,_r);
- }
-
-
- translate([-30,lip_height]) circle(m2r, $fn=FN);
- translate([-30+speaker_vol_d,lip_height]) circle(m2r, $fn=FN);
-
-
- translate([0,60]) square([5,20], center=true);
- translate([-gps_d,60]) square([5,20], center=true);
-
- translate([-15,77]) square([20,5], center=true);
-
-
- translate([-fix_width/2,0]) circle(m5r, $fn=FN);
- translate([ fix_width/2,0]) circle(m5r, $fn=FN);
- }
-
- }
- plate();
|