X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=bike-lipo-box.scad;h=edd37010cdfd9ac36149516b4d99796deace7ec8;hp=72f506b87de5d1e2bc69bc765f7d42e55acb62e1;hb=f1824fce4c0b4420e0ba377d8d8a4e43e42e4a7d;hpb=a02eab8cded35d6896231945053aa422ffb3f74a diff --git a/bike-lipo-box.scad b/bike-lipo-box.scad index 72f506b..edd3701 100644 --- a/bike-lipo-box.scad +++ b/bike-lipo-box.scad @@ -17,20 +17,33 @@ s1930_recess = 3; s1930_around = 3; s1930_behind = 3; +jdae12pa_rad = 12 / 2 + 0.5; +jdae12pa_rad_outer = 19 / 2 + 0.5; // head of an "M12 bolt" + totx_inner = 180; toty_outer = 95; -totz_inner = 28.0; +totz_inner = 27.0; wallthick = 2.5; cabledia = 8.7; -strap_w = 5; -strap_th = 4; +strap_w = 5 + 1; +strap_th = 4 + 1; strap_pillar = 3; strap_pillard = 5; strap_over = 2; +lipokeeper_w = 10; +lipokeeper_h = 8; +lipokeeper_d_min = 2; +lipokeeper_slope = 0.75; +lipokeeper_end_h = 12; +lipokeeper_end_d_min = 15; + +straps_at_box = [45, 95, 125, 160]; +straps_every = 30; + // calculated totx_outer = totx_inner + wallthick*2; @@ -149,19 +162,37 @@ module AtGlands(){ } } -module Box(){ ////toplevel - $sealingbox_sz = sb_box_sz; +module StrapKeepers(at){ + strap_x_tot = strap_w + strap_pillar*2; - chargingconn_x = pxp6012_rad_outer + 1 + $sealingbox_cnrrad; - switch_x = chargingconn_x + pxp6012_rad_outer - + s1930_y_outer/2 + s1930_around; + for (sx= at) { + echo("strapkeeper at ",sx); + translate([sx - strap_x_tot, 0, 0]) + difference(){ + translate([0,0, -0.1]) + cube([strap_x_tot, strap_pillard, strap_th + strap_over]); + translate([strap_pillar, -1, 0]) + cube([strap_w, strap_pillard+2, strap_th]); + } + } +} - strap_x_tot = strap_w + strap_pillar*2; +chargingconn_x = pxp6012_rad_outer + 1 + $sealingbox_cnrrad; +switch_x = chargingconn_x + pxp6012_rad_outer + + s1930_y_outer/2 + s1930_around; + +module AtSealingBox(){ + rotate([90,0,0]) + translate([-wallthick,-wallthick, -toty_inner]) + children(); +} + +module Box(){ ////toplevel + $sealingbox_sz = sb_box_sz; difference(){ union(){ - rotate([90,0,0]) - translate([-wallthick,-wallthick, -toty_inner]) + AtSealingBox() SealingBox_RectBox(); translate([switch_x, toty_inner, totz_inner/2]) @@ -169,13 +200,28 @@ module Box(){ ////toplevel S1930_Positive(); // keepers for lipo - for (kx= [ 40, 80, 120 ]) { - translate([kx, 40, -1]) - cube([10, 5, 8 +1]); + for (keepers= [[ 35, lipokeeper_d_min, lipokeeper_h, + [ 40, 80, 120, 150 ] ], + [ 10, lipokeeper_end_d_min, lipokeeper_end_h, + [ 25 ] ] + // each entry: [ y, d_min, h, [ x, ...] ] + ]) + for (kx= keepers[3]) { + translate([kx, keepers[0], -1]) + hull(){ + cube([lipokeeper_w, keepers[1], keepers[2] +1]); + cube([lipokeeper_w, + keepers[1] + keepers[2] / lipokeeper_slope, + 1]); + } } AtGlands() GlandPositive(cabledia); + + translate([0, toty_inner+wallthick, -wallthick]) + rotate([180, 0,0]) + StrapKeepers(straps_at_box); } // charging connector @@ -184,6 +230,13 @@ module Box(){ ////toplevel 10]) cylinder(r= pxp6012_rad, h= totz_outer); + // vent connector + translate([chargingconn_x, + toty_inner - (pxp6012_rad_outer*2 + 5 + 15 + + jdae12pa_rad_outer), + 10]) + cylinder(r= jdae12pa_rad, h= totz_outer); + translate([switch_x, toty_inner, totz_inner/2]) rotate([90,0,90]) S1930_Negative(); @@ -191,19 +244,51 @@ module Box(){ ////toplevel AtGlands() GlandNegative(cabledia); - translate($sealingbox_cnrrad * [1,1,0] + - [0, toty_inner/2, -wallthick]) + translate(-$sealingbox_cnrrad * [1,1,0] + + [totx_inner, toty_inner/2, -wallthick]) + rotate([0,0,180]) + scale([2,2,1]) Commitid_Full16_M(); } } module BoxPrint(){ ////toplevel - rotate([-90,0,0]) + rotate([-90,0,-90]) Box(); } +module Lid(){ ////toplevel + $sealingbox_sz = sb_box_sz; + difference(){ + union(){ + AtSealingBox() + SealingBox_RectLid(); + translate([0, -wallthick, -SealingBox_lidbigger()]) + mirror([0,0,1]) + StrapKeepers([ straps_every : straps_every + : totx_inner-straps_every ]); + } + + translate($sealingbox_cnrrad * [1,0,1]) + rotate([90,0,0]) + scale([1.5, 1.5, 1]) + Commitid_Small16_M(); + } +} + +module LidPrint(){ ////toplevel + rotate([90,0,-90]) + Lid(); +} + +module Demo(){ ////toplevel + color("blue") Box(); + color("red") Lid(); +} + //TestWall(); //ProfileDemos(); //TestSealBox(); //TestSealLid(); //FArcSegment_mask(350); +//StrapKeepers();