summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (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
@@ -665,12 +665,68 @@ function foot_foot() {
665 })); 665 }));
666 rv.properties.c_foot = new CSG.Connector([0,0,F.foot.ho],[0,0,1],[1,0,0]); 666 rv.properties.c_foot = new CSG.Connector([0,0,F.foot.ho],[0,0,1],[1,0,0]);
667 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 667 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
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;
674 return union([ 730 return union([
675 CSG.roundedCylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), 731 CSG.roundedCylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]),
676 CSG.roundedCylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), 732 CSG.roundedCylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]),