From b93ea4c409592eb21a5d192937b3782fbdc7166e Mon Sep 17 00:00:00 2001 From: Markus Rosenstihl Date: Thu, 24 Apr 2025 21:39:09 +0200 Subject: [PATCH] Box 1.0 --- sample-box.scad | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sample-box.scad diff --git a/sample-box.scad b/sample-box.scad new file mode 100644 index 0000000..a365e82 --- /dev/null +++ b/sample-box.scad @@ -0,0 +1,78 @@ +$fa = 1; +$fs = $preview ? 2 : 0.5; + +// Define dimensions +tube_diameter = 6; +tube_length = 14; +distance_between_rows = 14; +distance_between_cols = 10; +distance_to_edge=10; +n_rows = 3; +n_cols = 4; +box_wall_thickness = 2; +lid_thickness = 2; +interlock_height = 3; +interlock_width = 3; +text_dist = tube_diameter/2 + 1; +text_depth = 1; +tolerance=1; + +// Calculate derived dimensions +box_inner_width = (n_rows-1)*distance_between_rows + 2*distance_to_edge; +box_inner_length = (n_cols-1) +*distance_between_cols + 2*distance_to_edge; +box_outer_width = box_inner_width + 2 * box_wall_thickness; +box_outer_length = box_inner_length + 2 * box_wall_thickness; + +// Create the box +module box() { + difference() { + cube([box_outer_length, box_outer_width, tube_length]); + translate([box_wall_thickness,box_wall_thickness,tube_length-3]) + cube([box_inner_length, box_inner_width, 3]); + for (row = [0:n_rows-1]) { + for (col = [0:n_cols-1]) { + translate([col * (distance_between_cols)+distance_to_edge+box_wall_thickness, + row * (distance_between_rows)+distance_to_edge+box_wall_thickness, + 3]) + cylinder(h=tube_length, d=tube_diameter, center=false); + } + } + for (row = [0:n_rows-1]) { + for (col = [0:n_cols-1]) { + translate([col * (distance_between_cols)+distance_to_edge+box_wall_thickness, + row * (distance_between_rows)+distance_to_edge+box_wall_thickness+text_dist, + tube_length-3-text_depth]) + linear_extrude(height=text_depth) text(str((n_rows+1)*(row)+(col+1)), + font = "Quicksand:style=Bold", size=5, halign="center"); + } + } + } + +} + + +module lid() { + + difference() { + union() { + cube([box_outer_length, box_outer_width, tube_length-2]); + translate([box_wall_thickness+tolerance/2, box_wall_thickness+tolerance/2,0]) + cube([box_inner_length-tolerance, box_inner_width-tolerance, tube_length]); + } + for (row = [0:n_rows-1]) { + for (col = [0:n_cols-1]) { + translate([col * (distance_between_cols)+distance_to_edge+box_wall_thickness, + row * (distance_between_rows)+distance_to_edge+box_wall_thickness, + 3]) + cylinder(h=tube_length, d=tube_diameter, center=false); + } + } + } +} + + +// Assemble the box, lid, and interlock +box(); +translate([n_cols*distance_between_cols +20,0,0]) lid(); +//interlock(); \ No newline at end of file