X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=bike-lipo-box.scad.m4;h=ec0b43b398b5dc052a688b2b17fe1a40e5a209c1;hp=d6ffd6a9ad5440d531ca9a6eac5c3e36d39f3401;hb=3b8031a69db512ad2b856c95c621fc09eafa6b61;hpb=0e5e37c6503d46c93619a61ad3380485b3dd9a10 diff --git a/bike-lipo-box.scad.m4 b/bike-lipo-box.scad.m4 index d6ffd6a..ec0b43b 100644 --- a/bike-lipo-box.scad.m4 +++ b/bike-lipo-box.scad.m4 @@ -1,8 +1,9 @@ // -*- C -*- include +include -pxp6012_rad = 22.5 / 2 + 0.5; +pxp6012_rad = 22.5 / 2 + 0.5; // make circular hole this size in outer wall pxp6012_rad_outer = 32.0 / 2 - 0.5; s1930_y = 30.2 + 0.2; @@ -12,11 +13,30 @@ s1930_x_outer = 27.6 + 0.2; s1930_recess = 3; s1930_around = 3; +s1930_behind = 3; + +wallthick = 2.5; + +// origin is at centre on outer face wall +// outside is towards positive x +// mounting is vertical +module S1930_Positive(){ + d = s1930_recess + s1930_behind; + translate([-d/2, 0,0]) + cube([d, + s1930_x_outer + s1930_around, + s1930_y_outer + s1930_around], center=true); +} +module S1930_Negative(){ + cube([60, s1930_x, s1930_y], + center=true); + translate([1, 0,0]) + cube([s1930_recess*2+2, s1930_x_outer, s1930_y_outer], + center=true); +} -wallthick = 3.0; - -module TestWall(){ - sw_ctr = [25, 0, 25]; +module TestWall(){ ////toplevel + sw_ctr = [25, wallthick, 25]; rotate([0,0,-90]){ difference(){ @@ -36,82 +56,66 @@ module TestWall(){ difference(){ union(){ cube([50, wallthick, 50]); - translate(sw_ctr) { - rotate([90,0,0]) - cube([s1930_x_outer + s1930_around, - s1930_y_outer + s1930_around, - s1930_recess*2], - center=true); - } + translate(sw_ctr) + rotate([0,0,90]) + S1930_Positive(); } translate(sw_ctr) { - rotate([90,0,0]) { - cube([s1930_x, s1930_y, 10], center=true); - translate([0,0, -5]) - cube([s1930_x_outer, s1930_y_outer, 10], center=true); - } + rotate([0,0,90]) + S1930_Negative(); } } } -ts_floorceil = 1.5; -ts_outer = [20,20,20]; -ts_wall = [wallthick,wallthick,ts_floorceil]; - -ts_xbox = 20; -ts_ybox = 15; -ts_cnrrad = 5; -ts_zbox = 20; - -ts_innertube = 0.1; - -m4_dnl Box_Part($1=transl_x,$2=transl_y, $3=rot_z,$4=mirror_xy) -m4_dnl $5=kind(kindargs) -m4_dnl profile(profileargsargs); -m4_define(`Box_Part',` - translate([$1,$2]) - rotate([0,0, $3]) - mirror([$4, 0,0]) - BoxPart_Extrude_$5') 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)) -') - -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 TestSealWallProfile(){ - z = ts_zbox - ts_innertube - wallthick/2; - translate([0, -0.1]) square([wallthick, z]); - translate([wallthick/2, z]) circle(r = wallthick/2, $fn=20); +floorth = 2.5; +ceilth = 2.5; +innertube = 1.0 + 0.2; +lidoverlap = 1.5; +lidoverhang = 6; +tubesealrad = 2.0; + +ts_xbox = 30; +ts_ybox = 25; +ts_cnrrad = 10; +ts_zbox = 8; + +include + +module TestSealBox(){ ////toplevel + TestSealBoxBox(); + translate(ts_cidoff) + Commitid_BestCount([ts_xbox,ts_ybox] - 2*ts_cidoff); +} + +module TestSealLid(){ ////toplevel + difference(){ + TestSealBoxLid(); + + translate([ts_xbox * .75, ts_ybox/2, 0]) + cylinder(h=100, r=5); + + translate([-wallthick + ts_cnrrad*.5, + ts_cnrrad*.5 - wallthick, + ts_zbox + ceilth]) + Commitid_BestCount([ts_xbox * .75 - 2.5 - (ts_cnrrad*.5), + ts_ybox - (ts_cnrrad*.5 - wallthick)*2]); + } } -module TestSealBox(){ - TestSealDoBoxShape(`TestSealWallProfile()'); +module TestSealLidPrint(){ ////toplevel + rotate([180,0,0]) TestSealLid(); } +module ProfileDemos(){ + WallProfile(); + color("blue") FloorProfile(); + LidProfile(); + color("blue") CeilProfile(); +} + //TestWall(); -//TestSealWallProfile(); -TestSealBox(); - +//ProfileDemos(); +//TestSealBox(); +//TestSealLid(); +//FArcSegment_mask(350);