include include t=10; d = 140; h = 200; cut_h = 60; cut_h_in = 50; cut_d = 2.9; conn = 0; tr = 4; // trytytka szer tr_d = 1; $fn = 360; $slop = 0.5; difference() { torus(d_maj=d, d_min=t); back(d + conn/2)cuboid([2*d,2*d,2*d]); // left(d/2) union() { // up(conn/2) cuboid([t*2,conn,conn]); // xrot(90) tube(h=tr, id=t-tr_d, wall=t, rounding=0.3); // } // right(d/2) union() { // down(conn/2) cuboid([t*2,conn,conn]); // xrot(90) tube(h=tr, id=t-tr_d, wall=t, rounding=0.3); // } left(d/2) xrot(-90) rabbit_clip("female", t/2,t/2,0.5, 0.4,t/4 + $slop, lock=true); } right(d/2) xrot(-90) rabbit_clip("male", t/2,t/2,0.5, 0.4,t/4, lock=true); for(i = [0:1] ) { zrot(90*i + 45) left(d/2) union() { difference() { cyl(h=h, d=t, anchor=BOTTOM); for(i = [cut_h:cut_h:h]) { up(i) union() { cyl(h=1, d=t*2); cyl(h=cut_h_in, d=cut_d); cyl(h=cut_d, d1=cut_d*2, d2=cut_d, anchor=BOTTOM); cyl(h=cut_d, d2=cut_d*2, d1=cut_d, anchor=TOP); } } } up(h) cyl(h=t*2, d1=t, d2=0, anchor=BOTTOM); } }