pw = 80; // print width dw = pw * (1 / 450); // width of one degree cr = (pw / 9); // radius of circle / DNA fl = 2; // degree of flattening chw = 3; // width of sugar chain xw = 0.4; // extrusion width clh = 1.5; // clip height union(){ cylinder(h=2+clh+2*(cr+3)/fl,r=3-xw/2); scale([2,2,1]){ difference(){ translate([0,0,clh/2]) cube([pw/2,cr,clh], center = true); translate([-pw/7,-cr*0.3,clh/2]) cube([pw/6,1+xw/2,clh*1.1], center = true); translate([-pw/7,+cr*0.3,clh/2]) cube([pw/6,1+xw/2,clh*1.1], center = true); translate([-pw/7-pw/12,0,clh/2]) cube([1+xw/2,cr*0.3*2,clh*1.1], center = true); translate([pw/7,-cr*0.3,clh/2]) cube([pw/6,1+xw/2,clh*1.1], center = true); translate([pw/7,+cr*0.3,clh/2]) cube([pw/6,1+xw/2,clh*1.1], center = true); translate([pw/7+pw/12,0,clh/2]) cube([1+xw/2,cr*0.3*2,clh*1.1], center = true); } translate([-pw*0.18,0,clh-0.1]) cylinder(h=clh+0.1,r1=cr/5,r2=cr/7); translate([pw*0.18,0,clh-0.1]) cylinder(h=clh+0.1,r1=cr/5,r2=cr/7); } }