chiark / gitweb /
scaffold-clamp: wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 5 Nov 2020 18:34:57 +0000 (18:34 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 5 Nov 2020 18:34:57 +0000 (18:34 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
scaffold-clamp.scad

index e621b71ea0f8a2ead88fc29bbc5ced84cbb44591..d0e76681df1d0fb3695dcccc7f2abd2d49ce2e08 100644 (file)
@@ -37,10 +37,12 @@ flats_y = open_gap/2 + th;
 stride_z = hinge_unit*2 + hinge_z_gap*2;
 total_z = hinge_units * stride_z - hinge_z_gap;
 
+pin_flatten = pin_dia/2 * (1 - cos(45));
+
 $fa = 3;
 $fs = 0.1;
 
-module MainPlan() {
+module MainPlan(flatten=false) {
   difference(){
     offset(r=-smooth_r) offset(delta=smooth_r)
       union(){
@@ -52,7 +54,14 @@ module MainPlan() {
     circle(r = tube_dia/2);
     rectfromto([0,       -open_gap/2],
               [max_x+1, +open_gap/2]);
-    translate([hinge_x, 0]) circle(r= hole_dia/2);
+    translate([hinge_x, 0]) {
+      intersection(){
+       circle(r= hole_dia/2);
+       if (flatten)
+         translate([ pin_flatten, 0 ])
+         square(center=true, [hole_dia, hole_dia + 1]);
+      }
+    }
   }
 }
 
@@ -62,28 +71,33 @@ module Portion(d=0) {
             [max_x+10, -(tube_dia/2+th+10)]);
 }
 
-module MainPlanA(){
+module MainPlanA(flatten){
   intersection(){
-    MainPlan();
+    MainPlan(flatten);
     Portion(0);
   }
 }
 
-module MainPlanB(){
+module MainPlanB(flatten){
   difference(){
-    MainPlan();
+    MainPlan(flatten);
     Portion(hinge_gap);
   }
 }
 
-module HalfClamp(){ ////toplevel
-  linextr(0, total_z) mirror([0,1]) MainPlanB();
-  for (i=[0 : hinge_units-1]) {
-    translate([0,0, stride_z*i])
-      linextr(0, hinge_unit) MainPlanA();
+module HalfClampX(flatten){
+  translate([0,0, -total_z/2]) {
+    linextr(0, total_z) mirror([0,1]) MainPlanB();
+    for (i=[0 : hinge_units-1]) {
+      translate([0,0, stride_z*i])
+       linextr(0, hinge_unit) MainPlanA(flatten);
+    }
   }
 }
 
+module HalfClampA() { HalfClampX(false); }
+module HalfClampB() { rotate([180,0,0]) HalfClampX(true); }
+
 module PlanDemo(){ ////toplevel
   MainPlan();
   translate([0,0,-4]) color("red") Portion(1);
@@ -96,5 +110,10 @@ module PlanDemo(){ ////toplevel
 //  translate([max_x - hinge_x + 20, 0]) color("blue") MainPlanA();
 }
 
+module Demo(){ ////toplevel
+  color("red") HalfClampA();
+  color("blue") HalfClampB();
+}
+
 //PlanDemo();
 //HalfClamp();