COSI CAD objects
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.
 

58 lines
1.5 KiB

module pie_slice(radius, angle, step) {
for(theta = [0:step:angle-step]) {
rotate([0,0,0]) linear_extrude(height = radius2, center=true)
polygon( points = [[0,0],
[radius*cos(theta+step),radius*sin(theta+step)],
[radius*cos(theta),radius*sin(theta)]]);
}}
module partial_rotate_extrude(angle, radius, convex) {
intersection () {
rotate_extrude(convexity=convex) translate([radius,0,0]) child(0);
pie_slice(radius*2, angle, angle/5);
}}
module pie_slice(radius, angle, step) {
for(theta = [0:step:angle-step]) {
rotate([0,0,0]) linear_extrude(height = radius2, center=true)
polygon( points = [[0,0],[radius*cos(theta+step) ,radius*sin(theta+step)],[radius*cos(theta),radius*sin(theta)]]);
}}
module partial_rotate_extrude(angle, radius, convex) {
intersection () {
rotate_extrude(convexity=convex) translate([radius,0,0]) child(0);
pie_slice(radius*2, angle, angle/10);
}}
larger_radius=8;
larger_height=3;
smaller_radius=5;
smaller_height=9;
hole_radius=3.5;
fins=3;
fin_length=9;
module fin(rz, fl, rh, lr) {
rotate([0, 0, rz]) partial_rotate_extrude(52, lr, 100) square(size=[fl, rh]);
}
rotate([0,0,52.5])difference()
{
cylinder(r=smaller_radius, h=smaller_height, $fn=72);
difference()
{
cylinder(r=hole_radius, h=smaller_height, $fn=72);
linear_extrude(height = smaller_height) translate([0,2.4,0]) polygon([[3.5,0],[2,2.5],[-2,2.5],[-3.5,0]]);
}
}
translate([0,0,smaller_height]) {
cylinder(r=larger_radius, h=larger_height, $fn=72);
for(i = [0 : 360 / fins : 360 - (360 / fins)]) {
fin(i, fin_length, larger_height, larger_radius);
}
}