X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=bike-lipo-box.scad;h=b8a6e424c8b6964703c43ba041beb7c56755236a;hb=92af6ed83ac2df14bf5bce61a44e2419c248916e;hp=e03d45c7aaca0324b6e825a8d812b5de573cc7f6;hpb=f4b292ecf8dc222722d86489316952844ded1924;p=reprap-play.git diff --git a/bike-lipo-box.scad b/bike-lipo-box.scad index e03d45c..b8a6e42 100644 --- a/bike-lipo-box.scad +++ b/bike-lipo-box.scad @@ -1,6 +1,11 @@ // -*- C -*- -pxp6012_rad = 22.5 / 2 + 0.5; +include +include +include +include + +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; @@ -9,10 +14,52 @@ s1930_y_outer = 36.4 + 0.2; s1930_x_outer = 27.6 + 0.2; s1930_recess = 3; +s1930_around = 3; +s1930_behind = 3; + +totx_inner = 180; +toty_outer = 95; +totz_inner = 28.0; + +wallthick = 2.5; + +cabledia = 8.7; + +strap_w = 5; +strap_th = 4; +strap_pillar = 3; +strap_pillard = 5; +strap_over = 2; + +// calculated + +totx_outer = totx_inner + wallthick*2; +toty_inner = toty_outer - wallthick*2; +totz_outer = totz_inner + wallthick*2; -wallthick = 3.0; +sb_box_sz = [totx_outer, totz_outer, toty_inner]; + +// 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); +} + +module TestWall(){ ////toplevel + sw_ctr = [25, wallthick, 25]; -module TestWall(){ rotate([0,0,-90]){ difference(){ union(){ @@ -22,8 +69,137 @@ module TestWall(){ translate([30, -1, 20]) rotate([-90,0,0]) cylinder(r = pxp6012_rad, h=10, $fn=60); + + rotate([90,0,0]) + Commitid_BestCount([15,40]); } } + + difference(){ + union(){ + cube([50, wallthick, 50]); + translate(sw_ctr) + rotate([0,0,90]) + S1930_Positive(); + } + + translate(sw_ctr) { + rotate([0,0,90]) + S1930_Negative(); + } + } +} + +ts_totx = 30; +ts_toty = 25; +ts_totz_inner = 8; + +ts_box_sz = [ts_totx, ts_toty, ts_totz_inner]; + +$sealingbox_wallth = wallthick; +$sealingbox_floorth = wallthick; +$sealingbox_ceilth = wallthick; + +module TestSealBox(){ ////toplevel + $sealingbox_sz = ts_box_sz; + + SealingBox_RectBox(); + ts_cidoff = ($sealingbox_cnrrad * (1-.7) + wallthick * .8) * [1,1]; + translate(ts_cidoff) + Commitid_BestCount([ts_totx,ts_toty] - 2*ts_cidoff); +} + +module TestSealLid(){ ////toplevel + $sealingbox_sz = ts_box_sz; + + difference(){ + SealingBox_RectLid(); + + translate([ts_totx * .75, ts_toty/2, 0]) + cylinder(h=100, r=5); + + translate([-wallthick + $sealingbox_cnrrad*.5, + $sealingbox_cnrrad*.5 - wallthick, + ts_totz_inner + $sealingbox_ceilth]) + Commitid_BestCount([ts_totx * .75 - 2.5 - ($sealingbox_cnrrad*.5), + ts_toty - ($sealingbox_cnrrad*.5 - wallthick)*2]); + } +} + +module TestSealLidPrint(){ ////toplevel + rotate([180,0,0]) TestSealLid(); +} + +module ProfileDemos(){ ////toplevel + $sealingbox_sz = ts_box_sz; + + SealingBox_WallProfile(); + color("blue") SealingBox_FloorProfile(); + SealingBox_LidProfile(); + color("blue") SealingBox_CeilProfile(); + color("red") translate([-5,0]) square([1,ts_totz_inner]); +} + +module AtGlands(){ + for (dgy=[-15,-45]) { + translate([totx_inner + wallthick - $sealingbox_cnrrad * .3, + toty_inner + dgy, + totz_inner/2]) + children(); + } +} + +module Box(){ ////toplevel + $sealingbox_sz = sb_box_sz; + + chargingconn_x = pxp6012_rad_outer + 1 + $sealingbox_cnrrad; + switch_x = chargingconn_x + pxp6012_rad_outer + + s1930_y_outer/2 + s1930_around; + + strap_x_tot = strap_w + strap_pillar*2; + + difference(){ + union(){ + rotate([90,0,0]) + translate([-wallthick,-wallthick, -toty_inner]) + SealingBox_RectBox(); + + translate([switch_x, toty_inner, totz_inner/2]) + rotate([90,0,90]) + S1930_Positive(); + + // keepers for lipo + for (kx= [ 40, 80, 120 ]) { + translate([kx, 40, -1]) + cube([10, 5, 8 +1]); + } + + AtGlands() + GlandPositive(cabledia); + } + + // charging connector + translate([chargingconn_x, + toty_inner - (pxp6012_rad_outer + 5), + 10]) + cylinder(r= pxp6012_rad, h= totz_outer); + + translate([switch_x, toty_inner, totz_inner/2]) + rotate([90,0,90]) + S1930_Negative(); + + AtGlands() + GlandNegative(cabledia); + } +} + +module BoxPrint(){ ////toplevel + rotate([-90,0,0]) + Box(); } -TestWall(); +//TestWall(); +//ProfileDemos(); +//TestSealBox(); +//TestSealLid(); +//FArcSegment_mask(350);