Original-Prusa-i3/Printed-Parts/scad/polyholes.scad

43 lines
992 B
OpenSCAD
Executable File

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// See http://hydraraptor.blogspot.com/2011/02/polyholes.html
//
function sides(r) = max(round(4 *r),3);
function correctedRadius(r,n) = 0.1 + r / cos(180 / n);
function correctedDiameter(d) = 0.2 + d / cos(180 / sides(d / 2));
module polyCircle(r, center = false) {
n = sides(r);
circle(r = correctedRadius(r,n), $fn = n, center = center);
}
module poly_circle(r, center = false) {
polyCircle(r, center);
}
module polyCylinder(r, h, center = false) {
n = sides(r);
cylinder(h = h, r = correctedRadius(r,n), $fn = n, center = center);
}
module poly_cylinder(r, h, center = false) {
polyCylinder(r,h,center);
}
module polydCylinder(r, center = false) {
n = sides(r);
r = correctedRadius(r,n);
cylinder(h = h, r = r, $fn = n, center = center);
translate([0, -r, 0])
cube([r, 2 * r, h]);
}
module poly_d_cylinder(r, center = false) {
polydCylinder(r,center);
}