3d-printing/my_designs/parametric-radius-gauge/box.scad
2025-12-17 15:28:17 -06:00

99 lines
3.8 KiB
OpenSCAD

$fn = 128;
module tray(gauge_width, gauge_height, guage_thickness, gauge_range, t_radius, wall_thickness) {
gauge_slots_length = ((gauge_range[1] - 1) * wall_thickness) + (gauge_range[1] * guage_thickness);
gauge_slots_height = gauge_height * 0.25;
tray_length = gauge_slots_length + (wall_thickness * 2);
tray_width = gauge_width + (wall_thickness * 2);
tray_height = gauge_slots_height;
lip_length = tray_length + (wall_thickness * 2);
lip_width = tray_width + (wall_thickness * 2);
union() {
difference() {
cube([gauge_width, gauge_slots_length, gauge_slots_height], center = true);
for(count = [gauge_range[0] : gauge_range[1]]) {
start_y = -(gauge_slots_length / 2);
wall_offset = (count - 1) * wall_thickness;
gauge_offset = (count - 1) * guage_thickness;
y_pos = start_y + gauge_offset + wall_offset;
translate([-(gauge_width / 2), y_pos, -(gauge_height / 2)])
cube([gauge_width, guage_thickness, gauge_height]);
};
};
difference() {
cube([tray_width, tray_length, tray_height], center = true);
cube([gauge_width, gauge_slots_length, gauge_slots_height], center = true);
};
translate([0, 0, -(wall_thickness / 2)])
linear_extrude(tray_height - wall_thickness, center = true)
difference() {
offset(r = t_radius) {
square([(lip_width - (t_radius * 2)), (lip_length - (t_radius * 2))], center = true);
};
square([tray_width, tray_length], center = true);
};
translate([0, 0, -((tray_height / 2) + (wall_thickness / 2))])
difference() {
minkowski() {
cube([tray_width, tray_length, wall_thickness], center = true);
cylinder(h = wall_thickness, r1 = 0, r2 = t_radius);
};
translate([0, 0, wall_thickness])
cube([lip_width, lip_length, wall_thickness], center = true);
};
};
};
module lid(gauge_width, gauge_height, guage_thickness, gauge_range, t_radius, wall_thickness, p_tolerance) {
outer_length = ((gauge_range[1] - 1) * wall_thickness) + (gauge_range[1] * guage_thickness) + (wall_thickness * 4);
outer_width = gauge_width + (wall_thickness * 4);
inner_height = (gauge_height * 0.75) + wall_thickness;
inner_width = outer_width - (wall_thickness * 2);
inner_length = outer_length - (wall_thickness * 2);
union() {
linear_extrude(inner_height, center = true)
difference() {
offset(r = t_radius) {
square([(outer_width - (t_radius * 2)), (outer_length - (t_radius * 2))], center = true);
};
square([inner_width + p_tolerance, inner_length + p_tolerance], center = true);
};
translate([0, 0, -((inner_height / 2) + (wall_thickness / 2))])
difference() {
minkowski() {
cube([inner_width, inner_length, wall_thickness], center = true);
cylinder(h = wall_thickness, r1 = 0, r2 = t_radius);
};
translate([0, 0, wall_thickness])
cube([outer_width, outer_length, wall_thickness], center = true);
};
};
};
tolerance = 0.5;
radius = 2;
w_thickness = 2;
g_width = 65 + (tolerance);
g_height = 35 + (tolerance);
g_thickness = 1.5 + (tolerance);
g_range = [1, 30];
translate([40, 0, 0])
tray(g_width, g_height, g_thickness, g_range, radius, w_thickness);
translate([-40, 0, 0])
lid(g_width, g_height, g_thickness, g_range, radius, w_thickness, tolerance);