chiark / gitweb /
Revert "sewing-table: Test: remove commitid (for perf)"
[reprap-play.git] / sewing-table.scad.m4
index c582e50f5333bb70c206498e14eab13dbb878d98..f44e1e3f383fd27cc553bf1660c9ae9afbc34922 100644 (file)
@@ -94,7 +94,7 @@ rearcurve_double_inrad = 26.10 + 8.04;
 
 reartablet_z = 2.54;
 reartablet_x = 5 + 1;
-reartablet_y = 5;
+reartablet_y = 8;
 
 frontcurve_side_skew = 3.5 / 72;
 frontcurve_avoid_y = 70;
@@ -123,6 +123,8 @@ thehd_tl = [ -thehd_tr[0], thehd_tr[1] ];
 thehd_bl = -thehd_tr;
 thehd_br = -thehd_tl;
 
+tablet_z_slop = rearcurve_z_slop;
+
 interlock_rad = interlock_dia/2;
 interlock_negative_rad = interlock_rad + 0.125;
 
@@ -167,17 +169,22 @@ module TileBase(botleft, topright){
       translate(concat(botleft, [0]))
       cube(concat(size, [tile_th]));
     if (!TEST) {
+      cidsz = topright_post-botleft_post
+       + [-post_dia,-post_dia]
+       + [0, thehd[1]];
+      cidszr = [ min(cidsz[0],50), min(cidsz[1],50) ];
+      echo("CID",cidsz,cidszr);
       translate( concat(botleft_post, [ -tile_th ])
-                + 0.5 * [ post_dia, post_dia, 0 ] )
-       Commitid_BestCount_M( topright_post-botleft_post
-                             + [-post_dia,-post_dia]
-                             + [0, thehd[1]]);
+                + 0.5 * [ post_dia, post_dia, 0 ]
+                + 0.5 * concat( cidsz - cidszr, [ 0 ]) )
+       Commitid_BestCount_M(cidszr);
     }
     if (TEST) {
       crossoff = tile_hard_edge_hole_dist + POST_TCROSSSZ/2;
-      cidsz = [ size[0] - 2*crossoff, thehd[1] ];
-      translate( concat(botleft + [crossoff, 0], [0]) )
-       Commitid_BestCount(cidsz);
+      cidsz = [ thehd[0], size[1] - 2*crossoff ];
+      cidszr = [ cidsz[0], min(cidsz[1], 50) ];
+      translate( concat(botleft + [0, crossoff] + (cidsz-cidszr)/2, [0]) )
+       Commitid_BestCount(cidszr);
       difference(){
        mirror([0,0,1]) {
          translate(concat(botleft + [test_edge,test_edge], [test_tile_th]))
@@ -185,9 +192,10 @@ module TileBase(botleft, topright){
          translate(concat(botleft_post, [-1]))
            cube(concat(topright_post-botleft_post, [tile_th+2]));
        }
+       shufflesz = max(test_edge, tile_hard_edge_hole_dist)*2;
        minkowski(){
-         Machine();
-         cube(max(test_edge, tile_hard_edge_hole_dist)*2, center=true);
+         MachineEnvelope();
+         cube(shufflesz, center=true);
        }
       }
     }
@@ -386,7 +394,7 @@ module Machine_Arm(){
   translate([0,0,-30]) linear_extrude(height=60) {
     translate(tile01_tr + [0, (-cutout_tile01_y + cutout_tile11_y)/2]) {
       intersection(){
-       translate([-100, -ysz/2])
+       translate([-50, -ysz/2])
          square([400, ysz]);
        translate([ endrad - cutout_tile11_x - cutout_l_end_x_slop, 0 ])
          circle(r=endrad, $fa=0.01,$fd=5);
@@ -403,7 +411,7 @@ module Machine_Profile(){
                machine_front_profile);
   skew_angle = atan2( first_front[1] - first_rear[1],
                      first_front[0] - first_rear[0] );
-  echo(below_point, pol, skew_angle);
+  //echo(below_point, pol, skew_angle);
   hull(){
     for (z=[0,-40]) {
       translate([0,z]) {
@@ -417,7 +425,54 @@ module Machine_Profile(){
   }
 }
 
-module Machine_RearProfile(){
+module Machine_NewRearProfile(){
+  // figures copied out of xfig edit boxes
+  // best not to edit the posbox size if poss - just move it
+  posbox = 10 * ([7.2333,-14.1267] - [-16.2289,40.0289]); // box, Green
+  sideline = -10 * ([-6.2400,13.5600] - [-2.4467,28.2556]); // line, Blue
+  scaleline = 10 * dist2d([-1.1911,-20.4800], [-11.2600,4.0578]); // Green2
+  scaleline_mm = 12+5+10+5+3;
+  sh = -[abs(posbox[0]), abs(posbox[1])];
+  rot = atan2(-sideline[0], sideline[1]);
+  sc = scaleline_mm / scaleline;
+  //echo("SH",sh,rot,sc);
+  scale(sc) rotate(rot) translate(sh){
+    import("sewing-table-rear-profile.dxf", convexity=10); // spline, Pink3
+  }
+}
+
+module Machine_NewRearCurve(){
+  slant = atan2(4,210-10);
+  //echo("SL",slant);
+  translate([0,0, rearcurve_double_inrad]) rotate([slant,0,0]){
+    translate([ rearcurve_double_inrad,
+               0,
+               -rearcurve_double_inrad + 10 ]){
+      rotate([180,0,0]) rotate([0,0,90]) linear_extrude(height=30){
+       hull(){
+         Machine_NewRearProfile();
+         translate([0,-100]) Machine_NewRearProfile();
+       }
+      }
+    }
+    rotate([0,90,0]) rotate([90,0,0]) {
+      intersection(){
+       rotate_extrude(convexity=10, $fn=64)
+         rotate(90)
+         translate([ 0, -rearcurve_double_inrad ])
+         Machine_NewRearProfile();
+       translate([0,0,-500])
+         cube([500,500,1000]);
+      }
+    }
+    translate([1,0,-rearcurve_double_inrad])
+      rotate([0,-90,0]) rotate([0,0,-90])
+      linear_extrude(height= rearcurve_strt_len + 1)
+      Machine_NewRearProfile();
+  }
+}
+
+module Machine_RearProfile(){ ////toplevel
   intersection(){
     Machine_Profile();
     translate([ -200 + machine_rear_to_front/2, -100 ]) {
@@ -442,7 +497,7 @@ module Machine_Curves(){ ////toplevel
     //%cube([20,20,20]);
     translate([ -reartablet_x,
                -1,
-               -reartablet_z])
+               -reartablet_z + tablet_z_slop])
       mirror([0,0,1])
       cube([ reartablet_x+1,
             reartablet_y+1,
@@ -466,31 +521,7 @@ module Machine_Curves(){ ////toplevel
     translate([ rearcurve_strt_len,
                0,
                rearcurve_z_slop ]){
-      translate([ 1,
-                 0,
-                 0
-                 ]){
-       rotate([0,-90,0])rotate([0,0,-90]){
-         linear_extrude(height= rearcurve_strt_len + 1)
-         Machine_RearProfile();
-       }
-      }
-      translate([ 0,
-                 0,
-                 rearcurve_double_inrad ]) {
-       intersection(){
-         rotate([90,0,0]){
-           rotate_extrude(convexity=10, $fn=32) {
-             rotate([0,0,90]) translate([ 0,
-                         -rearcurve_double_inrad ]) {
-               Machine_RearProfile();
-             }
-           }
-         }
-         mirror([0,0,1])
-           translate([0,-75,0]) cube([150,150,150]);
-       }
-      }
+      Machine_NewRearCurve();
     }
   }
 }
@@ -499,7 +530,20 @@ module Machine(){ ////toplevel
   Machine_Arm();
   Machine_Curves();
 }
-  
+
+module MachineEnvelope(){
+  // used for testing
+  p_arm_bl = [-cutout_tile11_x, -cutout_tile01_y];
+  y_arm_t  = cutout_tile11_y;
+  p_crv_fl = p_arm_bl + [rearedge_len, -frontcurve_avoid_y];
+  y_crv_b  = y_arm_t + rearcurve_avoid_y;
+
+  translate([0,0,-50]) linear_extrude(height= 100){
+    translate(p_arm_bl) square([400, y_arm_t] - p_arm_bl);
+    translate(p_crv_fl) square([400, y_crv_b] - p_crv_fl);
+  }
+}
+
 function Rectangle_corners(c0, sz) =
   // returns the corners of a rectangle from c0 to c0+sz
   // if sz is positive, the corners are anticlockwise starting with c0
@@ -525,6 +569,39 @@ m4_dnl    expands to two comma-separated corners:
 m4_dnl    that denoted by ix, and the next one anticlockwise
 m4_define(`R_EDGE',`$1[$2],$1[(($2)+1)%4]')
 
+module FitTest_general(c0,sz, dobrace=false){
+  c = Rectangle_corners(c0, sz);
+  brace = [7,7,9];
+  difference(){
+    union(){
+      Rectangle_TileBase(c);
+      if (dobrace) {
+       translate(concat(c0, [-brace[2] + 0.1])){
+         difference(){
+           cube(concat(sz,[brace[2]]) - [5,0,0]);
+           translate(brace + [0,0, -25])
+             cube(concat(sz, [50]) - brace*2 + [10,0,0]);
+         }
+       }
+      }
+      RoundEdge(R_EDGE(c,1));
+    }
+    Machine();
+  }
+}
+
+module FitTest_Entire(){ ////toplevel
+  FitTest_general([-40,-80], [275,180], dobrace=true);
+}
+
+module FitTest_RearCurve(){ ////toplevel
+  FitTest_general([110,0], [170,100]);
+}
+
+module FitTest_FrontCurve(){ ////toplevel
+  FitTest_general([110,-80], [170,80]);
+}
+
 module Tile02(){ ////toplevel
   sz = [100,170];
   c0 = tile02_tr + -sz;
@@ -688,4 +765,9 @@ module Demo(){ ////toplevel
 //Demo();
 
 //Machine_Profile();
-//Machine_RearProfile();
+//Machine_NewRearProfile();
+//Machine_NewRearCurve();
+//Machine_Curves();
+//Machine();
+//FitTest();
+//MachineEnvelope();