chiark / gitweb /
commitid.scad.pl: Introduce autogenerated warning
[reprap-play.git] / brompton-computer-guard.scad
index 050ba970646da1ad080983d4aecaec5bf323b708..efb3a8a129bd7bdfac21ca94a86c19401c152cc3 100644 (file)
@@ -1,16 +1,16 @@
 // -*- C -*-
 
-arch_height = 24;
+arch_height = 18;
 arch_width = 75;
 end_width = 25;
 
-arch_thick = 5;
+arch_thick = 4;
 
 arch_breadth = 25;
 
-hole_dia = 3 + 0.5;
+hole_dia = 4 + 0.5;
 
-pbase_tab = 15;
+pbase_tab = 12;
 pbase_thick = 2;
 
 // computed
@@ -21,10 +21,15 @@ echo(arch_alpha,arch_beta);
 arch_in_rad = arch_width/2 / sin(arch_beta);
 arch_to_chord = arch_in_rad * cos(arch_beta);
 
+inner_pbase_thick = 6;
+echo(inner_pbase_thick);
+
+inner_pbase_rad = arch_in_rad * 2;
+
 end_thick = arch_thick;
 
 holes = [[[  5  , 5  ], [16  , 21]], // left
-        [[ 18.5, 4.5], [ 4.5, 22]]]; // right
+        [[ 18.5, 4.5], [ 4.5, 21]]]; // right
 
 module ArchCircle(rad){
   translate([0,-arch_to_chord])
@@ -41,9 +46,12 @@ module ArchProfile(pbase){
        for (m=[0,1])
          mirror([m,0])
            translate([arch_width/2,0])
+           multmatrix([[1,pbase ? -0.75 : 0,0,0],
+                       [0,1,0,0],
+                       [0,0,1,0],
+                       [0,0,0,1]])
            square([end_width, pbase ? pbase_tab : end_thick]);
       }
-      ArchCircle(arch_in_rad);
     }
   }
 }
@@ -60,14 +68,38 @@ module Holes(){
   }
 }
 
+module MainCutout(){
+  ArchCircle(arch_in_rad);
+}
+
 module Arch(){
   difference(){
-    rotate([0,0,180]) union(){
-      linear_extrude(height=arch_breadth) ArchProfile(false);
-      linear_extrude(height=pbase_thick) ArchProfile(true);
+    rotate([0,0,180]){
+      linear_extrude(height=arch_breadth) {
+       difference(){
+         ArchProfile(false);
+         MainCutout();
+       }
+      }
+      difference(){
+       linear_extrude(height=pbase_thick){
+         difference(){
+           hull(){
+             ArchProfile(true);
+             ArchProfile(false);
+           }
+           intersection(){
+             MainCutout();
+             translate([0, -inner_pbase_thick
+                        - (inner_pbase_rad - arch_in_rad)])
+               ArchCircle(inner_pbase_rad);
+           }
+         }
+       }
+      }
     }
     Holes();
   }
 }
 
-Arch();
+rotate([0,0,45]) Arch();