From: Jan "Yenya" Kasprzak <kas@fi.muni.cz>
Date: Fri, 25 Oct 2013 06:08:48 +0000 (+0200)
Subject: rearlight.scad: yet another attempt
X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=50561953475ca2d49d6f327c3334ef3f19f60d8f;p=bike-lights.git

rearlight.scad: yet another attempt
---

diff --git a/parts/rearlight.scad b/parts/rearlight.scad
index 00a3cf6..938c381 100644
--- a/parts/rearlight.scad
+++ b/parts/rearlight.scad
@@ -10,17 +10,19 @@ heatsink_width = 18-3.4;
 heatsink_length = 58;
 
 module fraen_lens_pin() {
-	cylinder(r1=2, r2=6.15/2, h=23);
+	cylinder(r=4/2, h=23, $fn=32);
 	translate([epsilon, 0, -5])
 		cylinder(r=3.4/2, h=5+epsilon);
 };
 
 module fraen_lens() {
-	cylinder(r1=6, r2=30.51/2, h=23);
-	translate([9, 9, 0])   fraen_lens_pin();
-	translate([9, -9, 0])  fraen_lens_pin();
-	translate([-9, 9, 0])  fraen_lens_pin();
-	translate([-9, -9, 0]) fraen_lens_pin();
+	cylinder(r1=6, r2=30.9/2, h=23);
+	assign(off=10.35) {
+	translate([off, off, 0])   fraen_lens_pin();
+	translate([off, -off, 0])  fraen_lens_pin();
+	translate([-off, off, 0])  fraen_lens_pin();
+	translate([-off, -off, 0]) fraen_lens_pin();
+	};
 };
 
 module heatsink() {
@@ -162,11 +164,13 @@ module seat_clip() {
 		translate([0, clip_bolt1_x, 0])
 			rotate([0, 90, 0])
 			translate([0, 0, -clip_wall-clip_space/2-epsilon])
-			cylinder(r=1.5, h=2*clip_wall+clip_space+2*epsilon);
+			cylinder(r=2, h=2*clip_wall+clip_space+2*epsilon,
+				$fn = 6);
 		translate([0, clip_bolt2_x, 0])
 			rotate([0, 90, 0])
 			translate([0, 0, -clip_wall-clip_space/2-epsilon])
-			cylinder(r=1.5, h=2*clip_wall+clip_space+2*epsilon);
+			cylinder(r=2, h=2*clip_wall+clip_space+2*epsilon,
+				$fn=6);
 	};
 
 	translate([-clip_space, clip_bolt1_x, 0])
@@ -188,6 +192,7 @@ module seat_clip() {
 	clip_top();
 };
 
+/*
 seat_clip();
 
 difference() {
@@ -216,15 +221,144 @@ difference() {
 			heatsink();
 		};
 };
+*/
 
-/*
-if (debug == 1) {
+wall_thickness = 1.5;
+fraen_diam = 30.75;
+fraen_h = 29.8;
+pin_diam = 4;
+pin_offset = 10.35*1.4142;
+pin_len = 9.2;
+front_add = 4;
+
+side_barrier_x_offset = 13;
+side_barrier_pin_z_offset = 4.2;
+side_barrier_thickness = 2;
+
+module round_part() {
 	difference() {
-		main($fn=64);
-		//translate([0, -100, 0]) cube([200, 200, 200], center=true);
-		rotate([0, 0, 40])translate([0, -100, 0]) cube([200, 200, 200], center=true);
+		cylinder(r = fraen_diam/2 + pin_diam/2 + wall_thickness,
+			h = front_add + pin_len + wall_thickness);
+		translate([0, 0, -epsilon])
+			cylinder(r = fraen_diam/2,
+			h = pin_len + wall_thickness + front_add + 2*epsilon);
+		// front cone
+		translate([0, 0, pin_len + 1.5*wall_thickness - epsilon])
+			cylinder(r1 = fraen_diam/2,
+				r2 = (fraen_diam+pin_diam + wall_thickness)/2,
+				h = front_add + 2*epsilon);
+		// pin holes
+		for (angle = [0, 90, 180, 270]) {
+			rotate([0, 0, angle+45])
+				translate([pin_offset, 0, wall_thickness-epsilon])
+					cylinder(r=pin_diam/2,
+						h=pin_len+epsilon, $fn=32);
+		};
 	};
-} else {
-	main($fn=128);
+
+	// side barriers
+	for (angle = [0, 90, 180]) // omit the bottom one
+		rotate([0, 0, angle])
+			intersection() {
+				cylinder(r=fraen_diam/2+epsilon, h=infty);
+				translate([-infty/2, side_barrier_x_offset,
+					wall_thickness + pin_len - side_barrier_pin_z_offset - side_barrier_thickness ])
+					cube([infty, infty, side_barrier_thickness]);
+		};
+};
+
+module square_cone() {
+	difference() {
+		hull() {
+			translate([0, 0, fraen_h - pin_len - wall_thickness])
+				cylinder(r = fraen_diam/2 + pin_diam/2 + wall_thickness,
+					h = epsilon);
+			for (angle = [0, 90, 180, 270])
+				rotate([0, 0, angle])
+					translate([9, 9, 0])
+						cylinder(r=wall_thickness+3.5/2, h = epsilon);
+		}
+		hull() {
+			translate([0, 0, fraen_h - pin_len - wall_thickness+epsilon])
+				cylinder(r = fraen_diam/2,
+					h = epsilon);
+			for (angle = [0, 90, 180, 270])
+				rotate([0, 0, angle])
+					translate([9, 9, -epsilon])
+						cylinder(r=3.5/2, h = epsilon);
+		}
+	}
 }
-*/
+
+rear_spring_w = 4;
+
+module rear_spring() {
+	translate([0, 0, wall_thickness/2])
+		cube([18+2*wall_thickness+3.5, rear_spring_w, wall_thickness], center=true);
+	difference() {
+		rotate([90, 0, 0])
+			translate([0, 0, -rear_spring_w/2])
+			cylinder(r=6-heatsink_thickness, h = rear_spring_w);
+		translate([0, 0, -infty/2+epsilon])
+			cube(infty, center=true);
+	};
+};
+
+module heatsink_holder() {
+	for (angle = [0, 180]) {
+		rotate([0, 0, angle])
+			translate([9+wall_thickness, 0, 6/2])
+			cube([3.5/2+wall_thickness, 2*9-3.5-0.5, 6], center=true);
+	}
+}
+
+module lens_holder() {
+	difference() {
+		union() {
+			translate([0, 0, fraen_h - pin_len - wall_thickness])
+				round_part();
+			square_cone();
+		};
+		
+		// 0.5mm hole in the bottom
+		// translate([side_barrier_x_offset-epsilon, -0.25, -epsilon])
+		translate([0, -0.25, (fraen_h - pin_len - wall_thickness)/2])
+			cube([infty, 0.5, infty]);
+
+		// cable hole, 2*3mm
+		translate([9, 0, 6+3])
+			rotate([0, 0, 60])
+				cube([infty, 2, 3]);
+	};
+		
+	rear_spring();
+	heatsink_holder();
+};
+
+lens_holder($fn = 128);
+
+translate([20, 40, 0])
+	rotate([90, 0, -90])
+		seat_clip(, $fn=128);
+
+hull() {
+	translate([0, 9+3.5/2+epsilon, wall_thickness/2])
+		cube([2*9+3.5, epsilon, wall_thickness], center=true);
+	translate([20-clip_wall/2, 40-clip_space/2-clip_wall+epsilon, wall_thickness/2])
+		cube([clip_h1+clip_wall, epsilon/2, wall_thickness], center=true);
+};
+
+translate([7.5, 13.3, 0])
+	cube([wall_thickness, 23, fraen_h - pin_len - wall_thickness]);
+
+	// vnitrni prumer kruhu by mel byt 30.75mm
+	// vnejsi prumer aspon 35 mm
+	// pin od stredu 10.35mm na x a y
+	// prumer pinu 4 mm
+	// pin ma od cela do zabrany 4.2mm, celkove by mel mit 9.2mm
+
+	// piny by mely pokracovat jeste tak 4mm pod nulu,
+	// a pak uz muze jit konv.obal do ctverce
+	// vnitrni rozmery ctverce 21.5x21.5, zakulacene rohy prumer 3.5
+	// vrch chladice (s LEDkou) -18.5
+	// konec nozicek -24.5