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