summaryrefslogtreecommitdiffabout
path: root/delta.jscad
authorMichael Krelin <hacker@klever.net>2016-01-08 22:12:09 (UTC)
committer Michael Krelin <hacker@klever.net>2016-01-08 22:12:09 (UTC)
commitaf783b9334f536d8adde19d39ed948c5274fe948 (patch) (unidiff)
treec9a85455457bd4812ee175f823a98c1c5e0d5b54 /delta.jscad
parentcc491344eef63b1a0d826de3864a33ff989e94cf (diff)
downloadredelta-af783b9334f536d8adde19d39ed948c5274fe948.zip
redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.gz
redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.bz2
duet holder
Diffstat (limited to 'delta.jscad') (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad56
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() {
668 return rv.setColor(CONFIG.color.softparts); 668 return rv.setColor(CONFIG.color.softparts);
669} 669}
670 670
671function duetholder() {
672 var DH = CONFIG.duetholder;
673 var DHD = CD.duetholder;
674 var hw = DH.bolt.head.d+2*DH.margin;
675 var s = DH.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2;
676 var lower = CONFIG.foot.h-2*DH.s;
677 var hl = DHD.distance-CONFIG.extrusion.w;
678 var rv = union([
679 CSG.cube({ // vertical
680 corner1: [-hw/2,s,CONFIG.extrusion.w],
681 corner2: [hw/2,0,-lower]
682 }),
683 CSG.cube({ // horizontal extrusion
684 corner1: [-hw/2,-CONFIG.extrusion.w,0],
685 corner2: [ hw/2,0,-s]
686 }),
687 CSG.cube({ // horizontal
688 corner1: [-hw/2,0,-lower],
689 corner2: [hw/2,hl,-lower+DH.s]
690 }),
691 CSG.cylinder({ // boltend of horizontal part
692 start: [0,hl,-lower], end: [0,hl,-lower+DH.s],
693 radius: hw/2
694 })
695 ]);
696 rv = rv.subtract([
697 CSG.cylinder({ // through vertical
698 start: [0,-1,CONFIG.extrusion.w/2], end: [0,s+1,CONFIG.extrusion.w/2],
699 radius: DH.bolt.d/2+PRINT.slide_tolerance
700 }),
701 CSG.cylinder({ // through horizontal to extrusion
702 start: [0,-CONFIG.extrusion.w/2,-s-1],
703 end: [0,-CONFIG.extrusion.w/2,1],
704 radius: DH.bolt.d/2+PRINT.slide_tolerance
705 }),
706 CSG.cube({ // cut off
707 corner1: [-hw/2-1,-2*s,0],
708 corner2: [hw/2+1,0,-2*s]
709 }).rotateX(45).translate([0,-CONFIG.extrusion.w,0]),
710 CSG.cylinder({ // duet bolt
711 start: [0,hl,-lower], end: [0,hl,-lower+DH.s],
712 radius: DH.bolt.d/2+PRINT.slide_tolerance
713 })
714 ]);
715 var cp = [0,hl,-lower+DH.s];
716 rv.properties.duet = new CSG.Properties();
717 rv.properties.duet.c_sw = new CSG.Connector(cp,[0,0,1],[1,0,0]);
718 rv.properties.duet.c_se = new CSG.Connector(cp,[0,0,1],[1,0,0]);
719 rv.properties.duet.c_ne = new CSG.Connector(cp,[0,0,1],[-Math.cos(Math.PI/3),-Math.sin(Math.PI/3),0]);
720 rv.properties.duet.c_nw = new CSG.Connector(cp,[0,0,1],[-Math.cos(Math.PI/3),Math.sin(Math.PI/3),0]);
721 rv.properties.c_h = new CSG.Connector([0,-CONFIG.extrusion.w/2,0],[0,0,1],[1,0,0]);
722 rv.properties.c_v = new CSG.Connector([0,0,CONFIG.extrusion.w/2],[0,-1,0],[0,0,1]);
723 rv.properties.P = new CSG.Connector([-hw/2,0,0],[1,0,0],[0,1,0]);
724 return rv.setColor(CONFIG.color.parts);
725}
726
671function refaxes(o) { 727function refaxes(o) {
672 if(!o) o = {}; 728 if(!o) o = {};
673 var l = o.l||20, g = o.g||0.7; 729 var l = o.l||20, g = o.g||0.7;