75 lines
4.4 KiB
OpenSCAD
75 lines
4.4 KiB
OpenSCAD
/* --------------------------------------------------------------------------------------- *
|
|
* 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]);
|
|
} |