chiark / gitweb /
belt-hole-cut-jig-simple: version to try to make it not warp, before adjust reg block...
[reprap-play.git] / belt-hole-cut-jig-simple.scad
diff --git a/belt-hole-cut-jig-simple.scad b/belt-hole-cut-jig-simple.scad
new file mode 100644 (file)
index 0000000..550102d
--- /dev/null
@@ -0,0 +1,96 @@
+// -*- C -*-
+
+strap_thick = 3;
+strap_width = 26.75 + 0.7;
+
+punch_dia = 12.75;
+
+punch_slop = 0.5;
+
+jig_interval = 20;
+
+reg_blocks = 3;
+
+jig_iters = 7; //xxx
+
+roof_thick = 4;
+regblock_thick = 4;
+punchtube_thick = 2.5;
+
+total_h = 40;
+punchfree_h = 8;
+
+reg_prot_width = 4;
+
+// computed:
+
+punchhole_r = punch_dia/2 + punch_slop;
+mainframe_l = jig_interval * jig_iters;
+
+mainframe_w = strap_width + reg_prot_width*2;
+
+echo(mainframe_l);
+
+module RegBlockOutline(){
+  difference(){
+    translate([0, -mainframe_w/2])
+      mirror([1,0])
+      square([total_h, mainframe_w]);
+    translate([1, -strap_width/2])
+      mirror([1,0])
+      square([strap_thick+1, strap_width]);
+  }
+}
+
+module RegBlock(){
+  translate([0,0,total_h])
+    rotate([0,-90,0])
+    linear_extrude(height=regblock_thick)
+    RegBlockOutline();
+}
+
+module MainFrame(){
+  translate([jig_interval/2, -mainframe_w/2, 0])
+    mirror([1,0,0])
+    cube([mainframe_l, mainframe_w, roof_thick]);
+  for (rbi=[0:reg_blocks-1]) {
+    translate([jig_interval/2 +
+              -(mainframe_l-regblock_thick)/(reg_blocks-1) * rbi,
+              0,0])
+      RegBlock();
+  }
+}
+
+module PerHole(){
+  for (holei=[0:jig_iters-1]) {
+    translate([-jig_interval * holei, 0, 0])
+      child(0);
+  }
+}
+
+module Shells(){
+  PerHole(){
+    cylinder(r=punchhole_r+punchtube_thick, h=total_h-punchfree_h);
+  }
+}
+
+module Punches(){
+  PerHole(){
+    translate([0,0,-1]){
+      cylinder(r=punchhole_r, h=total_h+2);
+      %cylinder(r=punch_dia/2, h=total_h);
+    }
+  }
+}
+
+module Jig(){
+  difference(){
+    union(){
+      MainFrame();
+      Shells();
+    }
+    Punches();
+  }
+}
+
+Jig();