chiark / gitweb /
brompton-computer-guard: break out ArchCircle, nfc
[reprap-play.git] / brompton-computer-guard.scad
index 114c5e3f064113e453537869d1d7b11c85f0c3d1..6a484ee1c360529c7cbb59bdde46b7e0e6fe0862 100644 (file)
@@ -1,2 +1,68 @@
 // -*- C -*-
 
+arch_height = 24;
+arch_width = 75;
+end_width = 25;
+
+arch_thick = 5;
+
+arch_breadth = 25;
+
+hole_dia = 3 + 0.5;
+
+// computed
+
+arch_alpha = atan(arch_height / (arch_width/2));
+arch_beta = 2*arch_alpha;
+echo(arch_alpha,arch_beta);
+arch_in_rad = arch_width/2 / sin(arch_beta);
+arch_to_chord = arch_in_rad * cos(arch_beta);
+
+end_thick = arch_thick;
+
+holes = [[[  5  , 5  ], [16  , 21]], // left
+        [[ 18.5, 4.5], [ 4.5, 22]]]; // right
+
+module ArchCircle(rad){
+  translate([0,-arch_to_chord])
+    circle(rad, $fa=0.1);
+}
+
+module ArchProfile(){
+  intersection(){
+    translate([-200,0])
+      square([400,200]);
+    union(){
+      difference(){
+       ArchCircle(arch_in_rad + arch_thick);
+       ArchCircle(arch_in_rad);
+      }
+      for (m=[0,1])
+       mirror([m,0])
+         translate([arch_width/2,0])
+         square([end_width, end_thick]);
+    }
+  }
+}
+
+module Holes(){
+  for (m=[0,1]) {
+    mirror([1-m,0])
+      translate([arch_width/2, 50, 0])
+      rotate([90,0,0])
+      for (h=holes[m]) {
+       translate(h)
+         cylinder(r=hole_dia/2, h=100, $fn=20);
+      }
+  }
+}
+
+module Arch(){
+  difference(){
+    rotate([0,0,180])
+      linear_extrude(height=arch_breadth) ArchProfile();
+    Holes();
+  }
+}
+
+Arch();