168 lines
4.4 KiB
OpenSCAD
168 lines
4.4 KiB
OpenSCAD
|
use <lib/MattScad/mirrorcopy.scad>;
|
||
|
$fn=90;
|
||
|
hollowerFn = 10;
|
||
|
width=180;
|
||
|
height=180;
|
||
|
length=300;
|
||
|
radius=25;
|
||
|
scalopRatio = [.4,.8,1];
|
||
|
|
||
|
module fantec_4_drive_caddy(){
|
||
|
color("orange"){
|
||
|
cube([205,125,170], center=true);
|
||
|
translate([-110,0,37.5-13])cube([15,95,95], center=true);
|
||
|
translate([-100+12.5-15,77,-55])cube([60,30,60], center=true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module power_supply(){
|
||
|
color("green"){
|
||
|
cube([61,109,33], center=true);
|
||
|
translate([-16.5+7,100/2+109/2,0])
|
||
|
cube([28,100,21], center=true);
|
||
|
translate([(61/2)-(15/2)-10,(20/2+109/2)*-1,0])
|
||
|
rotate([90,0,0])
|
||
|
cylinder(d=15,h=20, center=true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module bodyShell(){
|
||
|
// Shell
|
||
|
hull(){
|
||
|
mirrorCopy([1,0,0],[0,0,1])
|
||
|
translate([width/2,0,height/2])
|
||
|
rotate([0,90,90])
|
||
|
cylinder(r=radius,h=length, center=true);
|
||
|
}
|
||
|
}
|
||
|
module scalops(){
|
||
|
// Top/Bottom Scalop
|
||
|
mirrorCopy([0,0,1])
|
||
|
hull(){
|
||
|
translate([0,0,(height/2)+radius+5])
|
||
|
rotate([0,90,90])
|
||
|
scale([scalopRatio.x,scalopRatio.y,scalopRatio.z])
|
||
|
cylinder(d=100, h=length*1.2, center=true);
|
||
|
|
||
|
mirrorCopy([1,0,0])
|
||
|
translate([(width/2)-11,0,(height/2)+(radius*2)-1])
|
||
|
rotate([0,90,90])
|
||
|
cylinder(r=radius,h=length*1.2, center=true);
|
||
|
}
|
||
|
// Left Right Scalop
|
||
|
mirrorCopy([1,0,0])
|
||
|
hull(){
|
||
|
translate([(width/2)+radius+5,0,0])
|
||
|
rotate([0,90,90])
|
||
|
scale([scalopRatio.y,scalopRatio.x,scalopRatio.z])
|
||
|
cylinder(d=100, h=length*1.2, center=true);
|
||
|
|
||
|
mirrorCopy([0,0,1])
|
||
|
translate([(width/2)+(radius*2)-1,0,(height/2)-11])
|
||
|
rotate([0,90,90])
|
||
|
cylinder(r=radius,h=length*1.2, center=true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module parts(){
|
||
|
translate([-15-8.6,0,0])
|
||
|
rotate([0,0,-90])
|
||
|
fantec_4_drive_caddy();
|
||
|
|
||
|
translate([-15+80+4.5,90,30])
|
||
|
rotate([0,90,0])
|
||
|
power_supply();
|
||
|
}
|
||
|
|
||
|
module brackets(){
|
||
|
color("green"){
|
||
|
// PSU Bracket Forward
|
||
|
translate([60+27-10,30,0])
|
||
|
cube([65,20,height+30], center=true);
|
||
|
// PSU Bracker Rear
|
||
|
translate([77,145,0])
|
||
|
cube([65,20,height+30], center=true);
|
||
|
// Caddy Rear
|
||
|
translate([-77+45,110,0])
|
||
|
cube([155,20,height+30], center=true);
|
||
|
// Caddy Front
|
||
|
translate([-77+45,-806,0])
|
||
|
cube([155,20,height+30], center=true);
|
||
|
}
|
||
|
}
|
||
|
module facia(){
|
||
|
mirrorCopy([0,0,1],[1,0,0],[0,1,0])
|
||
|
hull(){
|
||
|
translate([width/2,length/2,height/2])
|
||
|
sphere(r=radius);
|
||
|
translate([0,length/2,0])
|
||
|
scale([(width/radius/2)+0.4,0.1,(height/radius/2)+0.4])
|
||
|
sphere(r=radius);
|
||
|
}
|
||
|
}
|
||
|
difference(){
|
||
|
union(){
|
||
|
difference(){
|
||
|
union(){
|
||
|
difference(){
|
||
|
union(){
|
||
|
bodyShell();
|
||
|
facia();
|
||
|
}
|
||
|
scalops();
|
||
|
}
|
||
|
footPedistal();
|
||
|
|
||
|
}
|
||
|
parts();
|
||
|
footHole();
|
||
|
hollower();
|
||
|
}
|
||
|
difference(){
|
||
|
brackets();
|
||
|
scalops();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Show bottom half
|
||
|
translate([0,0,250])cube([500,500,500], center=true);
|
||
|
// Show Front half
|
||
|
//translate([0,250,0])cube([500,500,500], center=true);
|
||
|
// Show Back half
|
||
|
translate([0,-250,0])cube([500,500,500], center=true);
|
||
|
}
|
||
|
#parts();
|
||
|
|
||
|
module footPedistal(){
|
||
|
mirrorCopy([1,0,0],[0,1,0])
|
||
|
translate([width/2,(length-50)/2,0])
|
||
|
translate([0,0,-110]){
|
||
|
cylinder(d=25.5+4, h=10, center=true);
|
||
|
}
|
||
|
}
|
||
|
module footHole(){
|
||
|
mirrorCopy([1,0,0],[0,1,0])
|
||
|
translate([width/2,(length-50)/2,0])
|
||
|
translate([0,0,-110])
|
||
|
translate([0,0,(3+10)/-2+1])
|
||
|
cylinder(d=25.5, h=3, center=true);
|
||
|
}
|
||
|
|
||
|
module hollower(){
|
||
|
mirrorCopy([1,0,0],[0,0,1]){
|
||
|
hull(){
|
||
|
mirrorCopy([0,1,0]){
|
||
|
translate([0,(length/2)-(radius/2),0]){
|
||
|
hull(){
|
||
|
translate([width/2,0,height/2])
|
||
|
sphere(r=radius/2, $fn=hollowerFn);
|
||
|
scale([1,(1/height)*radius,1])
|
||
|
sphere(d=min(width,height), $fn=hollowerFn);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|