use ; //a1, a2, a3, a4 are the four angles of the pairs of hinges on the ear from bottom to tip module dogearAllOptions(a1, a2, a3, a4){ translate([25,0,0]){ union(){ linear_extrude(height = 6, center = false, convexity = 10){ polygon(points = [[-33,0],[-25,0],[-25,7]]); } hinge(a1, len_before = 25, len_after = 5.5); translate([12.5,0,0]) hinge(a2, len_after = 5.5); translate([25,0,0]) hinge(a3, len_after = 5.5); translate([0,37,0]) hinge(a1, len_before = 8, len_after = 5.5); translate([12.5,37,0]) hinge(a2, len_after = 5.5); translate([25,37,0]) hinge(a3, len_after = 8); translate([34,0,0]){ cube([7,18.5,6]); translate([3.5,18.5,0]) cylinder(h = 6, r = 3.5, center = false, $fn=32); } translate([40,40.5,0]) cylinder(h = 6, r = 3.5, center = false, $fn=32); translate([53,0,0]) cube([24,7,6], center = false); translate([40,11,0]){ rotate(-45,[0,0,1]){ hinge(a4, len_before = 7, len_after = 7); translate([14.1,3.5,0]){ cylinder(h = 6, r = 3.5, center = false, $fn=32); } translate([0,17.3,0]) hinge(a4, len_before = 21, len_after = 24.6); translate([31.4,20.8,0]) cylinder(h = 6, r = 3.5, center = false, $fn=32); } } } } } module dogear(flopness){ a1 = 30; a2 = 30; a3 = 30; a4 = 45; if(flopness == "vvvflop"){ a1 = 45; a2 = 45; a3 = 45; dogearAllOptions(a1, a2, a3, a4); } else{ if(flopness == "vvflop"){ a1 = 40; a2 = 40; a3 = 40; dogearAllOptions(a1, a2, a3, a4); } else{ if(flopness == "vflop"){ a1 = 35; a2 = 35; a3 = 35; dogearAllOptions(a1, a2, a3, a4); } else{ if(flopness == "lflop"){ a1 = 15; a2 = 15; a3 = 15; a4 = 30; dogearAllOptions(a1, a2, a3, a4); } else{ dogearAllOptions(a1, a2, a3, a4); } } } } }