I was experimenting with the scale option for the linear extrude command just for fun and it reminded me of a pinwheel, so I called it pinwheel and added a way to automate it with the customizer.
here is the modified code:
Show_impeller = true;
Diameter=80; //[1:.01:200]
Fins = 6; //[2:1:20]
Twist= 120; //[-360:.01:360]
Scale_x=1; //[.2:.01:20]
Scale_y=1.88; //[.2:.01:20]
Scale_z=.17; //[.1:.01:20]
Rotate_x=0; //[0:.01:360]
Rotate_y=66.15; //[0:.01:360]
Rotate_z=123.39; //[0:.01:360]
Fin_hoop_width=200; //[.1:.01:200]
Fin_blade_width=1; //[1:.01:100]
pinwheel=0;//[-360:.01:360]
Center_hub_size=22.26;//[0:.01:200]
Center_hub_shape=100;//[3:1:100]
Center_hole_size=5;//[0:.01:25]
Scale_center_x=1; //[-.25:.01:20]
Scale_center_y=1; //[-.25:.01:20]
Scale_center_z=1.75; //[-.25:.01:20]
module impeller(){
if(Show_impeller)
for (i=[1:Fins]){
rotate([0,0,(360/Fins)*i])
difference(){
scale([Scale_x,Scale_y,Scale_z])
intersection(){
translate([0,0,-Diameter/2])
linear_extrude(Diameter,twist=Twist,slices=360,scale=pinwheel,convexity = 10)
rotate([Rotate_x,Rotate_y,Rotate_z])
square([Diameter,Fin_blade_width],center=false,$fn=100);
sphere(d=Diameter,$fn=100);
}
scale([Scale_x,Scale_y,Scale_z])
sphere(d=(Diameter-Fin_hoop_width),$fn=100);
cylinder(d=Center_hub_size-12,h=Diameter+2,center=true,$fn=Center_hub_shape);
}
difference(){
scale([Scale_center_x,Scale_center_y,Scale_center_z]){
sphere(d=(Center_hub_size),$fn=Center_hub_shape);
}
cylinder(d=Center_hole_size,h=200,center=true,$fn=100);
}}
}
impeller();
It takes a bit of adjusting to get something that looks good, but if you copy the settings in the pictures it will give you a starting point, then once you have something you like you can save the settings by clicking the plus sign (+) at the top of the customizer pane.
here are some examples: