chiark / gitweb /
mic-table-clamp: wip ClampBot
[reprap-play.git] / mic-table-clamp.scad
index b42b1ce04c7f2f41e03e720d1caba37798826234..43b0069892d8203f272344947999010e1d3e5539 100644 (file)
@@ -1,8 +1,11 @@
 // -*- C -*-
 
-// print on High Detail
+// print Stem and Wingnut on High Detail
 // but adjust shell thickness to 2mm
 
+// others on Standard
+
+include <utils.scad>
 include <threads.scad>
 include <camera-mount.scad>
 
@@ -21,6 +24,25 @@ thread_nom = 8;
 thread_pitch = 1.25;
 thread_act = thread_nom + 0.600;
 
+clamp_l = 40;
+clamp_top_th = 7;
+clamp_bot_th = 10;
+clamp_bot_tooth_h = 2.5;
+clamp_bot_tooth_d  = 10;
+clamp_bot_collar = 20;
+clamp_bot_collar_th = 4.0;
+clamp_reg_sz = 3;
+clamp_w = 15;
+clamp_max_table_th = 35;
+
+clamp_hole_dia = thread_nom + 0.30;
+
+clamp_reg_clear_x = 2.5;
+clamp_reg_clear_y = 0.75; // each side
+clamp_reg_extra_x = 4;
+
+//ct_h = 7;
+
 wingnut_th = 5;
 wingnut_wall = 4;
 wingnut_wing_mindia = 17.0;
@@ -28,16 +50,18 @@ wingnut_wing_xrad = 8;
 wingnut_wing_xh = 5;
 wingnut_wing_th = 3;
 
-//$test= true;
-$test= false;
+$test= true;
+///$test= false;
 
-$fa= 3;
-$fs= 0.2;
+//$fa= 3;
+//$fs= 0.2;
 
 // calculated
 
 wingnut_cnr = wingnut_wing_th/2 -0.1;
 
+clamp_reg_bot_x_min = stem_base_dia/2 + clamp_reg_clear_x - clamp_reg_sz;
+
 module OurThread(l){
   translate([0,0,-0.01])
     metric_thread(diameter=thread_act, pitch=thread_pitch,
@@ -45,7 +69,7 @@ module OurThread(l){
                  test=$test, length=l);
 }
 
-module Stem(){
+module Stem(){ ////toplevel
   translate([0,0, stem_l -0.1])
     english_thread(diameter=positive_dia/inch, threads_per_inch=16,
                   leadin=1, test=$test,
@@ -63,7 +87,7 @@ module Stem(){
   }
 }
 
-module Wingnut(){
+module Wingnut(){ ////toplevel
   difference(){
     union(){
       cylinder(r= (thread_nom+wingnut_wall)/2,
@@ -90,5 +114,74 @@ module Wingnut(){
   }
 }
 
+module ClampCollarPlan(){
+  circle(r= thread_nom/2 + clamp_bot_collar_th);
+}
+module ClampHolePlan(){
+  circle(r= clamp_hole_dia/2);
+}
+module ClampArmPlan(){
+  rectfromto([0,       -clamp_w/2],
+            [clamp_l, +clamp_w/2]);
+}
+
+module ClampTop(){ ////toplevel
+  linear_extrude(height = clamp_top_th, convexity=4) {
+    difference(){
+      union(){
+       ClampArmPlan();
+       ClampCollarPlan();
+      }
+      ClampHolePlan();
+    }
+  }
+  linear_extrude(height = clamp_reg_sz, convexity=4) {
+    difference(){
+      for (m=[0,1]){
+       mirror([0,m,0])
+         translate([0, clamp_reg_sz/2 + clamp_reg_clear_y, 0])
+         rectfromto([-clamp_reg_bot_x_min - clamp_reg_extra_x, 0 ],
+                    [0,                             clamp_reg_sz ]);
+      }
+      ClampHolePlan();
+    }
+  }
+}
+
+module ClampBot(){ ////toplevel
+  linear_extrude(height = clamp_bot_th, convexity=4) {
+    difference(){
+      ClampArmPlan();
+      ClampHolePlan();
+    }
+  }
+  translate([clamp_l, 0, clamp_bot_th-0.1])
+    linear_extrude(height = clamp_bot_tooth_h +0.1)
+    rectfromto([ -clamp_bot_tooth_d, -clamp_w/2 ],
+              [  0,                 +clamp_w/2 ]);
+  translate([0,0, clamp_bot_th])
+    mirror([0,0,1])
+    linear_extrude(height = clamp_bot_collar)
+    difference(){
+    ClampCollarPlan();
+    ClampHolePlan();
+  }
+  translate([0, 0, clamp_bot_th]) {
+    linextr(-clamp_reg_sz, clamp_max_table_th+clamp_reg_sz) {
+      translate([-clamp_reg_bot_x_min, 0]) {
+       rectfromto([ 0,            -clamp_reg_sz/2 ],
+                  [ clamp_reg_sz, +clamp_reg_sz/2 ]);
+      }
+    }
+    linextr(-clamp_reg_sz, 0) {
+      difference(){
+       rectfromto([ -clamp_reg_bot_x_min, -clamp_reg_sz/2 ],
+                  [  0,                   +clamp_reg_sz/2 ]);
+       ClampHolePlan();
+      }
+    }
+  }
+}
+
 //Wingnut();
-Stem();
+//Stem();