summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--delta.jscad53
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
@@ -798,12 +798,65 @@ function platform() {
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],