X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=brompton-computer-guard.scad;h=1c7a536c834fed2241074d02d504650a1d3688fd;hb=a8f373ebdb262d84e4820ec1b5ff43bba7d9cf48;hp=114c5e3f064113e453537869d1d7b11c85f0c3d1;hpb=bd8a33bdbba529800d92c6e3fbab6c0c92ba56f3;p=reprap-play.git diff --git a/brompton-computer-guard.scad b/brompton-computer-guard.scad index 114c5e3..1c7a536 100644 --- a/brompton-computer-guard.scad +++ b/brompton-computer-guard.scad @@ -1,2 +1,85 @@ // -*- C -*- +arch_height = 18; +arch_width = 75; +end_width = 25; + +arch_thick = 4; + +arch_breadth = 25; + +hole_dia = 4 + 0.5; + +pbase_tab = 12; +pbase_thick = 2; + +// 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, 21]]]; // right + +module ArchCircle(rad){ + translate([0,-arch_to_chord]) + circle(rad, $fa=0.1); +} + +module ArchProfile(pbase){ + intersection(){ + translate([-200,0]) + square([400,200]); + difference(){ + union(){ + ArchCircle(arch_in_rad + arch_thick); + 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]); + } + } + } +} + +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]){ + difference(){ + union(){ + linear_extrude(height=arch_breadth) ArchProfile(false); + linear_extrude(height=pbase_thick) hull(){ + ArchProfile(true); + ArchProfile(false); + } + } + translate([0,0,-1]) linear_extrude(height=100) + ArchCircle(arch_in_rad); + } + } + Holes(); + } +} + +rotate([0,0,45]) Arch();