X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=sealing-box.scad.m4;h=33b1069ecce0fb45c9a0ee25e2a458d558fa1f5f;hb=08eff150d30933b2df40a080607437ffbd3260ba;hp=3221b2bbbab97d586be86542da5aaba93b3d776a;hpb=62bc4f2988854880fa9c8bc6901e6b0aae4e0e85;p=reprap-play.git diff --git a/sealing-box.scad.m4 b/sealing-box.scad.m4 index 3221b2b..33b1069 100644 --- a/sealing-box.scad.m4 +++ b/sealing-box.scad.m4 @@ -16,7 +16,9 @@ // // B. Complicated shapes, but harder work // 1. Be a .m4 file and m4_include sealing-box.scad.m4 -// 2. Maybe define your own BoxDoShapeRect xxx tbd +// 2. Define your own BoxDoShapeSomething like BoxDoShapeRect +// 3. Invoke BoxUseShape +// 4. Use the Box and Lid modules generated 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)) @@ -59,10 +61,12 @@ m4_define(`BoxPart_Extrude_Arc',` } ') -ts_cidoff = (ts_cnrrad * (1-.7) + wallthick * .8) * [1,1]; +m4_define(`BoxLocals',` + 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; + ts_xbox_lin = ts_xbox - ts_cnrrad*2; + ts_ybox_lin = ts_ybox - ts_cnrrad*2; +') m4_dnl BoxDoShapeRect(`profile(profileargs)'); m4_define(`BoxDoShapeRect',` @@ -79,16 +83,19 @@ m4_define(`BoxDoShapeRect',` m4_dnl ' module SealingBox_WallProfile(){ + BoxLocals z = ts_zbox - innertube - tubesealrad; translate([0, -0.1]) square([wallthick, z]); translate([tubesealrad, z]) circle(r=tubesealrad, $fn=20); } module SealingBox_FloorProfile(){ + BoxLocals mirror([0,1]) square([wallthick, floorth]); } module SealingBox_LidProfile(){ + BoxLocals rad = tubesealrad + innertube; morex = wallthick; difference(){ @@ -111,6 +118,7 @@ module SealingBox_LidProfile(){ } module SealingBox_CeilProfile(){ + BoxLocals translate([0, ts_zbox]) square([wallthick*2, ceilth]); } @@ -119,11 +127,13 @@ module SealingBox_CeilProfile(){ // generates modules BasenameBox and BasenameLid m4_define(`BoxUseShape',` module $1Box(){ + BoxLocals $2(SealingBox_WallProfile();); hull(){ $2(SealingBox_FloorProfile();); } } module $1Lid(){ + BoxLocals $2(SealingBox_LidProfile();); hull(){ $2(SealingBox_CeilProfile();); } }