attmapper/case/openscad/attmapper.scad
2021-06-20 10:32:10 +02:00

81 lines
3.2 KiB
OpenSCAD

use <libRoundedcube.scad>;
$boardw=30.4;
$boardh=37.3;
$oledw=27.62;
$oledh=27.80;
$gpsh=20.4;
$gpsw=6.25;
$walls=1.6;
$oledside=($boardw-$oledw)/2;
module frame() {
union() {
difference() {
cube([$boardh+($walls*2),$boardw+($walls*2),11]);
translate([$walls,$walls,-0.1]) cube([$boardh,$boardw,1.8]);
translate([$walls+1,$walls+1,-0.1]) cube([$boardh-2,$boardw-2,8.2]);
translate([$walls+1,$walls+$oledside,9.1]) cube([$oledh,$oledw, 2]);
translate([$walls+4,$walls+$oledside,8]) cube([$oledh-6,$oledw, 4]);
translate([$walls+1,$walls+$oledside+3,8]) cube([$oledh+2,$oledw-6, 4]);
translate([$walls+$boardh-$gpsw,$walls+$boardw-$gpsh,1.6]) cube([$gpsw, $gpsh, 9]);
translate([-2,$walls+5.1,-0.1]) cube([10,6.6,6.6]);
translate([-0.1,$walls+$boardw-5.5,1.6]) cube([2.8,2,6.2]);
translate([$boardh,$walls*2,4]) cube([5,5,3]);
}
difference() {
translate([-3,$walls+$boardw-11,0.6]) cube([3,8.5,8]);
translate([-3.1,$walls+$boardw-10.15,1.55]) cube([3.1,6.7,6.3]);
}
}
}
module front() {
difference() {
union() {
roundedcube([$boardh+($walls*4)+24, $boardw+($walls*4), $walls+8], false, 2, "zmax", $fn=100);
difference() {
translate([$walls-1,$walls-1.05, -5]) roundedcube([$boardh+($walls*2)+26,$boardw+($walls*2)+2+0.1,5], false, 2, "zmin", $fn=100);
translate([$walls,$walls-0.125, -5.1]) cube([$boardh+($walls*2)+24,$boardw+($walls*2)+0.25,5.1]);
}
}
translate([$walls,$walls-0.125, -0.1]) cube([$boardh+($walls*2)+0.1,$boardw+($walls*2)+0.25,6]);
translate([$walls,$walls+2, -0.1]) cube([$boardh+($walls*2)+24,$boardw+($walls*2)-4,6]);
translate([($walls*2)+4.6,($walls*2)+$oledside,-0.1]) cube([$oledh-6,$oledw, 8]);
translate([($walls*2)+10.6,($walls*2)+$oledside,-0.1]) cube([$oledh-13.5,$oledw, 10]);
translate([($walls*2)+1.6,($walls*2)+$oledside+3,-0.1]) cube([$oledh,$oledw-6, 8]);
translate([-0.1,$walls+$boardw-9.2,-5.36]) cube([3,8.5,9.6]);
translate([-0.1,($walls*2)+9,-2.6]) rotate([0,90,0]) cylinder(5, 2.85, 2.85, $fn=100);
translate([-0.5,($walls*2)+9-2.85,-2.6]) rotate([0,90,0]) cube([6, 2.85*2, 5]);
translate([$boardh+25,$walls+2, 1.3]) union() {
cube([5,20,4.6]);
translate([2.8,5.8,0]) cube([10,8.5,3.6]);
}
translate([$boardh+24-($walls*2)-0.5,$boardw-5,2.1]) union() {
translate([0,0,0]) cube([8.6,10,3.8]);
translate([2,2.3,1]) cube([4.6,10,1.8]);
}
}
}
module back() {
difference() {
roundedcube([$boardh+($walls*4)+24, $boardw+($walls*4), 11], false, 2, "zmin", $fn=100);
translate([$walls-0.95,$walls-1.1, 5.4]) roundedcube([$boardh+($walls*2)+25.9,$boardw+($walls*2)+2,7.7], false, 2, "zmax", $fn=100);
translate([$walls, ($walls*2)+1, 1.6]) cube([$boardh+($walls*3), $boardw-2, 9.4]);
translate([$boardh+($walls*3), $walls-0.125, 1.6]) cube([24, $boardw+($walls*2)+0.25, 9.4]);
translate([-0.5,($walls*2)+9,6.1]) rotate([0,90,0]) cylinder(5, 2.85, 2.85, $fn=100);
translate([-0.5,($walls*2)+9-2.85,12]) rotate([0,90,0]) cube([6, 2.85*2, 5]);
translate([-0.1,$walls+$boardw-9.3,6]) cube([3,9,9.6]);
translate([28.5,3.6,-1]) cube([14,8.5,13]);
}
}
// rotate([180,0,0]) front();
back();