Split screw_hole into a separate function.

This can be re-used for the baseplate.
This commit is contained in:
Arthur Moore 2024-04-30 01:06:40 -04:00
parent 0e7c298154
commit 787fa30950
2 changed files with 33 additions and 12 deletions

View file

@ -184,6 +184,33 @@ module cone(bottom_radius, angle, max_height=0) {
} }
} }
/**
* @brief Create a screw hole
* @param radius Radius of the hole.
* @param height Height of the hole.
* @param supportless If the hole is designed to be printed without supports.
* @param chamfer_radius If the hole should be chamfered, then how much should be added to radius. 0 means don't chamfer
* @param chamfer_angle If the hole should be chamfered, then what angle should it be chamfered at. Ignored if chamfer_radius is 0.
*/
module screw_hole(radius, height, supportless=false, chamfer_radius=0, chamfer_angle = 45) {
assert(radius > 0);
assert(height > 0);
assert(chamfer_radius >= 0);
union(){
difference() {
cylinder(h = height, r = radius);
if (supportless) {
rotate([0, 0, 90])
make_hole_printable(0.5, radius, height, 3);
}
}
if (chamfer_radius > 0) {
cone(radius + chamfer_radius, chamfer_angle, height);
}
}
}
/** /**
* @brief Create an options list used to configure bin holes. * @brief Create an options list used to configure bin holes.
* @param refined_hole Use gridfinity refined hole type. Not compatible with "magnet_hole". * @param refined_hole Use gridfinity refined hole type. Not compatible with "magnet_hole".
@ -245,18 +272,12 @@ module block_base_hole(hole_options, o=0) {
} }
if(chamfer) { if(chamfer) {
cone(magnet_radius + MAGNET_HOLE_CHAMFER_ADDITIONAL_RADIUS, MAGNET_HOLE_CHAMFER_ANGLE, magnet_depth); cone(magnet_radius + CHAMFER_ADDITIONAL_RADIUS, CHAMFER_ANGLE, magnet_depth);
} }
} }
if(screw_hole) { if(screw_hole) {
difference() { screw_hole(screw_radius, screw_depth, supportless,
cylinder(h = screw_depth, r = screw_radius); chamfer ? CHAMFER_ADDITIONAL_RADIUS : 0, CHAMFER_ANGLE);
if(supportless) {
rotate([0, 0, 90])
make_hole_printable(0.5, screw_radius, screw_depth, 3);
}
}
} }
} }
} }
@ -274,6 +295,6 @@ if(!is_undef(test_options)){
// screw_hole=true, // screw_hole=true,
// supportless=true, // supportless=true,
// crush_ribs=false, // crush_ribs=false,
// chamfer=false // chamfer=true
//)); //));
//make_hole_printable(1, 3, 0); //make_hole_printable(1, 3, 0);

View file

@ -50,8 +50,8 @@ MAGNET_HOLE_CRUSH_RIB_INNER_RADIUS = 5.9 / 2;
// Anything 5 or under produces a hole that is not round. // Anything 5 or under produces a hole that is not round.
MAGNET_HOLE_CRUSH_RIB_COUNT = 8; MAGNET_HOLE_CRUSH_RIB_COUNT = 8;
MAGNET_HOLE_CHAMFER_ADDITIONAL_RADIUS = 0.8; CHAMFER_ADDITIONAL_RADIUS = 0.8;
MAGNET_HOLE_CHAMFER_ANGLE = 45; CHAMFER_ANGLE = 45;
// **************************************** // ****************************************