include include include use module bolt_drilling() { steps = 3; step_width = 0.1; height = 3; for(i = [-steps : steps]) { tol = bolt_ds_tol + i * step_width; echo(bolt_ds_tol=tol); translate([i*5*bolt_ds,0,0]) difference() { cube([5*bolt_ds, 5*bolt_ds, height]); translate([2.5*bolt_ds,2.5*bolt_ds,0]) { cylinder(d=bolt_ds+tol,h=height,$fn=50); } } } } module nut_drilling() { steps = 3; step_width = 0.1; for(i = [-steps : steps]) { tol = nut_d_tol + i * step_width; echo(nut_d_tol=tol); translate([i*5*nut_d,0,0]) difference() { cube([5*nut_d, 5*nut_d, 2*nut_h]); translate([2.5*nut_d,2.5*nut_d,0]) { union() { cylinder(d=bolt_ds,h=2*nut_h,$fn=50); translate([0,0,nut_h]) cylinder(d=tol+nut_d,h=nut_h,$fn=50); } } } } } module panel_thickness() { steps = 3; step_width = 0.2; t = 2; height = 2*t; for(i = [-steps : steps]) { tol = panel_dim_0_tol + i * step_width; echo(panel_dim_0_tol=tol); translate([i*5*t,0,0]) difference() { cube([5*t, 5*t, height]); translate([2*t, 0, t]) { cube([t+tol, 5*t, t]); } } } translate([0, 6*t, 0]) rotate([0, -90, 0]) rounded_cube([t, 4*t, 7*t], t); } module panel_width_height() { steps = 3; step_width = 0.2; t = 2; height = 3*t; for(i = [-steps : steps]) { tol = panel_dim_1_2_tol + i * step_width; echo(panel_dim_1_2_tol=tol); translate([i*3*t,0,0]) difference() { cube([3*t, 8*t, height]); translate([t, t-tol/2, t]) { rounded_cube([t, 6*t+tol, 6*t+tol], t); } } } translate([0, 9*t, 0]) rotate([0, -90, 0]) rounded_cube([t, 6*t, 6*t], t); } bolt_drilling(); translate([0, 20, 0]) nut_drilling(); translate([0, 90, 0]) panel_thickness(); translate([0, 50, 0]) panel_width_height();