diff --git a/Jan/Customizeable_Drawer_Divider.scad b/Jan/Customizeable_Drawer_Divider.scad new file mode 100644 index 0000000..8bab238 --- /dev/null +++ b/Jan/Customizeable_Drawer_Divider.scad @@ -0,0 +1,89 @@ +//!OpenSCAD +// https://www.thingiverse.com/thing:2764423/files + +//The length of the divider +Divider_Length = 130; +//Wether to create a linear connector on the left/top end +Left_Top_Connector = true; +//Wether to invert the left/top connector +Left_Top_Connector_Inverted = false; +//Wether to create a linear connector on the right/bottom end +Right_Bottom_Connector = true; +//Wether to invert the right/bottom connector +Right_Bottom_Connector_Inverted = true; +//The positions to create a slit of Divider_Thickness width for perpendicular connections at +Positions_Connectors = [30, 65, 100]; + +//The height of the divider +Divider_Height = 50; +//The thickness of the divider (Should give an even number if diveded by layer height) +Divider_Thickness = 2; +//The length of overlap regions for connecting +Overlap_Length = 20; +//The diameter of the holes and knobs for connecting (Sould be smaller than Overlap_Length +Diameter_Connectors = 10; +//The amount of connectors per overlap region (Must be smaller than Divider_Height divided by Diameter_Connectors +Amount_Connectors = 2; +//Wether to ignore problems that could result in a failing print +Ignore_Problems = false; + +//Circle Resolution +$fn = 32; + +//Internal Calculations +Reduced_Divider_Length = Divider_Length - (Left_Top_Connector ? Overlap_Length / 2 : 0) - (Right_Bottom_Connector ? Overlap_Length / 2 : 0); +Left_Top_Offset = Left_Top_Connector ? Overlap_Length / 2 : 0; + +if (!Ignore_Problems + && ( (Overlap_Length < Diameter_Connectors) + || ((Divider_Height / Diameter_Connectors) < Amount_Connectors) + ) + ) + translate([0, Divider_Height, 0]) + text("Warning! Print might not give a good result", halign="center", valign="center"); +difference() { + cube([Reduced_Divider_Length, Divider_Height, Divider_Thickness], center=true); + + for (x = Positions_Connectors) + translate([-Reduced_Divider_Length/2+x-Left_Top_Offset, Divider_Height/4 + 0.01, 0]) + cube([Divider_Thickness, Divider_Height/2, Divider_Thickness+0.02], center=true); +} + +if (Left_Top_Connector) { + translate([-(Reduced_Divider_Length+Overlap_Length)/2, 0, 0]) { + if (Left_Top_Connector_Inverted) + mirror([0,0,1]) + Connector(); + else + Connector(); + } +} + +if (Right_Bottom_Connector) { + translate([(Reduced_Divider_Length+Overlap_Length)/2, 0, 0]) { + rotate([180,0,0]) { + if (Right_Bottom_Connector_Inverted) + mirror([0,0,1]) + Connector(); + else + Connector(); + } + } +} + +module Connector() { + union(){ + difference(){ + translate([0, 0, -Divider_Thickness/4]) + cube([Overlap_Length, Divider_Height, Divider_Thickness/2], center=true); + + for (i = [0 : 2 : Amount_Connectors - 1]) + translate([0, -Divider_Height/2 + ((i+0.5)*Divider_Height/Amount_Connectors), -Divider_Thickness/4 + 0.01]) + cylinder(h=Divider_Thickness/2 + 0.03, r1=(Diameter_Connectors-Divider_Thickness/2)/2, r2=(Diameter_Connectors+Divider_Thickness/2)/2, center=true); + } + + for (i = [1 : 2 : Amount_Connectors - 1]) + translate([0, -Divider_Height/2 + ((i+0.5)*Divider_Height/Amount_Connectors), Divider_Thickness/4 + 0.01]) + cylinder(h=Divider_Thickness/2 + 0.03, r1=(Diameter_Connectors+Divider_Thickness/2)/2, r2=(Diameter_Connectors-Divider_Thickness/2)/2, center=true); + } +} \ No newline at end of file