uniwersalny divider

This commit is contained in:
sasza 2025-06-20 22:49:40 +02:00
parent 03a716ea44
commit 0567c0e92e

View file

@ -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);
}
}