10 backfront_space_inside = 12;
12 backfront_mate_size = 25;
13 tower_frontheight = 20;
19 tower_over_angle = 45;
20 tower_wall_thick = 1.6;
21 tower_base_height = 10;
22 tower_forehead_angle = 30;
29 test_thicks = [9,14,21];
31 module Tests(){ ////toplevel
32 for (thicki=[0:len(test_thicks)-1]) {
33 translate([thicki*test_width-0.5, 0, 0]) {
36 test_thicks[thicki] + led_depth,
38 translate([test_width/2, -1, test_height/2])
40 cylinder(r=led_dia/2, h=led_depth+1, $fn=30);
50 tower_overhang = led_dia * 2.5;
52 tower_over_max_y = tower_overhang * sin(tower_over_angle);
53 tower_over_max_z = tower_frontheight + tower_overhang * cos(tower_over_angle);
54 tower_total_max_z = tower_over_max_z + vert_space_inside + led_depth;
55 tower_rearwall_y = -(backfront_space_inside + tower_wall_thick);
56 led_head_y = tower_over_max_y/2;
57 led_head_z = tower_frontheight + tower_overhang*sin(tower_over_angle)/2;
58 backfront_mate_extra = (backfront_mate_size - (-tower_rearwall_y));
60 module TowerWallCrossSection(){
61 // generates a 2D shape - a polygon
62 // x is what is going to be -y
63 // y is what is going to be z
65 [0, tower_frontheight],
66 [-tower_over_max_y, tower_over_max_z],
68 + tan(tower_forehead_angle) * (vert_space_inside + led_depth),
70 [-tower_rearwall_y, tower_total_max_z],
71 [-tower_rearwall_y, 0],
72 [-tower_rearwall_y, -tower_base_height],
73 [-backfront_mate_extra, -tower_base_height]],
77 module TowerWallSomeEdge(front){
80 TowerWallCrossSection();
81 translate([front ? 0.10 : -0.10, 0])
82 TowerWallCrossSection();
84 circle(r=tower_wall_thick, $fn=8);
88 module TowerBulkCrossSection(){
90 TowerWallCrossSection();
92 translate([-led_head_y, led_head_z])
93 circle(r = led_depth);
94 TowerWallSomeEdge(true);
101 module TowerRearWallCrossSection(){
103 TowerWallCrossSection();
106 translate([0,-10]) square([100, 10+led_head_z]);
107 TowerWallSomeEdge(false);
109 TowerBulkCrossSection();
115 module TowerCrossSectionDemo(){
116 %TowerWallCrossSection();
117 //TowerBulkCrossSection();
118 TowerRearWallCrossSection();
123 mirror([mir,0,0]) rotate([90,0,-90]) {
124 translate([0,0, tower_width/2-tower_wall_thick])
125 linear_extrude(height=tower_wall_thick)
126 TowerWallCrossSection();
128 linear_extrude(height=tower_width/2+0.9)
129 TowerBulkCrossSection();
130 translate([0,0, tower_slot_width/2])
131 linear_extrude(height=(tower_width - tower_slot_width)/2 - 0.2)
132 TowerRearWallCrossSection();
137 translate([0, led_head_y, led_head_z])
138 rotate([90 + led_angle])
140 cylinder(r=led_dia/2, h=led_depth+0.1+10, $fn=30);
150 //TowerCrossSectionDemo();
151 //TowerWallSomeEdge(false);
152 //TowerWallFrontEdge();