203 lines
3.3 KiB
OpenSCAD
203 lines
3.3 KiB
OpenSCAD
|
|
include <./rockpro.scad>;
|
|
|
|
include <../power/src/base.scad>;
|
|
$fn = 128;
|
|
outerD = 4.65;
|
|
|
|
innerD = 2.93;
|
|
|
|
|
|
|
|
|
|
|
|
module caseOuter() {
|
|
rotate(a=[90,0,0])
|
|
minkowski() {
|
|
cube(size=[70,30,195], center=true);
|
|
cylinder(h=0.00000000001, r=15);
|
|
}
|
|
}
|
|
|
|
module caseInner() {
|
|
translate(v=[0,0,0])
|
|
rotate(a=[90,0,0])
|
|
minkowski() {
|
|
cube(size=[70,30,195+0.01], center=true);
|
|
cylinder(h=0.00000000001, r=12);
|
|
}
|
|
}
|
|
|
|
module hgill(i) {
|
|
minkowski() {
|
|
*sphere(r=2);
|
|
translate(v=[0,i*10,5])
|
|
rotate(a=[30,0,0])
|
|
cube(size=[200, 4, 30], center=true);
|
|
}
|
|
}
|
|
|
|
module caseShell() {
|
|
|
|
union() {
|
|
|
|
|
|
|
|
difference() {
|
|
caseOuter();
|
|
|
|
union() {
|
|
caseInner();
|
|
|
|
// side perforations
|
|
for (i=[-7:7]) {
|
|
hgill(i=i);
|
|
}
|
|
|
|
// top perforations
|
|
for (i=[-3:3]) {
|
|
translate(v=[0,i*20,50])
|
|
cube(size=[75,10,60], center=true);
|
|
}
|
|
|
|
// bottom perforations
|
|
for (i=[2:4]) {
|
|
translate(v=[0,i*18,-20])
|
|
rotate(a=[0,0,25])
|
|
*cube(size=[50,8,50], center=true);
|
|
}
|
|
|
|
for (i=[-4:3]) {
|
|
translate(v=[0,i*20 + 10,-20])
|
|
rotate(a=[0,0,25])
|
|
cube(size=[50,8,50], center=true);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module caseWithMountHoles() {
|
|
difference() {
|
|
|
|
union() {
|
|
caseShell();
|
|
|
|
translate(v=[-35, 25,-27.5])
|
|
rotate(a=[0,0,-90])
|
|
rockProMountPoints(7, 5.5, 2.5, 64, false);
|
|
faceMountSupports();
|
|
}
|
|
|
|
union() {
|
|
translate(v=[-35, 25,-27.5])
|
|
rotate(a=[0,0,-90])
|
|
rockProMountPoints(7, innerD/2, innerD/2, 64, false);
|
|
|
|
faceMountDiffs();
|
|
}
|
|
}
|
|
}
|
|
|
|
module guideRail(x,y,z) {
|
|
// gross
|
|
cube(size=[y,z,x]);
|
|
}
|
|
|
|
|
|
module faceMountDiffs() {
|
|
|
|
for (i = [-1,1]) {
|
|
for (j = [-1,1]) {
|
|
translate(v=[i*47,0,j*15]) {
|
|
|
|
rotate(a=[90,0,0])
|
|
translate(v=[0,0,93])
|
|
cylinder(r=innerD/2,h=12, center=true);
|
|
|
|
rotate(a=[90,0,0])
|
|
translate(v=[0,0,-93])
|
|
cylinder(r=innerD/2,h=12, center=true);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
module faceMountSupports() {
|
|
|
|
intersection() {
|
|
caseOuter();
|
|
for (i = [-1,1]) {
|
|
for (j = [-1,1]) {
|
|
translate(v=[i*47,0,j*15]) {
|
|
|
|
|
|
rotate(a=[90,0,0])
|
|
translate(v=[0,0,90])
|
|
cylinder(r=innerD,h=400, center=true);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module bottomTray() {
|
|
difference() {
|
|
|
|
union() {
|
|
translate(v=[-48,0,-11])
|
|
cube(size=[4,195,4], center=true);
|
|
|
|
translate(v=[48,0,-11])
|
|
cube(size=[4,195,4], center=true);
|
|
intersection() {
|
|
caseWithMountHoles();
|
|
translate(v=[0,0,-110])
|
|
cube(size=[500,500,200], center=true);
|
|
}
|
|
|
|
|
|
|
|
translate(v=[-50,97.5,-10+3])
|
|
rotate(a=[90,90,0])
|
|
guideRail(195,2,2);
|
|
|
|
|
|
translate(v=[48, 97.5, -10+3])
|
|
rotate(a=[90,90,0])
|
|
guideRail(195,2,2);
|
|
|
|
|
|
}
|
|
|
|
// bottom lugs
|
|
union() {
|
|
translate(v=[-35,-90,-30])
|
|
cube(size=[10.2,10.2,2.5], center=true);
|
|
|
|
translate(v=[35,-90,-30])
|
|
cube(size=[10.2,10.2,2.5],center=true);
|
|
|
|
translate(v=[35,90,-30])
|
|
cube(size=[10.2,10.2,2.5],center=true);
|
|
|
|
translate(v=[-35,90,-30])
|
|
cube(size=[10.2,10.2,2.5],center=true);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bottomTray();
|
|
*caseWithMountHoles();
|
|
|
|
|
|
*caseShell();
|