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
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); |