You can not 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
43 lines
1.7 KiB
|
|
// 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); |