-rw-r--r-- | delta.jscad | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad index 12bdb97..e9fb773 100644 --- a/delta.jscad +++ b/delta.jscad @@ -792,24 +792,77 @@ function glass() { rv.properties.vitamin = true; return rv.setColor(CONFIG.color.glass); } function platform() { var b = heatbed(); var g = glass(); g = g.connectTo(g.properties.c_bed,b.properties.c_glass,false,0); return b.union(g); } function bedholder(params) { var h0 = CONFIG.foot.h+CONFIG.extrusion.w*2+CONFIG.base.gap; + var e_h=E2020.T.thickness; // height of the bump for extrusion + var e_w=E2020.slot_width-PRINT.fit_tolerance; // width of the bump for extrusion + var e_o=E2020.slot_width+PRINT.fit_tolerance; // opening for the T-Nut width + var rv = CSG.cylinder({ + start: [0,0,h0], end: [0,0,h0+CONFIG.bedholder.h], + radiusStart: CD.base.outer_inscription_r, + radiusEnd: CD.base.outer_inscription_r+CONFIG.bedholder.h/2, + resolution: 240 + }); + rv=rv.intersect(CSG.cube({ + corner1: [-CONFIG.extrusion.w/2,-CD.base.inner_inscription_r,h0], + corner2: [ CONFIG.extrusion.w/2,-CD.base.mid_inscription_r*2,h0+2*CONFIG.bedholder.h] + })); + + rv=rv.union(CSG.cube({ // bump to fix on extrusion + corner1: [-CONFIG.extrusion.w/2,-CD.base.mid_inscription_r-e_w/2,h0], + corner2: [ CONFIG.extrusion.w/2,-CD.base.mid_inscription_r+e_w/2,h0-e_h] + }).subtract( + CSG.cube({center:[0,0,0],radius:[(e_o+2*e_h)/(2*Math.sqrt(2)),e_w+2,(e_o+2*e_h)/(2*Math.sqrt(2))]}) + .rotateY(45) + .translate([0,-CD.base.mid_inscription_r,h0-e_h]) + )); + + var ebolt_s = CONFIG.bedholder.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2; + rv=rv.subtract([ + CSG.cylinder({ // base screw + start: [0,-CD.base.mid_inscription_r,h0-1], + end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1], + radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2 + }), + CSG.cylinder({ // base screw head + start: [0,-CD.base.mid_inscription_r,h0+ebolt_s], + end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1], + radius: CONFIG.bedholder.bolt.head.d/2+PRINT.play_tolerance + }) + ]); + + var nuth=h0+CONFIG.bedholder.h*3/4; + rv=rv.subtract([ + CSG.cylinder({ // bed screw + start: [0,-CONFIG.heatbed.sr,h0-1], + end: [0,-CONFIG.heatbed.sr,h0+CONFIG.bedholder.h+1], + radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2 + }), + CSG.cube({ // nut pocket + center: [0,-CONFIG.heatbed.sr,nuth], + radius: [CONFIG.extrusion.w/2+1,CONFIG.bedholder.nut.w/2+PRINT.slide_tolerance/2,CONFIG.bedholder.nut.h/2+PRINT.slide_tolerance/2] + }) + ]); + + rv.properties.P = new CSG.Connector([-CONFIG.extrusion.w/2,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h/2], + [1,0,0],[0,0,1]); + return rv.setColor(CONFIG.color.parts); var bolt_s = CONFIG.bedholder.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2; var nuth=h0+CONFIG.bedholder.h*3/4; var nutth = nuth+CONFIG.bedholder.nut.h/2+PRINT.slide_tolerance/2; var rv = CSG.roundedCube({ corner1: [-CONFIG.extrusion.w/2,-CD.base.inner_inscription_r,h0], corner2: [ CONFIG.extrusion.w/2,-CONFIG.heatbed.sr-3/2-CONFIG.bedholder.margin,h0+CONFIG.bedholder.h], roundradius: CONFIG.bedholder.margin }); rv = rv.subtract([ CSG.cylinder({ // base screw start: [0,-CD.base.mid_inscription_r,h0-1], end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1], |