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.
30 lines
631 B
OpenSCAD
30 lines
631 B
OpenSCAD
1 year ago
|
radius = 20;
|
||
|
angles = [0, 90];
|
||
|
width = 5;
|
||
|
fn = 24;
|
||
|
|
||
|
module sector(radius, angles, fn = 24) {
|
||
|
r = radius / cos(180 / fn);
|
||
|
step = -360 / fn;
|
||
|
|
||
|
points = concat([[0, 0]],
|
||
|
[for(a = [angles[0] : step : angles[1] - 360])
|
||
|
[r * cos(a), r * sin(a)]
|
||
|
],
|
||
|
[[r * cos(angles[1]), r * sin(angles[1])]]
|
||
|
);
|
||
|
|
||
|
difference() {
|
||
|
circle(radius, $fn = fn);
|
||
|
polygon(points);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module arc(radius, angles, width = 1, fn = 24) {
|
||
|
difference() {
|
||
|
sector(radius + width, angles, fn);
|
||
|
sector(radius, angles, fn);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
linear_extrude(1) arc(radius, angles, width);
|