Files
rackstack/open-frame.scad
2023-01-03 00:30:45 -05:00

86 lines
1.7 KiB
OpenSCAD

$fn=64;
include <./math.scad>
eps=0.1;
module leg() {
mainLength = 80;
upperDim = 20;
innerDim = 10;
translate(v=[0,0,mainLength/2]) {
cube(size=[upperDim, upperDim, mainLength], center=true);
translate(v=[0,0,mainLength/2 + innerDim/8-0.3])
cube(size=[innerDim, innerDim, innerDim/4-0.5], center=true);
}
}
module base() {
difference() {
union() {
cube(size=[200,200,4], center=true);
// legs
for (i=mirror4XY(midpoint=[0,0,-2], offsetX=90, offsetY=90)) {
translate(v=i)
leg();
}
// base support
translate(v=[0,0,4.5])
cube(size=[200,5,5], center=true);
rotate(a=[0,0,90])
translate(v=[0,0,4.5])
cube(size=[200,5,5], center=true);
translate(v=[0,-98,4.5])
cube(size=[200,4,5], center=true);
rotate(a=[0,0,90])
translate(v=[0,-98,4.5])
cube(size=[200,4,5], center=true);
rotate(a=[0,0,180])
translate(v=[0,-98,4.5])
cube(size=[200,4,5], center=true);
rotate(a=[0,0,270])
translate(v=[0,-98,4.5])
cube(size=[200,4,5], center=true);
}
union() {
// lug holes
for (i=mirror4XY(midpoint=[0,0,0], offsetX=50, offsetY=50)) {
for (j=mirror4XY(midpoint=i, offsetX=40, offsetY=40)) {
translate(v=j)
cube(size=[10+0.3,10+0.3,140], center=true);
}
}
// decorative perforations
for (i=mirror4XY(midpoint=[0,0,0], offsetX=50, offsetY=50)) {
translate(v=i)
minkowski() {
cube(size=[30,30,50], center=true);
cylinder(r=20, h=10);
}
}
}
}
}
base();