From: Jan "Yenya" Kasprzak 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/?p=bike-lights.git;a=commitdiff_plain;h=50561953475ca2d49d6f327c3334ef3f19f60d8f 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