+
+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