100 lines
3.2 KiB
OpenSCAD
100 lines
3.2 KiB
OpenSCAD
include <BOSL/constants.scad>;
|
|
use <BOSL/metric_screws.scad>;
|
|
|
|
only = "outer";
|
|
|
|
height = 20;
|
|
width = 100;
|
|
depth = 30;
|
|
thickness = 2;
|
|
gap = 0.4;
|
|
inner = [width, depth, height];
|
|
outer = [width+2*thickness+2*gap, depth+2*thickness+2*gap, height+2*thickness+2*gap];
|
|
diag_overlap = 8;
|
|
|
|
module auflage() {
|
|
rotate([180,0,0])
|
|
difference() {
|
|
translate([0,1,0]) cube( [10,2,10], center=true);
|
|
translate([-5,2,1]) rotate([45,0,0]) cube([10,6,10]);
|
|
translate([1,2,-5]) rotate([0,0,-45]) cube([10,6,10]);
|
|
translate([-5,2,-1]) rotate([-45,0,0]) translate([0,0,-10]) cube([10,6,10]);
|
|
translate([-1,2,-5]) rotate([0,0,45]) translate([-10,0,0]) cube([10,6,10]);
|
|
};
|
|
};
|
|
|
|
if(only!="inner") {
|
|
rotate([0, only=="outer" ? 90 : 0,0]){
|
|
union() {
|
|
difference() {
|
|
union() {
|
|
rotate([ 0, 90, 0])
|
|
cylinder( inner.x+2*thickness, outer.z/2+thickness, outer.z/2+thickness, center=true);
|
|
translate([ 0, -inner.y/4-2*thickness, 0])
|
|
cube([ inner.x+2*thickness, inner.y/2+thickness, inner.z+2*thickness], center=true);
|
|
};
|
|
|
|
union() {
|
|
//rotate([ 0, 90, 0])
|
|
//cylinder( inner.x, inner.z/2, inner.z/2, center=true);
|
|
translate([ 0, -inner.y/4-thickness, 0])
|
|
cube([ inner.x+2.1*thickness, inner.y/2+2*thickness, inner.z], center=true);
|
|
//translate([ 0, -inner.y/4-thickness, 0])
|
|
//cube([ inner.x-thickness, inner.y/2+thickness, inner.z-thickness], center=true);
|
|
}
|
|
};
|
|
|
|
translate( [inner.x/2-thickness/2, 0, inner.z/2-thickness/2])
|
|
auflage();
|
|
translate( [-inner.x/2+thickness/2, 0, inner.z/2-thickness/2])
|
|
auflage();
|
|
translate( [inner.x/2-thickness/2, 0, -inner.z/2+thickness/2])
|
|
auflage();
|
|
translate( [-inner.x/2+thickness/2, 0, -inner.z/2+thickness/2])
|
|
auflage();
|
|
};
|
|
};
|
|
};
|
|
|
|
if(only!="outer") {
|
|
rotate([only=="inner" ? 90 : 0,0,0]){
|
|
union() {
|
|
difference() {
|
|
union() {
|
|
rotate([ 0, 90, 0])
|
|
cylinder( outer.x+2*thickness+2*gap, outer.z/2+thickness+2*gap, outer.z/2+thickness+2*gap, center=true);
|
|
translate([ 0, -outer.y/4, 0])
|
|
cube([ outer.x+2*thickness+2*gap, outer.y/2+thickness+2*gap, outer.z+2*thickness+2*gap], center=true);
|
|
};
|
|
union() {
|
|
rotate([ 0, 90, 0])
|
|
cylinder( outer.x, outer.z/2, outer.z/2, center=true);
|
|
translate([ 0, -outer.y/4, 0])
|
|
cube([ outer.x, outer.y/2, outer.z], center=true);
|
|
};
|
|
translate([ 0, thickness, 0])
|
|
cube([ outer.x-2*thickness, outer.y-3*thickness, outer.z+3*thickness], center=true);
|
|
translate([ 0, -outer.y/2, 0]) {
|
|
cube([ outer.x-2*diag_overlap, 1.5*thickness, outer.z], center=true);
|
|
cube([ outer.x, 1.5*thickness, outer.z-2*diag_overlap], center=true);
|
|
|
|
diag_overlap_length = sqrt(diag_overlap^2*2);
|
|
o = [ outer.x/2-diag_overlap, -0.75*thickness, outer.z/2-diag_overlap];
|
|
|
|
translate([ o.x, o.y, o.z])
|
|
rotate([ 0,45,0])
|
|
cube([ diag_overlap_length, 2*thickness, diag_overlap_length], center=true);
|
|
translate([ -o.x, o.y, o.z])
|
|
rotate([ 0,45,0])
|
|
cube([ diag_overlap_length, 2*thickness, diag_overlap_length], center=true);
|
|
translate([ -o.x, o.y, -o.z])
|
|
rotate([ 0,45,0])
|
|
cube([ diag_overlap_length, 2*thickness, diag_overlap_length], center=true);
|
|
translate([ o.x, o.y, -o.z])
|
|
rotate([ 0,45,0])
|
|
cube([ diag_overlap_length, 2*thickness, diag_overlap_length], center=true);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}; |