chiark / gitweb /
crossbar-computer-led-mount: adjust tower wall cross section
[reprap-play.git] / crossbar-computer-led-mount.scad
index 302d517008816aa5b404e7f3fa5362dbf6c873ca..45f1f2db7c110776b68f67a68024326231ab24d2 100644 (file)
@@ -1,7 +1,7 @@
 // -*- C -*-
 
 led_dia = 5 + 0.6;
-led_depth = 3.5;
+led_depth = 5;
 
 led_tip_z = 70;
 led_angle = -60;
@@ -9,13 +9,15 @@ led_angle = -60;
 vert_space_inside = 8;
 backfront_space_inside = 12;
 
-backfront_mate_size = 20;
+backfront_mate_size = 25;
+tower_frontheight = 20;
 
 // tuning
 
 tower_over_angle = 45;
 tower_wall_thick = 1.6;
-tower_base_height = 5;
+tower_base_height = 10;
+tower_forehead_angle = 30;
 
 //--- tests ---
 
@@ -43,15 +45,14 @@ module Tests(){ ////toplevel
 
 //--- real thing ---
 
-tower_frontheight = 30; //fixme
-tower_overhang = led_dia * 4;
+tower_overhang = led_dia * 2.5;
 
 tower_over_max_y = tower_overhang * sin(tower_over_angle);
 tower_over_max_z = tower_frontheight + tower_overhang * cos(tower_over_angle);
 tower_total_max_z = tower_over_max_z + vert_space_inside + led_depth;
 tower_rearwall_y = -(backfront_space_inside + tower_wall_thick);
 
-backfront_mate_extra = (backfront_mate_size - (-tower_rearwall_y))/2;
+backfront_mate_extra = (backfront_mate_size - (-tower_rearwall_y));
 
 module TowerWallCrossSection(){
   // generates a 2D shape - a polygon
@@ -60,11 +61,25 @@ module TowerWallCrossSection(){
   polygon([[0,                  0],
           [0,                  tower_frontheight],
           [-tower_over_max_y,  tower_over_max_z],
-          [-tower_over_max_y,  tower_total_max_z],
+          [-tower_over_max_y
+           + tan(tower_forehead_angle) * (vert_space_inside + led_depth),
+           tower_total_max_z],
           [-tower_rearwall_y,  tower_total_max_z],
           [-tower_rearwall_y,  0],
-          [-tower_rearwall_y+backfront_mate_extra, -tower_base_height],
-          [                 -backfront_mate_extra, -tower_base_height]]);
+          [-tower_rearwall_y, -tower_base_height],
+          [-backfront_mate_extra, -tower_base_height]]);
 }
 
-TowerWallCrossSection();
+module TowerBulkCrossSection(){
+  intersection(){
+    TowerWallCrossSection();
+    union(){
+      translate([-tower_over_max_y/2,
+                tower_frontheight + tower_overhang*sin(tower_over_angle)/2])
+       circle(r = led_depth);
+    }
+  }
+}
+
+%TowerWallCrossSection();
+TowerBulkCrossSection();