Tweeter Post:
Customizable locks that would look great attached to your most romantic local bridge this Valentines Day! Locks can’t be reopened so no worries of keys or combos ruining the moment!
Description:
Lock Bridges have been a growing worldwide trend for the last decade. Those in love go to the bridges together with a lock and attach it to the bridge to signify their bond. Typically couples write their information with black sharpies onto the locks. I have seen the lock bridge in Paris and my girlfriend and I have a lock on the Phipps bridge in Pittsburgh.
One sad thing you notice when you walk past one of these lock bridges is that the sharpie has warn off most of the locks. A proud few have engraved locks and avoid these troubles. With Valentines Day approaching and lost for ideas of what parametric object to make. I decided to make a customizable lock, so that anyone with a 3D printer could have a customized lock that would withstand the outdoors better.
Due to my lack of experience with making locks, I made the lock design be unopenable once closed the first time (when you put the lock on the bridge, you can’t open it, which is actually the point of it so it worked out well). I have not gotten to test the lock because I don’t have a 3D printer, but I believe it should be functional and if not, would just require minor tweaking. I didn’t appreciate the pain of constructing a lock until now.
The Inner working of the lock
Example Variations:
Sketches:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | use module body() { scale = 5; fontSize = scale * 3; fontWidth = scale; levelScale = .35; width = .7; union() { difference() { difference() { cube([scale*25,scale*10,scale*20], true); translate([0, 0,scale*0]) cube([scale*23,scale*8,scale*18], true); //cylinder(r = scale*levelScale, h = width*scale); } union() { translate([-3*scale, 0,scale*9]) cylinder(r = scale*2+2, h = scale); //translate([-7*scale, 0,scale*9]) cylinder(r = scale*2+2, h = scale); translate([7*scale, 0,scale*9]) cylinder(r = scale+2, h = scale); } } union() { union() { translate([-6*scale, 5*scale,scale*8]) rotate([90,0,0]) cylinder(r = scale*levelScale, h = 10*scale); translate([0*scale, 5*scale,scale*8]) rotate([90,0,0]) cylinder(r = scale*levelScale, h = 10*scale); } } } translate([scale*.2, scale*-5,scale*7]) rotate([90,0,0]) {write("MacKenzie",t=fontWidth,h=fontSize,center=true, font = "orbitron.dxf");} translate([scale*.2, scale*-5,scale*3]) rotate([90,0,0]) {write("and",t=fontWidth,h=fontSize,center=true, font = "orbitron.dxf");} translate([scale*.2, scale*-5,scale*-1]) rotate([90,0,0]) {write("Abby",t=fontWidth,h=fontSize,center=true, font = "orbitron.dxf");} translate([scale*.2, scale*-5,scale*-6.5]) rotate([90,0,0]) {write("11/26/11",t=fontWidth,h=fontSize,center=true, font = "orbitron.dxf");} } module pin() { scale = 5; n = 18; d = 180/n; ph = 20; iph = .85; translate([scale*2, 0,scale*20]) rotate([0,-90,270]) union() { //translate([scale*0, 0,scale*20]) rotate([0,-90,270]) union() { for (i = [1:n]) { translate([sin(i*d) * 5 * scale, cos(i*d) * 5 * scale, 0]) //translate([sin(i*d) * 5 * scale, cos(i*d) * 7 * scale, 0]) { sphere(scale); } } rotate([0,270,0]) { translate([0,5*scale,0]) { sphere(scale); cylinder(r = scale, h = ph*scale); } translate([0,5*scale,(ph-.5)*scale]) { cube([scale*3,5*scale,3*scale], true); } translate([0,-5*scale,0]) { sphere(scale); cylinder(r = scale, h = (ph*iph)*scale); } translate([0,-5*scale,((ph * iph) -.5)*scale]) { cube([scale*2,4*scale,3*scale], true); } } } } module lever() { scale = 10; levelScale = .35; width = .7; rotate([90,0,0]) translate([scale*-3,scale*4, scale*-.25]) union() { difference() { cylinder(r = scale*levelScale*2, h = width*scale); cylinder(r = scale*levelScale, h = width*scale); } translate([width*scale*1.5,0,width*scale*.5])cube([width*scale*2,width*scale,width*scale], true); } rotate([90,0,0]) translate([scale*0,scale*4, scale*.25]) rotate([0,180,0]) union() { difference() { cylinder(r = scale*levelScale*2, h = width*scale); cylinder(r = scale*levelScale, h = width*scale); } translate([width*scale*1.5,0,width*scale*.5])cube([width*scale*2,width*scale,width*scale], true); } } lever(); pin(); body(); |