mirror of
https://github.com/kennetek/gridfinity-rebuilt-openscad.git
synced 2024-12-22 06:43:25 +00:00
Support Chamfering Magnet Holes
Similar to ljbeal's Pull Request. However, the implementation is completely different. https://github.com/kennetek/gridfinity-rebuilt-openscad/pull/144
This commit is contained in:
parent
f222c262fc
commit
32f91a77ca
2 changed files with 32 additions and 8 deletions
|
@ -117,6 +117,28 @@ module refined_hole() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Create a cone given a radius and an angle.
|
||||||
|
* @param bottom_radius Radius of the bottom of the cone.
|
||||||
|
* @param angle Angle as measured from the bottom of the cone.
|
||||||
|
* @param max_height Optional maximum height. Cone will be cut off if higher.
|
||||||
|
*/
|
||||||
|
module cone(bottom_radius, angle, max_height=0) {
|
||||||
|
assert(bottom_radius > 0);
|
||||||
|
assert(angle > 0 && angle <= 90);
|
||||||
|
assert(max_height >=0);
|
||||||
|
|
||||||
|
height = tan(angle) * bottom_radius;
|
||||||
|
if(max_height == 0 || height < max_height) {
|
||||||
|
// Normal Cone
|
||||||
|
cylinder(h = height, r1 = bottom_radius, r2 = 0, center = false);
|
||||||
|
} else {
|
||||||
|
top_angle = 90 - angle;
|
||||||
|
top_radius = bottom_radius - tan(top_angle) * max_height;
|
||||||
|
cylinder(h = max_height, r1 = bottom_radius, r2 = top_radius, center = false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @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".
|
||||||
|
@ -148,7 +170,6 @@ module block_base_hole(hole_options, o=0) {
|
||||||
if(refined_hole) {
|
if(refined_hole) {
|
||||||
assert(!magnet_hole, "magnet_hole is not compatible with refined_hole");
|
assert(!magnet_hole, "magnet_hole is not compatible with refined_hole");
|
||||||
}
|
}
|
||||||
assert(chamfer == false, "chamfer is not supported yet");
|
|
||||||
|
|
||||||
screw_radius = SCREW_HOLE_RADIUS - (o/2);
|
screw_radius = SCREW_HOLE_RADIUS - (o/2);
|
||||||
magnet_radius = MAGNET_HOLE_RADIUS - (o/2);
|
magnet_radius = MAGNET_HOLE_RADIUS - (o/2);
|
||||||
|
@ -176,7 +197,7 @@ module block_base_hole(hole_options, o=0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(chamfer) {
|
if(chamfer) {
|
||||||
// Not Implemented Yet
|
cone(magnet_radius + MAGNET_HOLE_CHAMFER_ADDITIONAL_RADIUS, MAGNET_HOLE_CHAMFER_ANGLE, magnet_depth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,10 +210,10 @@ module block_base_hole(hole_options, o=0) {
|
||||||
//$fa = 8;
|
//$fa = 8;
|
||||||
//$fs = 0.25;
|
//$fs = 0.25;
|
||||||
//block_base_hole(bundle_hole_options(
|
//block_base_hole(bundle_hole_options(
|
||||||
// refined_hole=true,
|
// refined_hole=false,
|
||||||
// magnet_hole=false,
|
// magnet_hole=true,
|
||||||
// screw_hole=false,
|
// screw_hole=true,
|
||||||
// supportless=false,
|
// supportless=true,
|
||||||
// crush_ribs=false,
|
// crush_ribs=true,
|
||||||
// chamfer=false
|
// chamfer=true
|
||||||
//));
|
//));
|
||||||
|
|
|
@ -50,6 +50,9 @@ 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;
|
||||||
|
MAGNET_HOLE_CHAMFER_ANGLE = 45;
|
||||||
|
|
||||||
// ****************************************
|
// ****************************************
|
||||||
|
|
||||||
// top edge fillet radius
|
// top edge fillet radius
|
||||||
|
|
Loading…
Reference in a new issue