-rw-r--r-- | delta.jscad | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad index 9061c28..83122af 100644 --- a/delta.jscad +++ b/delta.jscad @@ -724,8 +724,43 @@ function duetholder() { rv.properties.P = new CSG.Connector([-hw/2,0,0],[1,0,0],[0,1,0]); return rv.setColor(CONFIG.color.parts); } +function heatbed() { + var rv = CSG.cylinder({ + start: [0,0,0], end: [0,0,CONFIG.heatbed.h], + radius: CONFIG.heatbed.r, resolution: 72 + }); + var screw = CSG.cylinder({ + start: [0,-CONFIG.heatbed.sr,-1], + end: [0,-CONFIG.heatbed.sr,CONFIG.heatbed.h+1], + radius: 3/2 + }); + var screws = []; + for(var a=0;a<360;a+=60) screws.push(screw.rotateZ(a)); // TODO: connectors + rv = rv.subtract(screws); + rv.properties.c_glass = new CSG.Connector([0,0,CONFIG.heatbed.h],[0,0,1],[1,0,0]); + rv.properties.P = new CSG.Connector([0,0,-CONFIG.foot.h-CONFIG.extrusion.w*2-CONFIG.base.gap],[0,0,1],[1,0,0]); + rv.properties.vitamin = true; + return rv.setColor(CONFIG.color.heatbed); +} +function glass() { + var rv = CSG.cylinder({ + start: [0,0,0], end: [0,0,CONFIG.glass.h], + radius: CONFIG.glass.r, resolution: 72 + }); + rv.properties.c_bed = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); + rv.properties.P = new CSG.Connector([0,0,-CONFIG.foot.h-CONFIG.heatbed.h],[0,0,1],[1,0,0]); + 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 refaxes(o) { if(!o) o = {}; var l = o.l||20, g = o.g||0.7; return union([ @@ -768,8 +803,10 @@ var PARTS = { var dhnw = dh.connectTo(dh.properties.duet.c_nw,d.properties.holes.c_nw,false,0); var rv = union(cols).union(sides.map(union)).union(feet).union([ d,dhsw,dhse,dhne,dhnw ]); + var p = P(platform()); + rv = rv.union(p); rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); return rv; }, duetholder: function(params) { |