44 lines
1.2 KiB
OpenSCAD
44 lines
1.2 KiB
OpenSCAD
/*
|
|
* Copyright (c) Camden Dixie O'Brien
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
module shaft (length, radius, taper_length)
|
|
{
|
|
translate([-length / 2, 0, 0]) rotate([0, 90, 0]) {
|
|
non_tapered_length = length - taper_length;
|
|
cylinder(non_tapered_length, r = radius);
|
|
translate([0, 0, non_tapered_length])
|
|
cylinder(taper_length, radius, 0);
|
|
}
|
|
}
|
|
|
|
module panel (length, height, thickness, wedge_length)
|
|
{
|
|
rotate([90, 0, 0])
|
|
translate([0, 0, -thickness / 2])
|
|
scale([-1, 1, 1])
|
|
linear_extrude(thickness)
|
|
polygon([[0, 0], [wedge_length, height], [length, height], [length, 0]]);
|
|
}
|
|
|
|
module vane (length, shaft_radius, shaft_taper_length, panel_height,
|
|
panel_thickness, panel_wedge_length, hub_height, hub_outer_radius,
|
|
hub_inner_radius)
|
|
{
|
|
union () {
|
|
difference () {
|
|
union () {
|
|
shaft (length, shaft_radius, shaft_taper_length);
|
|
cylinder(hub_height, r = hub_outer_radius, center = true);
|
|
}
|
|
cylinder(hub_height + 1, r = hub_inner_radius, center = true);
|
|
}
|
|
panel_length = length / 2 - hub_outer_radius;
|
|
translate ([-hub_outer_radius, 0, 0])
|
|
panel (panel_length, panel_height, panel_thickness, panel_wedge_length);
|
|
}
|
|
}
|
|
|
|
vane (260, 6, 24, 80, 3, 40, 14, 12, 6);
|