-rw-r--r-- | delta.jscad | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/delta.jscad b/delta.jscad index 54f1f86..7384ecf 100644 --- a/delta.jscad +++ b/delta.jscad @@ -680,129 +680,131 @@ function duetholder() { var hl = DHD.distance-CONFIG.extrusion.w; var rv = union([ CSG.cube({ // vertical corner1: [-hw/2,s,CONFIG.extrusion.w], corner2: [hw/2,0,-lower] }), CSG.cube({ // horizontal extrusion corner1: [-hw/2,-CONFIG.extrusion.w,0], corner2: [ hw/2,0,-s] }), CSG.cube({ // horizontal corner1: [-hw/2,0,-lower], corner2: [hw/2,hl,-lower+DH.s] }), CSG.cylinder({ // boltend of horizontal part start: [0,hl,-lower], end: [0,hl,-lower+DH.s], radius: hw/2 }) ]); rv = rv.subtract([ CSG.cylinder({ // through vertical start: [0,-1,CONFIG.extrusion.w/2], end: [0,s+1,CONFIG.extrusion.w/2], radius: DH.bolt.d/2+PRINT.slide_tolerance }), CSG.cylinder({ // through horizontal to extrusion start: [0,-CONFIG.extrusion.w/2,-s-1], end: [0,-CONFIG.extrusion.w/2,1], radius: DH.bolt.d/2+PRINT.slide_tolerance }), CSG.cube({ // cut off corner1: [-hw/2-1,-2*s,0], corner2: [hw/2+1,0,-2*s] }).rotateX(45).translate([0,-CONFIG.extrusion.w,0]), CSG.cylinder({ // duet bolt start: [0,hl,-lower], end: [0,hl,-lower+DH.s], radius: DH.bolt.d/2+PRINT.slide_tolerance }) ]); 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.P = new CSG.Connector( + [0,0,-CONFIG.foot.h-CONFIG.extrusion.w*2-CONFIG.base.gap-CONFIG.bedholder.h], + [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); } var PARTS = { wip: function(params) { return duetholder(params); return PARTS.alltogethernow(params); return base_extrusions(); return foot(); return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0])); }, alltogethernow: function(params) { var cols = columns(); var sides = base_sides(); var feet = THREEWINDS.map(function(w,i) { var rv = foot(); rv = rv.connectTo(rv.properties.c_column,cols[i].properties.c_bottom,false,0); var s = shoe(); s = s.connectTo(s.properties.c_foot,rv.properties.c_shoe,false,0); return rv.union(s); }); 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 ]); |