X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=sealing-box.scad.m4;h=7ead2b8bdff93d6f668d8fb393ad8134225eae2a;hb=0645ea4627d392af97c96ad15e1e1d2832eb4c73;hp=d14e49888432bd0be4f1759888f117c3357115f8;hpb=06d409f1170c1283590c420fd238c8e726b1912a;p=reprap-play.git diff --git a/sealing-box.scad.m4 b/sealing-box.scad.m4 index d14e498..7ead2b8 100644 --- a/sealing-box.scad.m4 +++ b/sealing-box.scad.m4 @@ -6,38 +6,50 @@ // 1. include // 2. assign() values to (xxx these should be $ variables) // $sealingbox_wallth -// $sealingbox_xbox (outer dimension) -// $sealingbox_ybox (outer dimension) -// $sealingbox_zbox (inner dimension xxx) +// $sealingbox_sz[0] (outer dimension) +// $sealingbox_sz[1] (outer dimension) +// $sealingbox_sz[2] (inner dimension) // $sealingbox_ceilth // $sealingbox_floorth // $sealingbox_wallth -// ts_cnrrad (outer radius of corners, leave at default normall) -// xxx default should be in this file // 3. use the modules // SealingBox_RectBox // SealingBox_RectLid +// (origin is notional outside corner, but at level of +// inside of base; box extends to positive x,y,z) // // B. Complicated shapes, but harder work // 1. Be a .m4 file and m4_include sealing-box.scad.m4 // 2. Define your own BoxDoShapeSomething like BoxDoShapeRect // 3. Invoke BoxUseShape // 4. Use the Box and Lid modules generated +// +// Other settings +// $sealingbox_cnrrad + +$sealingbox_cnrrad = 10; +$sealingbox_crude = false; m4_define(`BoxLocals',` + xbox = $sealingbox_sz[0]; + ybox = $sealingbox_sz[1]; + zbox = $sealingbox_sz[2]; wall = $sealingbox_wallth; floorth = $sealingbox_floorth; ceilth = $sealingbox_ceilth; - xbox = $sealingbox_xbox; - ybox = $sealingbox_ybox; - zbox = $sealingbox_zbox; + cnrrad = $sealingbox_cnrrad; - ts_cidoff = (ts_cnrrad * (1-.7) + wall * .8) * [1,1]; + xbox_lin = xbox - cnrrad*2; + ybox_lin = ybox - cnrrad*2; - xbox_lin = xbox - ts_cnrrad*2; - ybox_lin = ybox - ts_cnrrad*2; + innertube = 1.0 + 0.2; + lidoverlap = 1.5; + lidoverhang = 6; + tubesealrad = 2.0; ') +m4_define(`BoxFn',`$fn= $sealingbox_crude ? ($2) : ($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',` @@ -71,7 +83,7 @@ m4_define(`BoxPart_Extrude_Arc',` scale(500) mirror([($1)<0, 0,0]) FArcSegment_mask($2); - rotate_extrude(convexity=10, $fs=1, $fn=36) + rotate_extrude(convexity=10, $fs=1, BoxFn(36,8)) mirror([($1)<0, 0,0]) translate([+($1),0,0]){ $3 @@ -81,14 +93,14 @@ m4_define(`BoxPart_Extrude_Arc',` m4_dnl BoxDoShapeRect(`profile(profileargs)'); m4_define(`BoxDoShapeRect',` - Box_Part(0, ts_cnrrad, 0,0, Linear,`ybox_lin', `$1' ) - Box_Part(0, ybox-ts_cnrrad, 0,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(ts_cnrrad, ybox, -90,0, Linear,`xbox_lin', `$1' ) - Box_Part(xbox-ts_cnrrad, ybox, -90,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(xbox, ybox-ts_cnrrad, -180,0, Linear,`ybox_lin', `$1' ) - Box_Part(xbox, ts_cnrrad, -180,0, Arc,`-ts_cnrrad,90' , `$1' ) - Box_Part(xbox-ts_cnrrad, 0, -270,0, Linear,`xbox_lin', `$1' ) - Box_Part(ts_cnrrad, 0, -270,0, Arc,`-ts_cnrrad,90' , `$1' ) + Box_Part(0, cnrrad, 0,0, Linear,`ybox_lin', `$1' ) + Box_Part(0, ybox-cnrrad, 0,0, Arc,`-cnrrad,90' , `$1' ) + Box_Part(cnrrad, ybox, -90,0, Linear,`xbox_lin', `$1' ) + Box_Part(xbox-cnrrad, ybox, -90,0, Arc,`-cnrrad,90' , `$1' ) + Box_Part(xbox, ybox-cnrrad, -180,0, Linear,`ybox_lin', `$1' ) + Box_Part(xbox, cnrrad, -180,0, Arc,`-cnrrad,90' , `$1' ) + Box_Part(xbox-cnrrad, 0, -270,0, Linear,`xbox_lin', `$1' ) + Box_Part(cnrrad, 0, -270,0, Arc,`-cnrrad,90' , `$1' ) ') m4_dnl ' @@ -97,7 +109,7 @@ module SealingBox_WallProfile(){ BoxLocals z = zbox - innertube - tubesealrad; translate([0, -0.1]) square([wall, z]); - translate([tubesealrad, z]) circle(r=tubesealrad, $fn=20); + translate([tubesealrad, z]) circle(r=tubesealrad, BoxFn(20,6)); } module SealingBox_FloorProfile(){ @@ -122,7 +134,7 @@ module SealingBox_LidProfile(){ [0, -zbox] ]) { translate(t) - circle(r= tubesealrad + innertube, $fn=20); + circle(r= tubesealrad + innertube, BoxFn(20,6)); } } } @@ -150,4 +162,4 @@ m4_define(`BoxUseShape',` } ') -BoxUseShape(`TestSealBox',`BoxDoShapeRect') +BoxUseShape(`SealingBox_Rect',`BoxDoShapeRect')