n28: minor redesigning of the enclosure

This commit is contained in:
Martin Preuss
2025-12-20 14:30:51 +01:00
parent 3038208eab
commit bf1a34b449

View File

@@ -2,21 +2,24 @@ $fn = 50;
width = 23; width = 23;
length = 119; length = 119;
height = 22; height = 21;
corner_radius = 2; corner_radius = 2;
wall_thickness = 2; wall_thickness = 1.5;
post_diameter = 8; post_diameter = 8;
post_height = 0; post_height = 0;
hole_diameter = 3; hole_diameter = 3;
lid_thickness = 1.9; lid_thickness = 1.9;
lid_lip = 1 ; lid_lip = 1 ;
lid_tolerance = .25; lid_tolerance = .3;
hook_thickness = 0.75; lid_height = 4;
hook_height = 1;
hook_tolerance = .25; hook_tolerance = .25;
airslit_height = 1.75;
module posts(x, y, z, h, r){ module posts(x, y, z, h, r){
@@ -34,6 +37,7 @@ module posts(x, y, z, h, r){
} }
union() {
difference() { difference() {
// box // box
hull() { hull() {
@@ -56,7 +60,7 @@ difference() {
} }
// lip inside box // lip inside box
hull() { *hull() {
posts( posts(
x=(width/2 - corner_radius - lid_lip), x=(width/2 - corner_radius - lid_lip),
y=(length/2 - corner_radius - lid_lip), y=(length/2 - corner_radius - lid_lip),
@@ -66,27 +70,27 @@ difference() {
} }
// ventilation slits left 1 // ventilation slits left 1
for(i = [(wall_thickness+post_height+3):4:(height-5)]) { for(i = [(wall_thickness+post_height+3):(airslit_height*2):(height-5)]) {
translate([(-width/2)-wall_thickness, (-length/2)+25, i]) translate([(-width/2)-wall_thickness, (-length/2)+25, i])
cube([10, length/5, 2], center=true); cube([10, length/5, airslit_height], center=true);
} }
// ventilation slits left 2 // ventilation slits left 2
for(i = [(wall_thickness+post_height+3):4:(height-5)]) { for(i = [(wall_thickness+post_height+3):(airslit_height*2):(height-5)]) {
translate([(-width/2)-wall_thickness, (length/2)-25, i]) translate([(-width/2)-wall_thickness, (length/2)-25, i])
cube([10, length/5, 2], center=true); cube([10, length/5, airslit_height], center=true);
} }
// ventilation slits right 1 // ventilation slits right 1
for(i = [(wall_thickness+post_height+3):4:(height-5)]) { for(i = [(wall_thickness+post_height+3):(airslit_height*2):(height-5)]) {
translate([(width/2)-wall_thickness, (-length/2)+25, i]) translate([(width/2)-wall_thickness, (-length/2)+25, i])
cube([10, length/5, 2], center=true); cube([10, length/5, 1.75], center=true);
} }
// ventilation slits right 2 // ventilation slits right 2
for(i = [(wall_thickness+post_height+3):4:(height-5)]) { for(i = [(wall_thickness+post_height+3):(airslit_height*2):(height-5)]) {
translate([(width/2)-wall_thickness, (length/2)-25, i]) translate([(width/2)-wall_thickness, (length/2)-25, i])
cube([10, length/5, 2], center=true); cube([10, length/5, airslit_height], center=true);
} }
// network connector hole 1 // network connector hole 1
@@ -104,59 +108,91 @@ difference() {
translate([0, -9, -wall_thickness]) translate([0, -9, -wall_thickness])
cylinder(r = 5.5/2, h = 6); cylinder(r = 5.5/2, h = 6);
}
// slits for hooks // hooks upward facing side
// upward facing side translate([-(width/2)-0.25, length/8, height-(hook_height/2)])
translate([-((width/2)-(wall_thickness/2)), length/8, (height-lid_thickness)+1]) cube([2.5, 7, hook_height], center=true);
cube([3, 6, hook_thickness+hook_tolerance], center=true); translate([-(width/2)-0.25, -length/8, height-(hook_height/2)])
translate([-((width/2)-(wall_thickness/2)), -length/8, (height-lid_thickness)+1]) cube([2.5, 7, hook_height], center=true);
cube([3, 6, hook_thickness+hook_tolerance], center=true);
// downward facing side // hooks downward facing side
translate([(width/2)-(wall_thickness/2), 0, (height-lid_thickness)+1]) translate([(width/2)+0.25, 0, height-(hook_height/2)])
cube([3, 6, hook_thickness+hook_tolerance], center=true); cube([2.5, 7, hook_height], center=true);
translate([(width/2)-(wall_thickness/2), length/4, (height-lid_thickness)+1]) translate([(width/2)+0.25, length/4, height-(hook_height/2)])
cube([3, 6, hook_thickness+hook_tolerance], center=true); cube([2.5, 7, hook_height], center=true);
translate([(width/2)-(wall_thickness/2), -length/4, (height-lid_thickness)+1]) translate([(width/2)+0.25, -length/4, height-(hook_height/2)])
cube([3, 6, hook_thickness+hook_tolerance], center=true); cube([2.5, 7, hook_height], center=true);
} }
/* lid */ /* lid */
translate([0, 0, 40]) { translate([0, 0, 40]) { /* match at Z=17*/
difference() { difference() {
union() { union() {
difference() {
hull() { hull() {
posts( posts(
x=(width/2 - corner_radius - lid_lip - lid_tolerance), x=(width/2 - corner_radius + wall_thickness + lid_tolerance),
y=(length/2 - corner_radius - lid_lip - lid_tolerance), y=(length/2 - corner_radius + lid_tolerance),
z=0, z=0,
h=lid_thickness+1.0, h=lid_height+wall_thickness,
r=corner_radius); r=corner_radius);
} }
// upward facing side hull() {
translate([-((width/2)-lid_lip), length/8, 1]) posts(
cube([2, 5, hook_thickness], center=true); x=(width/2 - corner_radius ),
translate([-((width/2)-lid_lip), -length/8, 1]) y=(length/2 - corner_radius)+5,
cube([2, 5, hook_thickness], center=true); z=-(wall_thickness),
h=lid_height+wall_thickness,
r=corner_radius);
}
// downward facing side // slits for hooks (upward facing side)
translate([(width/2)-lid_lip, 0, 1]) translate([-((width/2)+wall_thickness/2),
length/8,
lid_height-((hook_height+hook_tolerance)/2)])
cube([4, 9, hook_height+hook_tolerance], center=true);
translate([-((width/2)+wall_thickness/2),
-length/8,
lid_height-((hook_height+hook_tolerance)/2)])
cube([4, 9, hook_height+hook_tolerance], center=true);
// slits for hooks (downward facing side)
translate([(width/2)+(wall_thickness/2),
0,
lid_height-((hook_height+hook_tolerance)/2)])
cube([4, 9, hook_height+hook_tolerance], center=true);
translate([(width/2)+(wall_thickness/2),
length/4,
lid_height-((hook_height+hook_tolerance)/2)])
cube([4, 9, hook_height+hook_tolerance], center=true);
translate([(width/2)+(wall_thickness/2),
-(length/4),
lid_height-((hook_height+hook_tolerance)/2)])
cube([4, 9, hook_height+hook_tolerance], center=true);
}
// hooks downward facing side
*translate([(width/2)-lid_lip, 0, 1])
cube([2, 5, hook_thickness], center=true); cube([2, 5, hook_thickness], center=true);
translate([(width/2)-lid_lip, length/4, 1]) *translate([(width/2)-lid_lip, length/4, 1])
cube([2, 5, hook_thickness], center=true); cube([2, 5, hook_thickness], center=true);
translate([(width/2)-lid_lip, -length/4, 1]) *translate([(width/2)-lid_lip, -length/4, 1])
cube([2, 5, hook_thickness], center=true); cube([2, 5, hook_thickness], center=true);
} }
// drilling holes // drilling holes
translate([0, (length/8), -lid_thickness]) translate([0, (length/4), -wall_thickness])
cylinder(r = hole_diameter, h = 6); cylinder(r = hole_diameter, h = 10);
translate([0, -(length/8), -lid_thickness]) translate([0, -(length/4), -wall_thickness])
cylinder(r = hole_diameter, h = 6); cylinder(r = hole_diameter, h = 10);
} }
} }