Simplified some of the code in box.scad in response to comments from SCA2D.
This commit is contained in:
parent
773a53829f
commit
9bb9f09dca
|
@ -121,11 +121,12 @@ module grill(width, height, r = 1000, poly = false, h = 0) { //! A staggered arr
|
||||||
|
|
||||||
module box_corner_profile_2D(type) { //! The 2D shape of the corner profile.
|
module box_corner_profile_2D(type) { //! The 2D shape of the corner profile.
|
||||||
t = box_sheet_slot(type);
|
t = box_sheet_slot(type);
|
||||||
|
inset = box_corner_gap(type) + box_profile_overlap(type);
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
quadrant(box_hole_inset(type) + box_boss_r(type), box_boss_r(type)); // inside corner
|
quadrant(box_hole_inset(type) + box_boss_r(type), box_boss_r(type)); // inside corner
|
||||||
|
|
||||||
translate([box_corner_gap(type) + box_profile_overlap(type), box_corner_gap(type) + box_profile_overlap(type)])
|
translate([inset, inset])
|
||||||
rotate(180)
|
rotate(180)
|
||||||
quadrant(box_profile_overlap(type) + box_corner_rad(type), box_corner_rad(type)); // outside corner
|
quadrant(box_profile_overlap(type) + box_corner_rad(type), box_corner_rad(type)); // outside corner
|
||||||
}
|
}
|
||||||
|
@ -212,33 +213,39 @@ module box_bezel(type, bottom) { //! Generates top and bottom bezel STLs
|
||||||
feet = bottom && box_feet(type);
|
feet = bottom && box_feet(type);
|
||||||
t = box_sheet_slot(type);
|
t = box_sheet_slot(type);
|
||||||
outset = box_outset(type);
|
outset = box_outset(type);
|
||||||
|
inset = box_inset(type);
|
||||||
inner_r = box_sheet_r(type);
|
inner_r = box_sheet_r(type);
|
||||||
foot_height = box_corner_gap(type) + sheet_thickness(box_base_sheet(type)) + washer_thickness(box_washer(type)) + screw_head_height(box_screw(type)) + box_profile_overlap(type) + 2;
|
cgap = box_corner_gap(type);
|
||||||
|
foot_height = cgap + sheet_thickness(box_base_sheet(type)) + washer_thickness(box_washer(type)) + screw_head_height(box_screw(type)) + box_profile_overlap(type) + 2;
|
||||||
foot_length = box_corner_rad(type) * 2;
|
foot_length = box_corner_rad(type) * 2;
|
||||||
height = box_bezel_height(type, bottom);
|
height = box_bezel_height(type, bottom);
|
||||||
foot_extension = foot_height - height;
|
foot_extension = foot_height - height;
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
|
w = box_width(type);
|
||||||
|
d = box_depth(type);
|
||||||
translate_z(-box_profile_overlap(type)) difference() {
|
translate_z(-box_profile_overlap(type)) difference() {
|
||||||
rounded_rectangle([box_width(type) + 2 * outset, box_depth(type) + 2 * outset, feet ? foot_height : height], box_corner_rad(type), false);
|
tw = w + 2 * outset;
|
||||||
|
td = d + 2 * outset;
|
||||||
|
rounded_rectangle([tw, td, feet ? foot_height : height], box_corner_rad(type), false);
|
||||||
//
|
//
|
||||||
// Remove edges between the feet
|
// Remove edges between the feet
|
||||||
//
|
//
|
||||||
if(feet)
|
if(feet)
|
||||||
hull() {
|
hull() {
|
||||||
translate_z(height + 0.5)
|
translate_z(height + 0.5)
|
||||||
cube([box_width(type) - 2 * foot_length, box_depth(type) + 2 * outset + 1, 1], center = true);
|
cube([w - 2 * foot_length, td + 1, 1], center = true);
|
||||||
|
|
||||||
translate_z(foot_height + 1)
|
translate_z(foot_height + 1)
|
||||||
cube([box_width(type) - 2 * (foot_length - foot_extension), box_depth(type) + 2 * outset + 1, 1], center = true);
|
cube([w - 2 * (foot_length - foot_extension), td + 1, 1], center = true);
|
||||||
}
|
}
|
||||||
if(feet)
|
if(feet)
|
||||||
hull() {
|
hull() {
|
||||||
translate_z(height + 0.5)
|
translate_z(height + 0.5)
|
||||||
cube([box_width(type) + 2 * outset + 1, box_depth(type) - 2 * foot_length, 1], center = true);
|
cube([tw + 1, d - 2 * foot_length, 1], center = true);
|
||||||
|
|
||||||
translate_z(foot_height + 1)
|
translate_z(foot_height + 1)
|
||||||
cube([box_width(type) + 2 * outset + 1, box_depth(type) - 2 * (foot_length - foot_extension), 1], center = true);
|
cube([tw + 1, d - 2 * (foot_length - foot_extension), 1], center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
@ -247,28 +254,28 @@ module box_bezel(type, bottom) { //! Generates top and bottom bezel STLs
|
||||||
translate_z(-box_profile_overlap(type))
|
translate_z(-box_profile_overlap(type))
|
||||||
linear_extrude(2 * box_profile_overlap(type), center = true)
|
linear_extrude(2 * box_profile_overlap(type), center = true)
|
||||||
for(i = [-1, 1]) {
|
for(i = [-1, 1]) {
|
||||||
translate([i * (box_width(type) / 2 + t / 2 - sheet_slot_clearance / 2), 0])
|
translate([i * (w + t - sheet_slot_clearance) / 2, 0])
|
||||||
square([t, box_depth(type) - 2 * box_corner_gap(type)], center = true);
|
square([t, d - 2 * cgap], center = true);
|
||||||
|
|
||||||
translate([0, i * (box_depth(type) / 2 + t / 2 - sheet_slot_clearance / 2)])
|
translate([0, i * (d + t - sheet_slot_clearance) / 2])
|
||||||
square([box_width(type) - 2 * box_corner_gap(type), t], center = true);
|
square([w - 2 * cgap, t], center = true);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// recess for top / bottom panel
|
// recess for top / bottom panel
|
||||||
//
|
//
|
||||||
translate_z(box_corner_gap(type))
|
translate_z(cgap)
|
||||||
rounded_rectangle([box_width(type) + bezel_clearance, box_depth(type) + bezel_clearance, height], inner_r + bezel_clearance / 2, false);
|
rounded_rectangle([w + bezel_clearance, d + bezel_clearance, height], inner_r + bezel_clearance / 2, false);
|
||||||
//
|
//
|
||||||
// leave plastic over the corner profiles
|
// leave plastic over the corner profiles
|
||||||
//
|
//
|
||||||
translate_z(-box_profile_overlap(type) - 1)
|
translate_z(-box_profile_overlap(type) - 1)
|
||||||
linear_extrude(box_profile_overlap(type) + box_corner_gap(type) + 2)
|
linear_extrude(box_profile_overlap(type) + cgap + 2)
|
||||||
union() {
|
union() {
|
||||||
difference() {
|
difference() {
|
||||||
square([box_width(type) - 2 * box_inset(type),
|
square([w - 2 * inset,
|
||||||
box_depth(type) - 2 * box_inset(type)], center = true);
|
d - 2 * inset], center = true);
|
||||||
|
|
||||||
box_corner_quadrants(type, box_width(type), box_depth(type));
|
box_corner_quadrants(type, w, d);
|
||||||
}
|
}
|
||||||
box_screw_hole_positions(type)
|
box_screw_hole_positions(type)
|
||||||
poly_circle(screw_clearance_radius(box_screw(type)));
|
poly_circle(screw_clearance_radius(box_screw(type)));
|
||||||
|
@ -291,7 +298,9 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
|
||||||
dw = bw - 2 * dowel_wall;
|
dw = bw - 2 * dowel_wall;
|
||||||
dh = box_bezel_height(type, bottom) - dowel_h_wall;
|
dh = box_bezel_height(type, bottom) - dowel_h_wall;
|
||||||
|
|
||||||
dh2 = box_profile_overlap(type) + box_corner_gap(type) - dowel_h_wall;
|
profile_overlap = box_profile_overlap(type);
|
||||||
|
|
||||||
|
dh2 = profile_overlap + box_corner_gap(type) - dowel_h_wall;
|
||||||
|
|
||||||
end_clearance = 0.5;
|
end_clearance = 0.5;
|
||||||
module male() {
|
module male() {
|
||||||
|
@ -299,14 +308,14 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
|
||||||
linear_extrude(dowel_length - 2 * end_clearance, center = true)
|
linear_extrude(dowel_length - 2 * end_clearance, center = true)
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
h = dh - layer_height;
|
h1 = dh - layer_height;
|
||||||
h2 = dh2 - layer_height;
|
h2 = dh2 - layer_height;
|
||||||
hull() {
|
hull() {
|
||||||
translate([bw / 2, h / 2])
|
translate([bw / 2, h1 / 2])
|
||||||
square([dw - 1, h], center = true);
|
square([dw - 1, h1], center = true);
|
||||||
|
|
||||||
translate([bw / 2, (h - 1) / 2])
|
translate([bw / 2, (h1 - 1) / 2])
|
||||||
square([dw, h - 1], center = true);
|
square([dw, h1 - 1], center = true);
|
||||||
}
|
}
|
||||||
|
|
||||||
hull() {
|
hull() {
|
||||||
|
@ -318,7 +327,7 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([bw2 / 2, 0])
|
translate([bw2 / 2, 0])
|
||||||
square([box_sheet_slot(type), 2 * box_profile_overlap(type)], center = true);
|
square([box_sheet_slot(type), 2 * profile_overlap], center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,7 +368,7 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
|
||||||
render() difference() {
|
render() difference() {
|
||||||
union() {
|
union() {
|
||||||
clip(xmin = 0, xmax = w, ymin = 0, ymax = h)
|
clip(xmin = 0, xmax = w, ymin = 0, ymax = h)
|
||||||
translate([tw / 2 - x * w, th / 2 - y * h, box_profile_overlap(type)])
|
translate([tw / 2 - x * w, th / 2 - y * h, profile_overlap])
|
||||||
box_bezel(type, bottom);
|
box_bezel(type, bottom);
|
||||||
|
|
||||||
if(x < cols - 1 && y == 0)
|
if(x < cols - 1 && y == 0)
|
||||||
|
@ -419,10 +428,14 @@ module box_bezel_section(type, bottom, rows, cols, x, y) { //! Generates interlo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module box_screw_hole_positions(type)
|
module box_screw_hole_positions(type) {
|
||||||
|
inset = box_hole_inset(type);
|
||||||
|
w = box_width(type) / 2 - inset;
|
||||||
|
d = box_depth(type) / 2 - inset;
|
||||||
for(x = [-1, 1], y = [-1, 1])
|
for(x = [-1, 1], y = [-1, 1])
|
||||||
translate([x * (box_width(type) / 2 - box_hole_inset(type)), y * (box_depth(type) / 2 - box_hole_inset(type))])
|
translate([x * w, y * d])
|
||||||
children();
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
module box_base_blank(type) { //! Generates a 2D template for the base sheet
|
module box_base_blank(type) { //! Generates a 2D template for the base sheet
|
||||||
dxf("box_base");
|
dxf("box_base");
|
||||||
|
|
Loading…
Reference in New Issue