X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=bike-lights.git;a=blobdiff_plain;f=parts%2Frearlight.scad;fp=parts%2Frearlight.scad;h=ecc53dd8c3698414085b6004d1e973bcd0a0f9ae;hp=2c8e7a97c7605ee51c1a64c2b1bd0bfd854b982a;hb=f4fa8e4d280179849f99cd51686fb12301a9e3b1;hpb=2767677de5d10d1aba770c8d051c431801360fcf diff --git a/parts/rearlight.scad b/parts/rearlight.scad index 2c8e7a9..ecc53dd 100644 --- a/parts/rearlight.scad +++ b/parts/rearlight.scad @@ -13,11 +13,14 @@ pin_offset = 10.35*1.4142; pin_len = 9.2; front_add = 4; +rear_pin_dist = 9.1; +rear_pin_diam = 3.25; + side_barrier_x_offset = 13; side_barrier_pin_z_offset = 4.2; side_barrier_thickness = 2; -heatsink_thickness = 2.5; +heatsink_thickness = 2; clip_h1 = 27; // front height (on the heatsink side) clip_h2 = 20; // rear height (on the lens side) @@ -113,7 +116,7 @@ module round_part() { rotate([0, 0, angle+45]) translate([pin_offset, 0, -epsilon]) cylinder(r=pin_diam/2, - h=epsilon, $fn=32); + h=epsilon); }; } @@ -127,7 +130,7 @@ module round_part() { rotate([0, 0, angle+45]) translate([pin_offset, 0, epsilon]) cylinder(r=pin_diam/2, - h=pin_len+epsilon, $fn=32); + h=pin_len+epsilon); }; }; @@ -150,7 +153,7 @@ module square_cone() { h = epsilon); for (angle = [0, 90, 180, 270]) rotate([0, 0, angle]) - translate([9.1, 9.1, 0]) + translate([rear_pin_dist, rear_pin_dist, 0]) cylinder(r=wall_thickness+3.75/2, h = epsilon); } hull() { @@ -159,36 +162,52 @@ module square_cone() { h = epsilon); for (angle = [0, 90, 180, 270]) { rotate([0, 0, angle]) - translate([9.1, 9.1, -epsilon]) + translate([rear_pin_dist, rear_pin_dist, -epsilon]) cylinder(r=3.75/2, h = epsilon); rotate([0, 0, angle+45]) translate([pin_offset, 0, fraen_h - pin_len + epsilon]) cylinder(r=pin_diam/2, - h=epsilon, $fn=32); + h=epsilon); } } } } -rear_spring_w = 4; +rear_spring_w = 2*rear_pin_dist-rear_pin_diam-0.5; +rear_spring_h = 1; +rear_spring_center_w = 4; +led_zoff = 6; 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); - }; -}; + cube([rear_spring_center_w, rear_spring_w, wall_thickness], + center=true); + translate([0, rear_spring_w/2-wall_thickness/2, + (led_zoff-heatsink_thickness)/2]) + cube([rear_spring_center_w, + wall_thickness, led_zoff-heatsink_thickness], + center=true); + translate([0, -rear_spring_w/2+wall_thickness/2, + (led_zoff-heatsink_thickness)/2]) + cube([rear_spring_center_w, + wall_thickness, led_zoff-heatsink_thickness], + center=true); + + for (angle=[0, 180]) { + rotate([0, 0, angle]) + translate([5.5, 0, rear_spring_h/2]) + rotate([0, 0, 45]) { + cube([wall_thickness, 14, rear_spring_h], + center=true); + } + } +} module heatsink_holder() { for (angle = [0, 180]) { rotate([0, 0, angle]) - translate([9.1+wall_thickness, 0, 6/2]) - cube([3.5/2+wall_thickness, 2*9.1-3.5-0.5, 6], center=true); + translate([rear_pin_dist+wall_thickness, 0, led_zoff/2]) + cube([rear_pin_diam/2+wall_thickness, 2*rear_pin_dist-rear_pin_diam-0.5, led_zoff], center=true); } } @@ -206,49 +225,123 @@ module lens_holder() { cube([infty, 0.5, infty]); // cable hole, 2*3mm - translate([9.1, 0, 6+3]) + translate([rear_pin_dist, 0, 6+3]) rotate([0, 0, 60]) cube([infty, 2, 3]); // side LED hole, 3mm translate([0, 0, fraen_h - pin_len]) rotate([90, 0, 0]) - cylinder(r=3.5/2, h=infty, $fn=6); + cylinder(r=rear_pin_diam/2, h=infty, $fn=6); }; rear_spring(); heatsink_holder(); }; -union() { - lens_holder($fn = 128); - translate([clip_x_off, clip_y_off, 0]) - seat_clip(); -/* -hull() { - translate([0, 9.1+3.5/2+epsilon, wall_thickness/2]) - cube([9.1, epsilon, wall_thickness], center=true); - translate([20-clip_wall/2, 40-clip_space/2-clip_wall+epsilon, wall_thickness/2]) - cube([9.1, epsilon/2, wall_thickness], center=true); -}; +module xy_joint() { + hull() { + intersection() { + lens_holder(); + translate([-infty-0.5*rear_pin_dist, + rear_pin_dist+rear_pin_diam/2+0.35*wall_thickness, + 0]) + cube([infty, infty, clip_wall]); + }; + + translate([clip_x_off, clip_y_off, 0]) + intersection() { + seat_clip(); + translate([-infty+clip_wall+0.20*clip_h1, -infty-clip_space, 0]) + cube([infty, infty, clip_wall]); + }; + }; + hull() { + intersection() { + lens_holder(); + translate([0.5*rear_pin_dist, + rear_pin_dist+rear_pin_diam/2+0.35*wall_thickness, + 0]) + cube([infty, infty, clip_wall]); + }; -hull() { - translate([0, 9.1+3.5/2+epsilon, wall_thickness/2]) - cube([2*.259+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([clip_x_off, clip_y_off, 0]) + intersection() { + seat_clip(); + translate([0.8*clip_h1-clip_wall, -infty-clip_space, 0]) + cube([infty, infty, clip_wall]); + }; + }; }; -translate([7.5, 13.3, 0]) - cube([wall_thickness, 23, fraen_h - pin_len - wall_thickness]); +module yz_joint() { + difference() { + hull() { + translate([clip_x_off, clip_y_off, 0]) + intersection() { + seat_clip(); + translate([-1.5*clip_wall+(fraen_h-pin_len)*tan(clip_angle), -clip_space/2-clip_wall+epsilon, 0]) + cube([clip_wall, epsilon, fraen_h - pin_len]); + }; + translate([clip_x_off - 1.5*clip_wall+(fraen_h-pin_len)*tan(clip_angle), 0, 0]) + + cube([clip_wall, epsilon, (fraen_h - pin_len)]); + }; + hull() { + translate([0, 0, fraen_h - pin_len + epsilon]) + cylinder(r = fraen_diam/2 + pin_diam/2 + wall_thickness/2, + h = epsilon); + for (angle = [0, 90, 180, 270]) + rotate([0, 0, angle]) + translate([rear_pin_dist, rear_pin_dist, -epsilon]) + cylinder(r=wall_thickness/2+3.75/2, h = epsilon); + }; + }; +}; +module full_joint() { + difference() { + hull() { + intersection() { + rotate([-90, 0, 0]) + scale([0.30, 1, 1]) + cylinder(r = fraen_h-pin_len, h = rear_pin_dist + wall_thickness+rear_pin_diam/2); + translate([-infty/2, rear_pin_dist + wall_thickness + rear_pin_diam/2 - epsilon, 0]) + cube(infty); + }; + translate([clip_x_off, clip_y_off, 0]) + intersection() { + seat_clip(); + translate([(fraen_h-pin_len)*tan(clip_angle)-clip_wall, -clip_space/2-clip_wall+epsilon, 0]) + rotate([90, 0, 0]) + scale([0.45, 1, 1]) + cylinder(r = fraen_h-pin_len, h = epsilon); + }; + }; + hull() { + translate([0, 0, fraen_h - pin_len + epsilon]) + cylinder(r = fraen_diam/2 + pin_diam/2 + wall_thickness/2, + h = epsilon); + for (angle = [0, 90, 180, 270]) + rotate([0, 0, angle]) + translate([rear_pin_dist, rear_pin_dist, -epsilon]) + cylinder(r=wall_thickness/2+3.75/2, h = epsilon); + }; } - //translate([-infty/2, -infty/2, 8]) - // cube(infty); -*/ +}; + +module main() { + lens_holder(); + translate([clip_x_off, clip_y_off, 0]) + seat_clip(); + // xy_joint(); + // yz_joint(); + full_joint(); }; +scale([1, -1, 1]) main($fn=128); +// main($fn = 128); // vnitrni prumer kruhu by mel byt 30.75mm // vnejsi prumer aspon 35 mm // pin od stredu 10.35mm na x a y