You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.7 KiB
OpenSCAD

// Arc Module for OpenSCAD by chickenchuck040 is licensed under the Creative Commons - Attribution license.
// https://www.thingiverse.com/thing:1092611/#files
module arc(radius, thick, angle){
intersection(){
union(){
rights = floor(angle/90);
remain = angle-rights*90;
if(angle > 90){
for(i = [0:rights-1]){
rotate(i*90-(rights-1)*90/2){
polygon([[0, 0], [radius+thick, (radius+thick)*tan(90/2)], [radius+thick, -(radius+thick)*tan(90/2)]]);
}
}
rotate(-(rights)*90/2)
polygon([[0, 0], [radius+thick, 0], [radius+thick, -(radius+thick)*tan(remain/2)]]);
rotate((rights)*90/2)
polygon([[0, 0], [radius+thick, (radius+thick)*tan(remain/2)], [radius+thick, 0]]);
}else{
polygon([[0, 0], [radius+thick, (radius+thick)*tan(angle/2)], [radius+thick, -(radius+thick)*tan(angle/2)]]);
}
}
difference(){
circle(radius+thick);
circle(radius);
}
}
}
module holder(rad) {
union() {
rotate(-45) arc(rad, 3, 240);
difference() {
polygon(points=[[0,-(rad+3)],[(rad+3+5),-(rad+3)],[rad+3+5,rad+3+15],[rad+3,rad+3+15] ]);
circle(rad);
}
}
}
linear_extrude(height=20)
holder(23/2);