/** * Various clamp designs for bike top tube */ use ; TUBE_DIAM = 28.75; TUBE_RAD = TUBE_DIAM/2.0; BUFFER = 3; DEPTH = 20; DEPTH_BUF = DEPTH + BUFFER*2; WALL = 1.5; SLOT = 5; SLOT_OFFSET = 9; SLOT_WALL = 2; LOCK_DIAM = 26.7; LOCK_RAD = LOCK_DIAM / 2.0; LOCK_LEN = 46.23 + 2; STRAP_SLOT = 23; STRAP_DEPTH = 2; LOCK_OFFSET = -(TUBE_RAD + WALL + STRAP_DEPTH-0.5 + LOCK_RAD); OVERALL_DEPTH = LOCK_LEN + WALL + WALL; //OVERALL_DEPTH = DEPTH; OVERALL_DEPTH_BUF = OVERALL_DEPTH + 2*BUFFER; $fn=50; module tube(RAD) { translate([0, 0, -BUFFER]) cylinder(r=RAD, h=OVERALL_DEPTH + 2*BUFFER); } difference() { union() { // Outer shells for lock and tube clips cylinder( h=OVERALL_DEPTH, r=TUBE_RAD + WALL ); translate([0, LOCK_OFFSET, 0]) { cylinder( h=OVERALL_DEPTH, r=LOCK_RAD + WALL ); } // Block with slots for lock arms translate([0, -2.5, 0]) difference() { translate([ -(TUBE_RAD + WALL + SLOT + SLOT_OFFSET + SLOT_WALL), 0, 0 ]) cube([ 2*(TUBE_RAD + WALL + SLOT + SLOT_OFFSET + SLOT_WALL), TUBE_RAD, DEPTH ]); really_mirror([1, 0, 0]) { translate([TUBE_RAD+WALL+SLOT_OFFSET, -SLOT_WALL, -BUFFER]) #cube([ SLOT, TUBE_RAD, DEPTH_BUF ]); translate([TUBE_RAD+WALL+SLOT_OFFSET+0.5, -(WALL+WALL+1), -BUFFER]) rotate([0, 0, 45]) cube([ SLOT, SLOT, DEPTH_BUF ]); } } // Joins the tube and lock cylinders translate([-0.75*TUBE_RAD, -1.5*TUBE_RAD, 0]) cube([ 1.5*TUBE_RAD, TUBE_RAD, OVERALL_DEPTH ]); } // Top tube cutout #tube(TUBE_RAD); translate([0, TUBE_RAD, 0]) tube(TUBE_RAD); // Lock cylinder cutout, with tabs to keep lock in #translate([0, LOCK_OFFSET, 0]) difference() { tube(LOCK_RAD); translate([-2*LOCK_RAD, 0.60*LOCK_RAD, LOCK_LEN]) cube([4*LOCK_RAD, LOCK_RAD, SLOT_WALL+2*BUFFER]); translate([-2*LOCK_RAD, 0.60*LOCK_RAD, -2*BUFFER]) cube([4*LOCK_RAD, LOCK_RAD, SLOT_WALL+2*BUFFER]); } translate([0, LOCK_OFFSET-LOCK_RAD, 0]) tube(LOCK_RAD); // Channel for velcro strap translate([0, 0, DEPTH+3.5]) difference() { cylinder(r=STRAP_DEPTH + WALL + TUBE_RAD + 0.01, h=STRAP_SLOT); translate([0, 0, -BUFFER]) cylinder(r=WALL + TUBE_RAD + 0.01, h=STRAP_SLOT + 2*BUFFER); } } // difference