MacKenzie Bates

23 Jan 2014

Name_View

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:

img_3758-4

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.

Top_View

The Inner working of the lock

Example Variations:

Name_View_f2

Name_View_f3

GitHub Link

Thingiverse Link

Sketches:

WP_20140123_001 WP_20140123_002 WP_20140123_003

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();