|
|
@ -26,6 +26,13 @@ module centerwasher() { |
|
|
|
translate([width/2, length/2, -0.2]) cylinder($fn=6, r=4, h=3); |
|
|
|
} |
|
|
|
|
|
|
|
module usb() { |
|
|
|
minkowski() { |
|
|
|
translate([0,50,3]) cube([17,100,8.8]); |
|
|
|
rotate([90,0,0]) cylinder(r=horiz_tolerance/2, h=horiz_tolerance/2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
module roof2() { |
|
|
|
difference() { |
|
|
|
minkowski() { |
|
|
@ -42,6 +49,9 @@ module roof2() { |
|
|
|
translate([screwhole_offset,length-screwhole_offset,height+0.4]) screwhole(); |
|
|
|
translate([width-screwhole_offset,length-screwhole_offset,height+0.4]) screwhole(); |
|
|
|
|
|
|
|
usb_offset = 28; |
|
|
|
translate([width/2-charger_width/2+charger_width-17-usb_offset, length/2-charger_length/2, height-charger_height-vert_tolerance+0.4]) usb(); |
|
|
|
|
|
|
|
translate([0,-23,0]) centerwasher(); |
|
|
|
translate([-23,5,0]) centerwasher(); |
|
|
|
translate([23,5,0]) centerwasher(); |
|
|
@ -78,4 +88,29 @@ module mount2() { |
|
|
|
translate([width/2,length/2,0]) cylinder(r=100, h=100); |
|
|
|
} |
|
|
|
} |
|
|
|
%mount2(); |
|
|
|
//%mount2(); |
|
|
|
|
|
|
|
module mount3(mount_height) { |
|
|
|
between = 130+4; |
|
|
|
side_offset = 6; |
|
|
|
length_mod = 0.8; |
|
|
|
difference() { |
|
|
|
cube([between+side_offset*2,length*length_mod,mount_height]); |
|
|
|
translate([side_offset*2,0,0]) cube([between-side_offset*2,length*length_mod,mount_height]); |
|
|
|
minkowski() { |
|
|
|
translate([side_offset,80,-vert_tolerance/2]) rail(100); |
|
|
|
cylinder(r=horiz_tolerance/2,h=vert_tolerance); |
|
|
|
} |
|
|
|
minkowski() { |
|
|
|
translate([between+side_offset,80,-vert_tolerance/2]) rail(100); |
|
|
|
cylinder(r=horiz_tolerance/2,h=vert_tolerance); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
difference() { |
|
|
|
angle = 30; |
|
|
|
mount_height = sin(angle)*length; |
|
|
|
rotate([angle,0,0]) translate([(width-(130+4+6*2))/2,0,-mount_height-6]) mount3(mount_height+6); |
|
|
|
translate([-20,-20,0.2]) cube([200,150,50]); |
|
|
|
} |