X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=sewing-table.scad.m4;h=bfa9506aba74e5463275bdcbc81e3539769e1d98;hb=d3d6a3253f88c98fadcc4b640008b6244b1ca24f;hp=e126ecc1be8020ec7d93db2603c707d8e75a3be4;hpb=dfa019950beb9c66486607148b7a1e6090e52f69;p=reprap-play.git diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index e126ecc..bfa9506 100644 --- a/sewing-table.scad.m4 +++ b/sewing-table.scad.m4 @@ -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 @@ -788,18 +788,19 @@ module Tile00(){ ////toplevel RoundCornerAdd(rc2); } -module FitTest_general(c0,sz, dobrace=false){ +module FitTest_general(c0,sz, dobrace=false, bracexx=0){ c = Rectangle_corners(c0, sz); brace = [7,7,9]; + bsz = sz + [bracexx,0,0]; difference(){ union(){ Rectangle_TileBase(c); if (dobrace) { translate(concat(c0, [-brace[2] + 0.1])){ difference(){ - cube(concat(sz,[brace[2]]) - [5,0,0]); + cube(concat(bsz, [brace[2]]) - [5,0,0]); translate(brace + [0,0, -25]) - cube(concat(sz, [50]) - brace*2 + [10,0,0]); + cube(concat(bsz, [50]) - brace*2 + [10,0,0]); } } } @@ -809,40 +810,25 @@ module FitTest_general(c0,sz, dobrace=false){ } } -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 - p0 = [110,-80]; - sz = [170,80]; - intersection() { - Tile00(); - translate([0,0,-8]) linear_extrude(height=18) { - translate(p0) square(sz); - } - } -} - module FitTest_PairLink(cut=false){ ////toplevel cy0=-55; cy1=85; cx=127; bar = [10,10]; legrad = 12; - footrad_min = 2; footrad_max = 4; footrad_depth = 3; + 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]); - translate([cx - bar[0]/2, cy0, 0]) - cube([bar[0], cy1-cy0, bar[1]]); for (endy=[cy0,cy1]) { $fn=32; - translate([cx,endy,0]){ + translate([cx,endy,dz]){ // feet for (rot=[45:90:315]) rotate(rot) { translate([legrad,0,0]){ @@ -851,6 +837,10 @@ module FitTest_PairLink(cut=false){ ////toplevel translate([0,0,-footrad_depth]) cylinder(r= footrad_min, h=1); } + translate([0,0,-10]) + cylinder(r= footrad_min + + adj_neg_slop * (footrad_max-footrad_min)/footrad_depth, + h=20); } } // legs @@ -863,14 +853,51 @@ module FitTest_PairLink(cut=false){ ////toplevel } } // strap holes - for (rot=[0,180]) rotate(rot) { - translate([ straphole_x_max - strap[0]/2, 0,0 ]) - cube(concat(strap,[20]), center=true); + 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_RearCurve(){ ////toplevel + difference(){ + FitTest_general([110,0], [170,100]); + FitTest_PairLink(true); + } +} + +module FitTest_FrontCurve(){ ////toplevel + p0 = [110,-80]; + sz = [170,80]; + difference(){ + intersection() { + Tile00(); + translate([0,0,-8]) linear_extrude(height=18) { + translate(p0) square(sz); } } + FitTest_PairLink(true); } } +module FitTest_Entire(){ ////toplevel + difference(){ + FitTest_general([-40,-80], [250,180], dobrace=true, bracexx=15); + FitTest_PairLink(true); + } + FitTest_RearCurve(); + FitTest_FrontCurve(); +} + +module FitTest_EntireDemo(){ ////toplevel + FitTest_Entire(); + //%Tile00(); +} + module FitTest_PairDemo(){ ////toplevel sh=[-100,-15,0]; translate(sh){