// allviews yholder-small yholder-large // viewsopts brim10mm include ray=10; lentube=40; lenside=20; module yholder(ray2){ translate([0,0,ray]) rotate([0,90,0]){ difference(){ cylinder(r=ray,h=lentube,$fn=40); translate([0,0,-1]) cylinder(r=ray-3,h=lentube+2,$fn=40); } } translate([lentube+ray2-3,0,0]){ thick=2*ray; difference(){ cylinder(r=ray2,h=thick,$fn=40); translate([0,0,-1]){ cylinder(r=ray2-4,h=thick+2,$fn=40); translate([0,-ray2-1,0]) cube([ray2+1,2*ray2+2,thick+2]); } } translate([0,-ray2,0]) cube([lenside,4,thick]); translate([0,ray2-4,0]) cube([lenside,4,thick]); } translate([-15,-10,0]) cube([25,20,0.5]); l1=lentube+lenside+10; translate([l1,ray2-10,0]) cube([25,20,0.5]); translate([l1,-ray2-10,0]) cube([25,20,0.5]); } module testholder(){ } module main_view(view){ if (view=="yholder-small"){ rotate([0,0,90]) yholder(23); }else if (view=="yholder-large"){ rotate([0,0,90]) yholder(26); } }