chiark / gitweb /
crossbar-computer-led-mount: Tower and Lid wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Jun 2013 00:59:49 +0000 (01:59 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 9 Jun 2013 00:59:49 +0000 (01:59 +0100)
crossbar-computer-led-mount.scad

index 533519e..ab33705 100644 (file)
@@ -14,12 +14,23 @@ tower_frontheight = 20;
 tower_width = 18;
 tower_slot_width = 3;
 
+cableclamp_ctie_width = 3 + 0.5;
+cableclamp_ctie_thick = 2 + 0.5;
+
+lidclamp_ctie_width = 3 + 0.5;
+lidclamp_ctie_thick = 2 + 0.5;
+
+base_ctie_width = 4 + 0.5;
+base_ctie_thick = 2 + 0.5;
+
 // tuning
 
 tower_over_angle = 45;
 tower_wall_thick = 1.6;
 tower_base_height = 10;
 tower_forehead_angle = 30;
+lid_wall_thick = 1.6;
+lid_slop = 0.75;
 
 //--- tests ---
 
@@ -122,11 +133,21 @@ module TowerMain(){
   for (mir=[0,1])
     mirror([mir,0,0]) rotate([90,0,-90]) {
       translate([0,0, tower_width/2-tower_wall_thick])
-       linear_extrude(height=tower_wall_thick)
+       linear_extrude(height=tower_wall_thick) {
        TowerWallCrossSection();
+      }
       translate([0,0,-1])
        linear_extrude(height=tower_width/2+0.9)
-       TowerBulkCrossSection();
+       union(){
+         TowerBulkCrossSection();
+         hull(){
+           intersection(){
+             TowerWallCrossSection();
+             translate([-30, -30])
+               square([30 + 0.1, 30 + tower_frontheight]);
+           }
+         }
+        }
       translate([0,0, tower_slot_width/2])
        linear_extrude(height=(tower_width - tower_slot_width)/2 - 0.2)
        TowerRearWallCrossSection();
@@ -140,14 +161,65 @@ module LedHole(){
     cylinder(r=led_dia/2, h=led_depth+0.1+10, $fn=30);
 }
 
-module Tower(){
+module Tower(){ ////toplevel
   difference(){
     TowerMain();
     LedHole();
+    // passages for cable ties
+    translate([0,
+              tower_rearwall_y/2,
+              tower_frontheight/2
+              + cableclamp_ctie_width/2 + lidclamp_ctie_thick/2])
+      cube([50, lidclamp_ctie_width, lidclamp_ctie_thick], center=true);
+    translate([0,
+               (backfront_mate_extra+tower_rearwall_y)/2,
+               -tower_base_height/2])
+      cube([50, base_ctie_width, base_ctie_thick], center=true);
+    for (mir=[0,1])
+      mirror([mir,0,0]) {
+       translate([tower_width/4, 20, tower_frontheight/2])
+         cube([cableclamp_ctie_thick,
+               tower_wall_thick*2+1+40,
+               cableclamp_ctie_width],
+              center=true);
+      }
   }
 }
 
+module TowerMainHull(){
+  hull(){ TowerMain(); }
+}
+
+module Lid(){
+  intersection(){
+    difference(){
+      minkowski(){
+       TowerMainHull();
+       sphere(r=lid_wall_thick+lid_slop, $fn=4);
+      }
+      minkowski(){
+       TowerMainHull();
+       sphere(r=lid_slop, $fn=4);
+      }
+    }
+    translate([-50,-50,led_head_z]) cube([100,100,100]);
+  }
+}
+
+module LidT(){ ////toplevel
+  rotate([180,0,0]) Lid();
+}
+
+module Demo(){
+  Tower();
+  translate([0,0, 25]) Lid();
+}
+
 //TowerCrossSectionDemo();
 //TowerWallSomeEdge(false);
 //TowerWallFrontEdge();
-Tower();
+//TowerMainHull();
+//LidT();
+//Tower();
+//Lid();
+Demo();