summaryrefslogtreecommitdiffabout
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
parentcc491344eef63b1a0d826de3864a33ff989e94cf (diff)
downloadredelta-af783b9334f536d8adde19d39ed948c5274fe948.zip
redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.gz
redelta-af783b9334f536d8adde19d39ed948c5274fe948.tar.bz2
duet holder
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
@@ -647,48 +647,104 @@ function foot() {
647 ]).union(CSG.cylinder({ // bridging patch 647 ]).union(CSG.cylinder({ // bridging patch
648 start: [0,0,F.h-F.nut.h-PRINT.play_tolerance-PRINT.layer_height], 648 start: [0,0,F.h-F.nut.h-PRINT.play_tolerance-PRINT.layer_height],
649 end: [0,0,F.h-F.nut.h-PRINT.play_tolerance], 649 end: [0,0,F.h-F.nut.h-PRINT.play_tolerance],
650 radius: F.nut.d/2 650 radius: F.nut.d/2
651 })); 651 }));
652 rv.properties.c_column = new CSG.Connector([0,0,F.h],[0,0,1],[1,0,0]); 652 rv.properties.c_column = new CSG.Connector([0,0,F.h],[0,0,1],[1,0,0]);
653 rv.properties.P = new CSG.Connector([0,0,F.h],[0,0,-1],[1,0,0]); 653 rv.properties.P = new CSG.Connector([0,0,F.h],[0,0,-1],[1,0,0]);
654 return rv.setColor(CONFIG.color.parts); 654 return rv.setColor(CONFIG.color.parts);
655} 655}
656function foot_foot() { 656function foot_foot() {
657 // TODO: connect in the altogethernow? 657 // TODO: connect in the altogethernow?
658 var F = CONFIG.foot; 658 var F = CONFIG.foot;
659 var rv = CSG.cylinder({ 659 var rv = CSG.cylinder({
660 start: [0,0,0], end: [0,0,F.foot.ho], 660 start: [0,0,0], end: [0,0,F.foot.ho],
661 radius: F.bolt.hd/2+F.margin 661 radius: F.bolt.hd/2+F.margin
662 }).union(CSG.cylinder({ 662 }).union(CSG.cylinder({
663 start: [0,0,0], end: [0,0,F.foot.ho+F.foot.hi], 663 start: [0,0,0], end: [0,0,F.foot.ho+F.foot.hi],
664 radius: F.bolt.hd/2+PRINT.play_tolerance-PRINT.fit_tolerance 664 radius: F.bolt.hd/2+PRINT.play_tolerance-PRINT.fit_tolerance
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]),
677 CSG.roundedCylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) 733 CSG.roundedCylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g])
678 ]); 734 ]);
679} 735}
680 736
681function P(x) { 737function P(x) {
682 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); 738 return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0);
683} 739}
684 740
685var PARTS = { 741var PARTS = {
686 wip: function(params) { 742 wip: function(params) {
687 return foot(); 743 return foot();
688 return union(base_extrusions(),column_extrusions(),duet()); 744 return union(base_extrusions(),column_extrusions(),duet());
689 alltogethernow: function(params) { 745 alltogethernow: function(params) {
690 var cols = columns(); 746 var cols = columns();
691 var sides = base_sides(); 747 var sides = base_sides();
692 var feet = THREEWINDS.map(function(w,i) { 748 var feet = THREEWINDS.map(function(w,i) {
693 var rv = foot(); 749 var rv = foot();
694 rv = rv.connectTo(rv.properties.c_column,cols[i].properties.c_bottom,false,0); 750 rv = rv.connectTo(rv.properties.c_column,cols[i].properties.c_bottom,false,0);