update
This commit is contained in:
9
cases/common.scad
Normal file
9
cases/common.scad
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
/* Some initial configurations and commonly used variables
|
||||||
|
plus functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
$fn=64;
|
||||||
|
|
||||||
|
|
||||||
|
eps=0.01;
|
||||||
86
cases/rack/base1.scad
Normal file
86
cases/rack/base1.scad
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
|
||||||
|
$fn=64;
|
||||||
|
|
||||||
|
eps=0.1;
|
||||||
|
|
||||||
|
slack = 0.5;
|
||||||
|
m3Diameter = 3.0;
|
||||||
|
m3Radius = m3Diameter/2.0;
|
||||||
|
m3ptr = m3Radius + slack;
|
||||||
|
|
||||||
|
module baseFrame() {
|
||||||
|
difference() {
|
||||||
|
cube(size=[200,200,4], center=true);
|
||||||
|
cube(size=[180,180,4], center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate(v=[90,90,0])
|
||||||
|
cube(size=[20,20, 4],center=true);
|
||||||
|
|
||||||
|
translate(v=[-90,90,0])
|
||||||
|
cube(size=[20,20, 4],center=true);
|
||||||
|
|
||||||
|
translate(v=[90,-90,0])
|
||||||
|
cube(size=[20,20, 4],center=true);
|
||||||
|
|
||||||
|
translate(v=[-90,-90,0])
|
||||||
|
cube(size=[20,20, 4],center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
module lugBottom() {
|
||||||
|
difference() {
|
||||||
|
cube(size=[9.7,9.7,6], center=true);
|
||||||
|
|
||||||
|
translate(v=[1,1,0])
|
||||||
|
cube(size=[9.1,9.1,5+1], center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module base() {
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
translate(v=[0,0,4/2])
|
||||||
|
baseFrame();
|
||||||
|
|
||||||
|
|
||||||
|
translate(v=[-90,-90,-6/2])
|
||||||
|
lugBottom();
|
||||||
|
|
||||||
|
mirror(v=[1,0,0])
|
||||||
|
translate(v=[-90,-90,-6/2])
|
||||||
|
lugBottom();
|
||||||
|
|
||||||
|
mirror(v=[0,1,0])
|
||||||
|
translate(v=[-90,-90,-6/2])
|
||||||
|
lugBottom();
|
||||||
|
|
||||||
|
mirror(v=[1,1,0])
|
||||||
|
translate(v=[-90,-90,-6/2])
|
||||||
|
lugBottom();
|
||||||
|
}
|
||||||
|
|
||||||
|
union() {
|
||||||
|
translate(v=[90,90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
translate(v=[-90,90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
translate(v=[90,-90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
translate(v=[-90,-90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
base();
|
||||||
|
|
||||||
|
*lugBottom();
|
||||||
|
|
||||||
|
|
||||||
4818
cases/rack/base1.stl
Normal file
4818
cases/rack/base1.stl
Normal file
File diff suppressed because it is too large
Load Diff
37
cases/rack/l1.scad
Normal file
37
cases/rack/l1.scad
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
slack = 0.5;
|
||||||
|
m3Diameter = 3.0;
|
||||||
|
m3Radius = m3Diameter/2.0;
|
||||||
|
m3ptr = m3Radius + slack;
|
||||||
|
|
||||||
|
legLength = 200;
|
||||||
|
|
||||||
|
|
||||||
|
module baseLeg(legLength) {
|
||||||
|
cube(size=[3, 15, legLength]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module leg() {
|
||||||
|
difference() {
|
||||||
|
baseLeg(legLength);
|
||||||
|
|
||||||
|
union() {
|
||||||
|
for (i = [0:18]) {
|
||||||
|
translate(v=[0,10,(i+1)*10])
|
||||||
|
rotate(a=[0,90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate(v=[0,10,(0+1)*10])
|
||||||
|
rotate(a=[0,90,0])
|
||||||
|
*cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
translate(v=[0,10,(18+1)*10])
|
||||||
|
rotate(a=[0,90,0])
|
||||||
|
*cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leg();
|
||||||
17642
cases/rack/l1.stl
Normal file
17642
cases/rack/l1.stl
Normal file
File diff suppressed because it is too large
Load Diff
45
cases/rack/legToleranceTest.scad
Normal file
45
cases/rack/legToleranceTest.scad
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
slack = 0.5;
|
||||||
|
m3Diameter = 3.0;
|
||||||
|
m3Radius = m3Diameter/2.0;
|
||||||
|
m3ptr = m3Radius + slack;
|
||||||
|
|
||||||
|
legLength = 60;
|
||||||
|
|
||||||
|
|
||||||
|
module baseLeg(legLength) {
|
||||||
|
difference() {
|
||||||
|
cube(size=[16,16, legLength]);
|
||||||
|
|
||||||
|
translate(v=[4,4,4])
|
||||||
|
cube(size=[16, 16, legLength-2*4]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module leg(ui) {
|
||||||
|
assert(ui > 0);
|
||||||
|
|
||||||
|
legLength = 20 + (ui-1)*10;
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
baseLeg(legLength);
|
||||||
|
|
||||||
|
union() {
|
||||||
|
for (i = [0:ui-1]) {
|
||||||
|
translate(v=[0,10,(i+1)*10])
|
||||||
|
rotate(a=[0,90,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
|
||||||
|
translate(v=[10,0,(i+1)*10])
|
||||||
|
rotate(a=[90,0,0])
|
||||||
|
cylinder(h = 100, r = m3ptr, $fn=32, center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate(v=[10,10,legLength/2])
|
||||||
|
cylinder(h = legLength*2, r = m3ptr, $fn=32, center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leg(18);
|
||||||
35310
cases/rack/legToleranceTest.stl
Normal file
35310
cases/rack/legToleranceTest.stl
Normal file
File diff suppressed because it is too large
Load Diff
168
cases/rack/rackCaseForBox.scad
Normal file
168
cases/rack/rackCaseForBox.scad
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
|
||||||
|
/* Simple configurable rack mount component to hold a box-like shell */
|
||||||
|
|
||||||
|
include <../common.scad>
|
||||||
|
include <./screws.scad>
|
||||||
|
|
||||||
|
slack = 0.4;
|
||||||
|
|
||||||
|
boxWidth = 157.67;
|
||||||
|
boxHeight = 27.0;
|
||||||
|
boxLength = 101.5;
|
||||||
|
|
||||||
|
|
||||||
|
topThickness = 1.0;
|
||||||
|
bottomThickness = 1.0;
|
||||||
|
|
||||||
|
sideThickness = 2.0;
|
||||||
|
sideSupportWidth = 10;
|
||||||
|
|
||||||
|
railWidth = 16.0;
|
||||||
|
|
||||||
|
totalHeight = boxHeight+topThickness+bottomThickness;
|
||||||
|
totalLength = boxLength+2*sideThickness;
|
||||||
|
|
||||||
|
|
||||||
|
railMountWidthDiff = (200.0 - (boxWidth + 2*sideThickness)) / 2.0;
|
||||||
|
|
||||||
|
module sideHolder() {
|
||||||
|
|
||||||
|
|
||||||
|
module frontLowerCaseSegment() {
|
||||||
|
translate(v=[0,0,0])
|
||||||
|
cube(size=[sideSupportWidth, sideThickness, bottomThickness]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module frontUpperCaseSegment() {
|
||||||
|
// no room for slack? :(
|
||||||
|
translate(v=[0,0,boxHeight+bottomThickness])
|
||||||
|
cube(size=[sideSupportWidth, sideThickness, topThickness]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module backLowerCaseSegment() {
|
||||||
|
translate(v=[0,boxLength+slack+sideThickness,0])
|
||||||
|
frontLowerCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
module backUpperCaseSegment() {
|
||||||
|
translate(v=[0,boxLength+slack+sideThickness,0])
|
||||||
|
frontUpperCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
module backLowerRailSegment() {
|
||||||
|
translate(v=[0,200.0-sideThickness,0])
|
||||||
|
cube(size=[sideSupportWidth, sideThickness, bottomThickness]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module backUpperRailSegment() {
|
||||||
|
translate(v=[0,200.0-sideThickness,boxHeight+bottomThickness])
|
||||||
|
cube(size=[sideSupportWidth, sideThickness, topThickness]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module frontRailMountSegment() {
|
||||||
|
// +2 is slack
|
||||||
|
translate(v=[-railMountWidthDiff+2,0,0])
|
||||||
|
// should technically use different totalHeight, as current totalHeight is for case holder
|
||||||
|
cube(size=[railWidth,sideThickness,totalHeight]);
|
||||||
|
}
|
||||||
|
|
||||||
|
module backRailMountSegment() {
|
||||||
|
translate(v=[0,200.0-sideThickness,0])
|
||||||
|
// should technically use different totalHeight, as current totalHeight is for case holder
|
||||||
|
frontRailMountSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module frontFace() {
|
||||||
|
difference() {
|
||||||
|
hull() {
|
||||||
|
frontLowerCaseSegment();
|
||||||
|
frontUpperCaseSegment();
|
||||||
|
frontRailMountSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
// screw holes
|
||||||
|
translate(v=[-railMountWidthDiff + 10,0,5])
|
||||||
|
rotate(a=[90,0,0])
|
||||||
|
cylinder(r=m3RadiusSlacked, h=10, center=true);
|
||||||
|
|
||||||
|
translate(v=[-railMountWidthDiff + 10,0,25])
|
||||||
|
rotate(a=[90,0,0])
|
||||||
|
cylinder(r=m3RadiusSlacked, h=10, center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module backFace() {
|
||||||
|
translate(v=[0,200.0-sideThickness,0])
|
||||||
|
frontFace();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
frontFace();
|
||||||
|
backFace();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
frontLowerCaseSegment();
|
||||||
|
backLowerCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
backLowerCaseSegment();
|
||||||
|
backUpperCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
frontUpperCaseSegment();
|
||||||
|
backUpperCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
backLowerRailSegment();
|
||||||
|
backLowerCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
hull() {
|
||||||
|
backUpperRailSegment();
|
||||||
|
backUpperCaseSegment();
|
||||||
|
}
|
||||||
|
|
||||||
|
// side support/hold for case
|
||||||
|
difference() {
|
||||||
|
cube(size=[sideThickness, totalLength, totalHeight]);
|
||||||
|
|
||||||
|
translate(v=[-eps/2,5,5])
|
||||||
|
cube(size=[sideThickness+eps,totalLength-10+eps, totalHeight-10+eps]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// side support/hold for case
|
||||||
|
difference() {
|
||||||
|
translate(v=[sideSupportWidth-sideThickness,totalLength,0])
|
||||||
|
cube(size=[sideThickness, 200.0-totalLength, totalHeight]);
|
||||||
|
|
||||||
|
translate(v=[sideSupportWidth-sideThickness-eps/2,(200-totalLength)+15,5])
|
||||||
|
cube(size=[sideThickness+eps,(200.0-totalLength)-10+eps, totalHeight-10+eps]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module sideHolderAligned() {
|
||||||
|
translate(v=[19,0,0])
|
||||||
|
sideHolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
module mSide() {
|
||||||
|
mirror(v=[1,0,0]) {
|
||||||
|
sideHolderAligned();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sideHolderAligned();
|
||||||
|
|
||||||
|
translate(v=[42 + boxWidth,0,0])
|
||||||
|
*mSide();
|
||||||
|
|
||||||
7982
cases/rack/rackCaseForBox.stl
Normal file
7982
cases/rack/rackCaseForBox.stl
Normal file
File diff suppressed because it is too large
Load Diff
13
cases/rack/screws.scad
Normal file
13
cases/rack/screws.scad
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
/* Some common screw dimensions */
|
||||||
|
holeRadiusSlack = 0.5;
|
||||||
|
|
||||||
|
|
||||||
|
m3Diameter = 3.0;
|
||||||
|
m3Radius = m3Diameter/2.0;
|
||||||
|
|
||||||
|
m3RadiusSlacked = m3Radius + holeRadiusSlack;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m3ptr = m3RadiusSlacked;
|
||||||
Reference in New Issue
Block a user