author | Michael Krelin <hacker@klever.net> | 2016-01-13 09:51:01 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2016-01-13 09:51:01 (UTC) |
commit | 10e299ccac1b7e6ab393df441e7e6e24baefc3ca (patch) (side-by-side diff) | |
tree | c9014fcb02d5f2ed7b4eb8b3be56103d3b429742 | |
parent | b1ff07b6fa7c70633ee564cefb3c0325b9da60ab (diff) | |
download | redelta-10e299ccac1b7e6ab393df441e7e6e24baefc3ca.zip redelta-10e299ccac1b7e6ab393df441e7e6e24baefc3ca.tar.gz redelta-10e299ccac1b7e6ab393df441e7e6e24baefc3ca.tar.bz2 |
heatbed and glass
-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 @@ -716,24 +716,59 @@ function duetholder() { var cp = [0,hl,-lower+DH.s]; rv.properties.duet = new CSG.Properties(); rv.properties.duet.c_sw = new CSG.Connector(cp,[0,0,1],[1,0,0]); rv.properties.duet.c_se = new CSG.Connector(cp,[0,0,1],[1,0,0]); rv.properties.duet.c_ne = new CSG.Connector(cp,[0,0,1],[-Math.cos(Math.PI/3),-Math.sin(Math.PI/3),0]); rv.properties.duet.c_nw = new CSG.Connector(cp,[0,0,1],[-Math.cos(Math.PI/3),Math.sin(Math.PI/3),0]); rv.properties.c_h = new CSG.Connector([0,-CONFIG.extrusion.w/2,0],[0,0,1],[1,0,0]); rv.properties.c_v = new CSG.Connector([0,0,CONFIG.extrusion.w/2],[0,-1,0],[0,0,1]); 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([ CSG.roundedCylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), CSG.roundedCylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), CSG.roundedCylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) ]); } function P(x) { return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); @@ -760,24 +795,26 @@ var PARTS = { var dh = duetholder(); var dhsw = dh.connectTo(dh.properties.c_h, new CSG.Connector([-CONFIG.duet.hole_spacing.x/2,-CD.base.mid_inscription_r,CONFIG.foot.h],[0,0,1],[1,0,0]), false,0); var d = duet(); d = d.connectTo(d.properties.holes.c_sw,dhsw.properties.duet.c_sw,false,0); var dhse = dh.connectTo(dh.properties.duet.c_se,d.properties.holes.c_se,false,0); var dhne = dh.connectTo(dh.properties.duet.c_ne,d.properties.holes.c_ne,false,0); 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) { return duetholder(); }, foot: foot, shoe: shoe }; function main(params) { var part = params.part && PARTS[params.part]; |