chiark / gitweb /
sewing-table: FrontCurve: adjust from print
[reprap-play.git] / sewing-table.scad.m4
index fcc722a60aa0766537629d5ec11eb00d061f1252..de05a9bc796962e07eaf58283e0b047d347fdd44 100644 (file)
@@ -100,8 +100,8 @@ frontcurve_side_skew = 3.5 / 72;
 frontcurve_avoid_y = 70;
 frontcurve_z_slop = 0.75;
 
-frontcurve_strt_len = 60;
-frontcurve_dualcurve_angle = 90 - 65;
+frontcurve_strt_len = 50;
+frontcurve_dualcurve_angle = 30;
 
 // calculated
 
@@ -809,56 +809,100 @@ module FitTest_general(c0,sz, dobrace=false){
   }
 }
 
+module FitTest_PairLink(cut=false){ ////toplevel
+  cy0=-55; cy1=85; cx=127;
+  bar = [10,10];
+  legrad = 12;
+  footrad_min = 1; footrad_max = 4; footrad_depth = 5;
+  strap = [3,5];
+  adj_neg_slop = 1.0;
+  bar_z_slop = 1.75;
+
+  // calculated
+  straphole_x_max = legrad/sqrt(2) + footrad_max;
+  dz = cut ? adj_neg_slop : 0;
+
+  translate([cx - bar[0]/2, cy0, dz + bar_z_slop])
+    cube([bar[0], cy1-cy0, bar[1] - bar_z_slop]);
+
+  for (endy=[cy0,cy1]) {
+    $fn=32;
+    translate([cx,endy,dz]){
+      // feet
+      for (rot=[45:90:315]) rotate(rot) {
+       translate([legrad,0,0]){
+         hull(){
+           cylinder(r= footrad_max, h=1);
+           translate([0,0,-footrad_depth])
+             cylinder(r= footrad_min, h=1);
+         }
+       }
+      }
+      // legs
+      for (rot=[45,135]) rotate(rot) {
+       hull(){
+         for (s=[-1,+1]){
+           translate([s*legrad,0,0])
+             cylinder(r= footrad_max, h=bar[1]);
+         }
+       }
+      }
+      // strap holes
+      if (cut) {
+       for (rot=[0,180]) rotate(rot) {
+           translate([ straphole_x_max - strap[0]/2, 0,0 ])
+             cube(concat(strap,[20]), center=true);
+         }
+      }
+    }
+  }
+}
+
 module FitTest_Entire(){ ////toplevel
   FitTest_general([-40,-80], [275,180], dobrace=true);
 }
 
 module FitTest_RearCurve(){ ////toplevel
-  FitTest_general([110,0], [170,100]);
+  difference(){
+    FitTest_general([110,0], [170,100]);
+    FitTest_PairLink(true);
+  }
 }
 
 module FitTest_FrontCurve(){ ////toplevel
   p0 = [110,-80];
   sz = [170,80];
-  intersection() {
-    Tile00();
-    translate([0,0,-8]) linear_extrude(height=18) {
-      translate(p0) square(sz);
+  difference(){
+    intersection() {
+      Tile00();
+      translate([0,0,-8]) linear_extrude(height=18) {
+       translate(p0) square(sz);
+      }
     }
+    FitTest_PairLink(true);
   }
 }
 
-module FitTest_PairLink(adjust=0){ ////toplevel
-  cy0=-55; cy1=85; cx=125;
-  bar = [10,10];
-  legrad = 15;
-  footrad_min = 4; footrad_max = 6; footrad_depth = 3;
-
-  translate([cx,cy0,0])
-    cube([bar[0], cy1-cy0, bar[1]]);
-  for (endy=[cy0,cy1]) {
-    translate([cx,endy,0]){
-      for (rot=[0:90:270]) {
-       rotate(rot){
-         translate([legrad,0,0]){
-           hull(){
-             cylinder(r= footrad_max, height=1);
-             translate([0,0,-footrad_depth])
-               cylinder(r= footrad_min, height=1);
-           }
-         }
+module FitTest_PairDemo(){ ////toplevel
+  sh=[-100,-15,0];
+  translate(sh){
+    FitTest_PairLink();
+    %FitTest_FrontCurve();
+    %FitTest_RearCurve();
+  }
+  rotate([0,0,180]){
+    translate(sh){
+      difference(){
+       union(){
+         FitTest_FrontCurve();
+         FitTest_RearCurve();
        }
+       #FitTest_PairLink(true);
       }
     }
   }
 }
 
-module FitTest_PairDemo(){ ////toplevel
-  %FitTest_FrontCurve();
-  %FitTest_RearCurve();
-  FitTest_PairLink();
-}
-
 module RoundCornerDemo_plat(cnr){
   mirror([0,0,1]) linear_extrude(height=1) polygon(cnr);
 }