From: Ian Jackson Date: Sat, 13 Feb 2016 20:31:27 +0000 (+0000) Subject: sealing-box: break out of bike-lipo-box (just code motion so far, nfc) X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3b8031a69db512ad2b856c95c621fc09eafa6b61;p=reprap-play.git sealing-box: break out of bike-lipo-box (just code motion so far, nfc) --- diff --git a/.gitignore b/.gitignore index 3d7f77d..5af1bc5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ commitid-best-test.scad filamentspool-number-n*.dxf filamentspool-number-n*.eps bike-lipo-box.scad +sealing-box.scad diff --git a/Makefile b/Makefile index c249fed..397b7cd 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone an AUTO_TOPLEVELS := $(foreach m,$(USING_AUTOS),$(shell $(PLAY)/toplevel-find $m)) -AUTO_INCS = funcs.scad utils.scad +AUTO_INCS = funcs.scad utils.scad sealing-box.scad default: autoincs scads diff --git a/bike-lipo-box.scad.m4 b/bike-lipo-box.scad.m4 index 95cdd0f..ec0b43b 100644 --- a/bike-lipo-box.scad.m4 +++ b/bike-lipo-box.scad.m4 @@ -80,116 +80,18 @@ ts_ybox = 25; ts_cnrrad = 10; ts_zbox = 8; -ts_cidoff = (ts_cnrrad * (1-.7) + wallthick * .8) * [1,1]; - -m4_dnl Box_Part($1=transl_x,$2=transl_y, $3=rot_z,$4=mirror_xy) -m4_dnl $5=kind, $6=kindargs, $7=profile(profileargsargs)) -m4_define(`Box_Part',` - translate([($1),($2)]) - rotate([0,0,($3)]) - mirror([($4),0,0]) - BoxPart_Extrude_$5($6, $7)') m4_dnl - -boxpart_d = 0.01; - -m4_dnl BoxPart_Extrude_Linear(dist, `profile(...);'); -m4_define(`BoxPart_Extrude_Linear',` - rotate([90,0,0]) - translate([0,0, -($1)]) - linear_extrude(height= boxpart_d + ($1)) { - $2 - } -') - -m4_dnl BoxPart_Extrude_Arc(x0_radius, swept_angle, `profile(...);') -m4_dnl arc starting at transl_x, transl_y, moving towards positive -m4_dnl y at first and then bending towards negative x, until -m4_dnl use negative x0_radius to inciate bending towards positive x -m4_dnl swept_angle is reached -m4_dnl x0_radius is the radius of the extruded part at x=0, not of the box -m4_define(`BoxPart_Extrude_Arc',` - translate([-($1),0,0]) - intersection(){ - translate([0,0,-500]) - linear_extrude(height=1000) - scale(500) - mirror([($1)<0, 0,0]) - FArcSegment_mask($2); - rotate_extrude(convexity=10, $fs=1, $fn=36) - mirror([($1)<0, 0,0]) - translate([+($1),0,0]){ - $3 - } - } -') - -ts_xbox_lin = ts_xbox - ts_cnrrad*2; -ts_ybox_lin = ts_ybox - ts_cnrrad*2; - -m4_dnl TestSealDoBoxShape(`profile(profileargs)'); -m4_define(`TestSealDoBoxShape',` - Box_Part(0, ts_cnrrad, 0,0, Linear,`ts_ybox_lin', `$1' ) - Box_Part(0, ts_ybox-ts_cnrrad, 0,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(ts_cnrrad, ts_ybox, -90,0, Linear,`ts_xbox_lin', `$1' ) - Box_Part(ts_xbox-ts_cnrrad, ts_ybox, -90,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(ts_xbox, ts_ybox-ts_cnrrad, -180,0, Linear,`ts_ybox_lin', `$1' ) - Box_Part(ts_xbox, ts_cnrrad, -180,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(ts_xbox-ts_cnrrad, 0, -270,0, Linear,`ts_xbox_lin', `$1' ) - Box_Part(ts_cnrrad, 0, -270,0, Arc,`-ts_cnrrad,90' , `$1' ) -') - -m4_dnl ' - -module WallProfile(){ - z = ts_zbox - innertube - tubesealrad; - translate([0, -0.1]) square([wallthick, z]); - translate([tubesealrad, z]) circle(r=tubesealrad, $fn=20); -} - -module FloorProfile(){ - mirror([0,1]) square([wallthick, floorth]); -} - -module LidProfile(){ - rad = tubesealrad + innertube; - morex = wallthick; - difference(){ - translate([-lidoverlap - innertube, - ts_zbox - lidoverhang - innertube]) - square([lidoverlap + innertube + wallthick, - lidoverhang + innertube + ceilth]); - hull(){ - translate([tubesealrad, - ts_zbox - innertube - tubesealrad]) - for (t=[ [0,0], - [morex*2, 0], - [0, -ts_zbox] - ]) { - translate(t) - circle(r= tubesealrad + innertube, $fn=20); - } - } - } -} - -module CeilProfile(){ - translate([0, ts_zbox]) - square([wallthick*2, ceilth]); -} +include module TestSealBox(){ ////toplevel - TestSealDoBoxShape(WallProfile();); - hull(){ TestSealDoBoxShape(FloorProfile();); } + TestSealBoxBox(); translate(ts_cidoff) Commitid_BestCount([ts_xbox,ts_ybox] - 2*ts_cidoff); } module TestSealLid(){ ////toplevel difference(){ - union(){ - TestSealDoBoxShape(LidProfile();); - hull(){ TestSealDoBoxShape(CeilProfile();); } - } + TestSealBoxLid(); + translate([ts_xbox * .75, ts_ybox/2, 0]) cylinder(h=100, r=5); diff --git a/sealing-box.scad.m4 b/sealing-box.scad.m4 new file mode 100644 index 0000000..26697d1 --- /dev/null +++ b/sealing-box.scad.m4 @@ -0,0 +1,108 @@ +// -*- C -*- + +m4_dnl Box_Part($1=transl_x,$2=transl_y, $3=rot_z,$4=mirror_xy) +m4_dnl $5=kind, $6=kindargs, $7=profile(profileargsargs)) +m4_define(`Box_Part',` + translate([($1),($2)]) + rotate([0,0,($3)]) + mirror([($4),0,0]) + BoxPart_Extrude_$5($6, $7)') m4_dnl + +boxpart_d = 0.01; + +m4_dnl BoxPart_Extrude_Linear(dist, `profile(...);'); +m4_define(`BoxPart_Extrude_Linear',` + rotate([90,0,0]) + translate([0,0, -($1)]) + linear_extrude(height= boxpart_d + ($1)) { + $2 + } +') + +m4_dnl BoxPart_Extrude_Arc(x0_radius, swept_angle, `profile(...);') +m4_dnl arc starting at transl_x, transl_y, moving towards positive +m4_dnl y at first and then bending towards negative x, until +m4_dnl use negative x0_radius to inciate bending towards positive x +m4_dnl swept_angle is reached +m4_dnl x0_radius is the radius of the extruded part at x=0, not of the box +m4_define(`BoxPart_Extrude_Arc',` + translate([-($1),0,0]) + intersection(){ + translate([0,0,-500]) + linear_extrude(height=1000) + scale(500) + mirror([($1)<0, 0,0]) + FArcSegment_mask($2); + rotate_extrude(convexity=10, $fs=1, $fn=36) + mirror([($1)<0, 0,0]) + translate([+($1),0,0]){ + $3 + } + } +') + +ts_cidoff = (ts_cnrrad * (1-.7) + wallthick * .8) * [1,1]; + +ts_xbox_lin = ts_xbox - ts_cnrrad*2; +ts_ybox_lin = ts_ybox - ts_cnrrad*2; + +m4_dnl TestSealDoBoxShape(`profile(profileargs)'); +m4_define(`TestSealDoBoxShape',` + Box_Part(0, ts_cnrrad, 0,0, Linear,`ts_ybox_lin', `$1' ) + Box_Part(0, ts_ybox-ts_cnrrad, 0,0, Arc,`-ts_cnrrad,90' , `$1' ) + Box_Part(ts_cnrrad, ts_ybox, -90,0, Linear,`ts_xbox_lin', `$1' ) + Box_Part(ts_xbox-ts_cnrrad, ts_ybox, -90,0, Arc,`-ts_cnrrad,90' , `$1' ) + Box_Part(ts_xbox, ts_ybox-ts_cnrrad, -180,0, Linear,`ts_ybox_lin', `$1' ) + Box_Part(ts_xbox, ts_cnrrad, -180,0, Arc,`-ts_cnrrad,90' , `$1' ) + Box_Part(ts_xbox-ts_cnrrad, 0, -270,0, Linear,`ts_xbox_lin', `$1' ) + Box_Part(ts_cnrrad, 0, -270,0, Arc,`-ts_cnrrad,90' , `$1' ) +') + +m4_dnl ' + +module WallProfile(){ + z = ts_zbox - innertube - tubesealrad; + translate([0, -0.1]) square([wallthick, z]); + translate([tubesealrad, z]) circle(r=tubesealrad, $fn=20); +} + +module FloorProfile(){ + mirror([0,1]) square([wallthick, floorth]); +} + +module LidProfile(){ + rad = tubesealrad + innertube; + morex = wallthick; + difference(){ + translate([-lidoverlap - innertube, + ts_zbox - lidoverhang - innertube]) + square([lidoverlap + innertube + wallthick, + lidoverhang + innertube + ceilth]); + hull(){ + translate([tubesealrad, + ts_zbox - innertube - tubesealrad]) + for (t=[ [0,0], + [morex*2, 0], + [0, -ts_zbox] + ]) { + translate(t) + circle(r= tubesealrad + innertube, $fn=20); + } + } + } +} + +module CeilProfile(){ + translate([0, ts_zbox]) + square([wallthick*2, ceilth]); +} + +module TestSealBoxBox(){ + TestSealDoBoxShape(WallProfile();); + hull(){ TestSealDoBoxShape(FloorProfile();); } +} + +module TestSealBoxLid(){ ////toplevel + TestSealDoBoxShape(LidProfile();); + hull(){ TestSealDoBoxShape(CeilProfile();); } +}