diff --git a/Double Helix Toothbrush Holder Oral-B Revision.scad b/Double Helix Toothbrush Holder Oral-B Revision.scad index 481b050..5d06546 100644 --- a/Double Helix Toothbrush Holder Oral-B Revision.scad +++ b/Double Helix Toothbrush Holder Oral-B Revision.scad @@ -1,5 +1,7 @@ /* --------------------------------------------------------------------------------------- * * Double Helix Toothbrush Holder Oral-B Revision - Copyright Matthew McClain 2024 * + * MCGIT : https://mcgit.place/MatCat-Models/Double_Helix_Toothbrush_Holder * + * Printables: https://www.printables.com/model/713927-double-helix-toothbrush-holder * * * * This project is licensed as such: * * You are free to use this code for personal use. If you alter or include this code * @@ -12,51 +14,51 @@ * interested in a commercial license. * * * * Parameters: * - * There are 6 parameters to this model as follows, * + * There are 9 parameters to this model as follows, * * * - * height : The height of the helix in mm. The total model height will be * - * this height + thickness/2 +1 * - * radius : The radius of the entire toothbrush holder * - * thickness : The radius of the helix spirals * - * brushhole : This is the diameter of the hole the toothbrish will sit in * - * tubethickness: This will be the tube wall thickness of the toothbrush holder * - * brushes : Total number of toothbrushes the holder will have * + * height : The height of the helix in mm. The total model height will be * + * this height + thickness/2 +1-2 * + * steps : This setting will control the granularity of the design, a lower number* + * will result in smoother model but take much longer to render * + * radius : The radius of the entire toothbrush holder * + * thickness : The radius of the helix spirals * + * brushhole : This is the diameter of the hole the toothbrish will sit in * + * tubethickness : This will be the tube wall thickness of the toothbrush holder * + * floorthickness: The thickness from the bottom of the model to floor of brush tube * + * drainholediam : The diameter of the drain hole at the buttom of each brush tube * + * brushes : Total number of toothbrushes the holder will have * * * * --------------------------------------------------------------------------------------- */ $fn = 60; height = 100; // This is the total height of the toothbrush holder +steps = 3; // Number of steps to take to get to height radius = 35; // This is the total radius of the tothbrush holder thickness = 32; // This is the thickness of the toothbrush holder twists brushhole = 26; // This is the thickness of the hole a toothbrush will sit in tubethickness = 2; // This is the wall thickness of the toothbrush tube walls +floorthickness = 2; // How thick should the floor be on the bottom of the holder +drainholediam = 5; // Diamater of drain hole at bottom of brush holder tubes brushes = 5; // Total number of brushes + difference() { union() { - for (i=[0:height]) { + for (i=[0:steps:height-steps]) { // Twist 1 hull() { rotate([0,0,(360*i)/height]) translate([radius,0,i]) sphere(d=thickness); - rotate([0,0,(360*(i+1))/height]) translate([radius,0,i+1]) sphere(d=thickness); + rotate([0,0,(360*(i+steps))/height]) translate([radius,0,i+steps]) sphere(d=thickness); } // Twist 2 hull() { rotate([0,0,(360*(i-(height/2)))/height]) translate([radius,0,i]) sphere(d=thickness); - rotate([0,0,(360*((i+1)-(height/2)))/height]) translate([radius,0,i+1]) sphere(d=thickness); + rotate([0,0,(360*((i+steps)-(height/2)))/height]) translate([radius,0,i+steps]) sphere(d=thickness); } - // Base - hull() { - rotate([0,0,(360*i)/height]) translate([radius,0,0]) sphere(d=thickness); - rotate([0,0,(360*(i+1))/height]) translate([radius,0,0]) sphere(d=thickness); - } - // Top Ring - hull() { - rotate([0,0,(360*i)/height]) translate([radius,0,height+1]) sphere(d=thickness); - rotate([0,0,(360*(i+1))/height]) translate([radius,0,height+1]) sphere(d=thickness); - } - - } + // Base Ring + rotate_extrude(convexity=10) translate([radius,0,0]) circle(d=thickness); + // Top Ring + translate([0,0,height]) rotate_extrude(convexity=10) translate([radius,0,0]) circle(d=thickness); // Toothbrush pillar for (i=[0:brushes-1]) { rotate([0,0,(360/brushes)*i]) translate([radius,0,0]) cylinder(d=brushhole+(tubethickness*2),h=height); @@ -64,7 +66,10 @@ difference() { } // Toothbrush Hole for (i=[0:brushes-1]) { - rotate([0,0,(360/brushes)*i]) translate([radius,0,radius/2]) cylinder(d=brushhole,h=height); + rotate([0,0,(360/brushes)*i]) translate([radius,0,floorthickness]) cylinder(d=brushhole,h=height+(thickness/2)); + // Drain Hole + rotate([0,0,(360/brushes)*i]) translate([radius,0,-thickness/2]) cylinder(d=drainholediam,h=thickness); } - + // Flatten bottom some to make for better print adhesion + translate([-(radius*1.5),-(radius*1.5),-((thickness/2)+floorthickness)]) cube([radius*3,radius*3,thickness/2]); } \ No newline at end of file diff --git a/Double Helix Toothbrush Holder Standard Revision.scad b/Double Helix Toothbrush Holder Standard Revision.scad new file mode 100644 index 0000000..df42de6 --- /dev/null +++ b/Double Helix Toothbrush Holder Standard Revision.scad @@ -0,0 +1,75 @@ +/* --------------------------------------------------------------------------------------- * + * Double Helix Toothbrush Holder Standard Revision - Copyright Matthew McClain 2024 * + * MCGIT : https://mcgit.place/MatCat-Models/Double_Helix_Toothbrush_Holder * + * Printables: https://www.printables.com/model/713927-double-helix-toothbrush-holder * + * * + * This project is licensed as such: * + * You are free to use this code for personal use. If you alter or include this code * + * in your own projects you must include credit to my name and a link to this project * + * either to the printables.com page, or mcgit repository. * + * Commercial use is prohibited without a commercial license. This includes either * + * selling the code or model files derived from the code, as well as printing for * + * the purpose of selling. I am more then happy to offer a commerical license for * + * a reasonable offer. Please contact me via printables.com or mcgit if you are * + * interested in a commercial license. * + * * + * Parameters: * + * There are 9 parameters to this model as follows, * + * * + * height : The height of the helix in mm. The total model height will be * + * this height + thickness/2 +1-2 * + * steps : This setting will control the granularity of the design, a lower number* + * will result in smoother model but take much longer to render * + * radius : The radius of the entire toothbrush holder * + * thickness : The radius of the helix spirals * + * brushhole : This is the diameter of the hole the toothbrish will sit in * + * tubethickness : This will be the tube wall thickness of the toothbrush holder * + * floorthickness: The thickness from the bottom of the model to floor of brush tube * + * drainholediam : The diameter of the drain hole at the buttom of each brush tube * + * brushes : Total number of toothbrushes the holder will have * + * * + * --------------------------------------------------------------------------------------- */ + +$fn = 60; +height = 100; // This is the total height of the toothbrush holder +steps = 3; // Number of steps to take to get to height +radius = 25; // This is the total radius of the tothbrush holder +thickness = 20; // This is the thickness of the toothbrush holder twists +brushhole = 16; // This is the thickness of the hole a toothbrush will sit in +tubethickness = 2; // This is the wall thickness of the toothbrush tube walls +floorthickness = 2; // How thick should the floor be on the bottom of the holder +drainholediam = 5; // Diamater of drain hole at bottom of brush holder tubes +brushes = 6; // Total number of brushes + +difference() { + union() { + for (i=[0:steps:height-steps]) { + // Twist 1 + hull() { + rotate([0,0,(360*i)/height]) translate([radius,0,i]) sphere(d=thickness); + rotate([0,0,(360*(i+steps))/height]) translate([radius,0,i+steps]) sphere(d=thickness); + } + // Twist 2 + hull() { + rotate([0,0,(360*(i-(height/2)))/height]) translate([radius,0,i]) sphere(d=thickness); + rotate([0,0,(360*((i+steps)-(height/2)))/height]) translate([radius,0,i+steps]) sphere(d=thickness); + } + } + // Base Ring + rotate_extrude(convexity=10) translate([radius,0,0]) circle(d=thickness); + // Top Ring + translate([0,0,height]) rotate_extrude(convexity=10) translate([radius,0,0]) circle(d=thickness); + // Toothbrush pillar + for (i=[0:brushes-1]) { + rotate([0,0,(360/brushes)*i]) translate([radius,0,0]) cylinder(d=brushhole+(tubethickness*2),h=height); + } + } + // Toothbrush Hole + for (i=[0:brushes-1]) { + rotate([0,0,(360/brushes)*i]) translate([radius,0,floorthickness]) cylinder(d=brushhole,h=height+(thickness/2)); + // Drain Hole + rotate([0,0,(360/brushes)*i]) translate([radius,0,-thickness/2]) cylinder(d=drainholediam,h=thickness); + } + // Flatten bottom some to make for better print adhesion + translate([-(radius*1.5),-(radius*1.5),-((thickness/2)+floorthickness)]) cube([radius*3,radius*3,thickness/2]); +} \ No newline at end of file diff --git a/README.md b/README.md index 661d1d5..c007c7e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,16 @@ # Double Helix Toothbrush Holder Oral-B Revision +MCGIT : https://mcgit.place/MatCat-Models/Double_Helix_Toothbrush_Holder +Printables: https://www.printables.com/model/713927-double-helix-toothbrush-holder + Copyright Matthew McClain 2024 + This is a fun decorative toothbrush holder based on the idea of the DNA double helix. This model is fully parametric using OpenSCAD. There are 2 OpenSCAD files included, one is a standard toothbrush holder designed to hold normal standard toothbrushes, and an Oral-B version designed to hold Oral-B electric toothbrushes. There are STL models included for 2-6 standard toothbrushes, and for 2-5 Oral-B toothbrushes. + + Note on using OpenSCAD parametrics: This is actually a fairly complex model to render, it may take a while (up to an hour on slower systems), you can speed this up by increasing the step parameter, or decreasing the $fn parameter, though keep in mind the more you adjust those parameters the more blocky / low poly the result will be, and inversely the smoother the output will be, at a sacrifice of time taken to render. + + For printing support should not be required on most models, though on versions with lower toothbrush tubes it may be required only on the very top ring. + ## License You are free to use this code for personal use. If you alter or include this code in your own projects you must include credit to my name and a link to this project either to the printables.com page, or mcgit repository. @@ -14,11 +23,13 @@ Copyright Matthew McClain 2024 There are 6 parameters to this model as follows -* height: The height of the helix in mm. The total model height will be - this height + thickness/2 +1 +* height: The height of the helix in mm. The total model height will be this height + thickness/2 +1-2 +* steps: This setting will control the granularity of the design, a lower number will result in smoother model but take much longer to render * radius: The radius of the entire toothbrush holder * thickness: The radius of the helix spirals * brushhole: This is the diameter of the hole the toothbrish will sit in * tubethickness: This will be the tube wall thickness of the toothbrush holder +* floorthickness: The thickness from the bottom of the model to floor of brush tube +* drainholediam: The diameter of the drain hole at the buttom of each brush tube * brushes: Total number of toothbrushes the holder will have diff --git a/stl/Oral-B/Double Helix Toothbrush Holder 2 Position Oral-B Revision.stl b/stl/Oral-B/Double Helix Toothbrush Holder 2 Position Oral-B Revision.stl new file mode 100644 index 0000000..e2b335d Binary files /dev/null and b/stl/Oral-B/Double Helix Toothbrush Holder 2 Position Oral-B Revision.stl differ diff --git a/stl/Oral-B/Double Helix Toothbrush Holder 3 Position Oral-B Revision.stl b/stl/Oral-B/Double Helix Toothbrush Holder 3 Position Oral-B Revision.stl new file mode 100644 index 0000000..09bfc89 Binary files /dev/null and b/stl/Oral-B/Double Helix Toothbrush Holder 3 Position Oral-B Revision.stl differ diff --git a/stl/Oral-B/Double Helix Toothbrush Holder 4 Position Oral-B Revision.stl b/stl/Oral-B/Double Helix Toothbrush Holder 4 Position Oral-B Revision.stl new file mode 100644 index 0000000..df2e0d4 Binary files /dev/null and b/stl/Oral-B/Double Helix Toothbrush Holder 4 Position Oral-B Revision.stl differ diff --git a/stl/Oral-B/Double Helix Toothbrush Holder 5 Position Oral-B Revision.stl b/stl/Oral-B/Double Helix Toothbrush Holder 5 Position Oral-B Revision.stl new file mode 100644 index 0000000..e62014d Binary files /dev/null and b/stl/Oral-B/Double Helix Toothbrush Holder 5 Position Oral-B Revision.stl differ diff --git a/stl/Standard/Double Helix Toothbrush Holder 2 Position Standard Revision.stl b/stl/Standard/Double Helix Toothbrush Holder 2 Position Standard Revision.stl new file mode 100644 index 0000000..2aed458 Binary files /dev/null and b/stl/Standard/Double Helix Toothbrush Holder 2 Position Standard Revision.stl differ diff --git a/stl/Standard/Double Helix Toothbrush Holder 3 Position Standard Revision.stl b/stl/Standard/Double Helix Toothbrush Holder 3 Position Standard Revision.stl new file mode 100644 index 0000000..3a479db Binary files /dev/null and b/stl/Standard/Double Helix Toothbrush Holder 3 Position Standard Revision.stl differ diff --git a/stl/Standard/Double Helix Toothbrush Holder 4 Position Standard Revision.stl b/stl/Standard/Double Helix Toothbrush Holder 4 Position Standard Revision.stl new file mode 100644 index 0000000..2b7b83d Binary files /dev/null and b/stl/Standard/Double Helix Toothbrush Holder 4 Position Standard Revision.stl differ diff --git a/stl/Standard/Double Helix Toothbrush Holder 5 Position Standard Revision.stl b/stl/Standard/Double Helix Toothbrush Holder 5 Position Standard Revision.stl new file mode 100644 index 0000000..9d93cce Binary files /dev/null and b/stl/Standard/Double Helix Toothbrush Holder 5 Position Standard Revision.stl differ diff --git a/stl/Standard/Double Helix Toothbrush Holder 6 Position Standard Revision.stl b/stl/Standard/Double Helix Toothbrush Holder 6 Position Standard Revision.stl new file mode 100644 index 0000000..d69f30e Binary files /dev/null and b/stl/Standard/Double Helix Toothbrush Holder 6 Position Standard Revision.stl differ