author | Michael Krelin <hacker@klever.net> | 2016-01-08 22:12:09 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2016-01-08 22:12:09 (UTC) |
commit | af783b9334f536d8adde19d39ed948c5274fe948 (patch) (side-by-side diff) | |
tree | c9a85455457bd4812ee175f823a98c1c5e0d5b54 | |
parent | cc491344eef63b1a0d826de3864a33ff989e94cf (diff) | |
download | redelta-af783b9334f536d8adde19d39ed948c5274fe948.zip redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.gz redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.bz2 |
duet holder
-rw-r--r-- | delta.jscad | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad index 5c63b41..dcf6fcc 100644 --- a/delta.jscad +++ b/delta.jscad @@ -668,6 +668,62 @@ function foot_foot() { return rv.setColor(CONFIG.color.softparts); } +function duetholder() { + var DH = CONFIG.duetholder; + var DHD = CD.duetholder; + var hw = DH.bolt.head.d+2*DH.margin; + var s = DH.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2; + var lower = CONFIG.foot.h-2*DH.s; + 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 refaxes(o) { if(!o) o = {}; var l = o.l||20, g = o.g||0.7; |