62 lines
2.5 KiB
OpenSCAD
62 lines
2.5 KiB
OpenSCAD
/*
|
|
Hummingbird feeder flower replacements
|
|
by Alex Matulich
|
|
August 2020
|
|
On Thingiverse: https://www.thingiverse.com/thing:4817308
|
|
|
|
I whipped this up quickly after a couple of the plastic flowers in my hummingbird feeder got too brittle from age, and the petals broke off.
|
|
|
|
The hummingbirds don't seem to care about the number of petals or how they look. They work. The feeder has a mixture of original flowers and my new flowers, and the birds don't seem to have a preference.
|
|
|
|
The flowers fit my feeder a little more loosely than snug, not tight. If printing with PLA, I didn't want to make them too tight because PLA is stiff and brittle.
|
|
*/
|
|
|
|
flower_radius = 14;
|
|
flower_ht = 7;
|
|
neck_dia = 7.0;
|
|
collar_dia = 7.35; // max diameter of flared part of insert
|
|
end_dia = 5.5; // diameter of insert end
|
|
splitwid = 1.5; // width of split
|
|
hole_dia = 3; // diameter of hole for hummingbird beak
|
|
neck_ht=1.2; // height of neck (thickness of feeder plastic)
|
|
end_ht = 5; // height of insert end
|
|
cone_angle = 40; // taper angle of neck
|
|
|
|
// make four petals
|
|
for(petals=[3:6]) translate([1.5*flower_radius*cos(90*petals), 1.5*flower_radius*sin(90*petals), 0]) flower(petals);
|
|
|
|
// modules start here
|
|
|
|
module flower(npetals) {
|
|
ht = flower_ht - neck_dia/2 * tan(cone_angle);
|
|
dz = 0.5*(collar_dia - neck_dia);
|
|
difference() {
|
|
union() {
|
|
allpetals(npetals);
|
|
translate([0,0,ht]) cylinder(1.5,d=neck_dia, $fn=32);
|
|
translate([0,0,ht+neck_ht-dz]) cylinder(dz, d1=neck_dia, d2=collar_dia, $fn=32);
|
|
translate([0,0,ht+neck_ht]) cylinder(end_ht, d1=collar_dia, d2=end_dia, $fn=32);
|
|
}
|
|
cylinder(flower_ht+end_ht+1, d=hole_dia, $fn=24);
|
|
translate([-splitwid/2,-collar_dia/2-1,ht+0.1]) cube([splitwid, collar_dia+2, end_ht+neck_ht+1]);
|
|
}
|
|
}
|
|
|
|
module allpetals(npetals) {
|
|
for(a=[0:npetals-1]) rotate([0,0,a*360/npetals]) petal(npetals);
|
|
}
|
|
|
|
module petal(npetals) {
|
|
r1 = flower_ht/tan(cone_angle);
|
|
aspect = 0.618;
|
|
intersection() {
|
|
translate([flower_radius/2,0,0]) scale([1,aspect,1]) cylinder(flower_ht, d=flower_radius, $fn=48);
|
|
difference() {
|
|
union() {
|
|
translate([0,0,0.0001]) cylinder(flower_ht, r1=r1, r2=0, $fn=npetals<4?18:npetals*4);
|
|
translate([0,-flower_radius/2-1,0]) cube([flower_radius+2,flower_radius+2,0.8]);
|
|
}
|
|
translate([0,0,-1.4]) cylinder(flower_ht, r1=r1, r2=0, $fn=npetals<4?18:npetals*4);
|
|
}
|
|
}
|
|
} |