$fn=30; Delta=0.001; Open=80; module clip(D=6, H=5, Dicke=2) { difference() { union() { cylinder(d=D+2*Dicke, h=H); } translate([Dicke/2,0,-Delta]) cylinder(d=D, h=H+2*Delta); translate([0,0,-Delta]) for(j=[-Open/2:360/$fn:+Open/2]) rotate([0,0,j]) hull() { rotate([0,0,+360/$fn/2]) cube([60,0.001,H+2*Delta]); rotate([0,0,-360/$fn/2]) cube([60,0.001,H+2*Delta]); } } } rotate([0,-90,0]) union() { Dicke=1.5; translate(v = [5+3+Dicke/2,-6.5,0]) clip(D=5.6, Dicke=Dicke, H=25); translate(v = [5+4+Dicke/2,+6.5,0]) clip(D=7.8, Dicke=Dicke, H=25); translate([0,-8,0]) cube([5, 16, 25]); translate([-2,-10,-10]) difference() { cube([3, 20, 45]); translate([0,10,40]) rotate([0,90,0]) cylinder(d=4, h=3.1); translate([0,10,5]) rotate([0,90,0]) cylinder(d=4, h=3.1); } }