X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=sewing-table.scad.m4;h=de05a9bc796962e07eaf58283e0b047d347fdd44;hp=fcc722a60aa0766537629d5ec11eb00d061f1252;hb=fd35903275e60b7ac026093fb99381d5dbd23ae0;hpb=5313ab38847582570faf12759411d3b1d3a7e701 diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index fcc722a..de05a9b 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 @@ -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); }