summaryrefslogtreecommitdiffabout
path: root/delta.jscad
authorMichael Krelin <hacker@klever.net>2016-01-08 22:12:54 (UTC)
committer Michael Krelin <hacker@klever.net>2016-01-08 22:12:54 (UTC)
commit34a65279effcec5f51a9853846f6593dadb72246 (patch) (unidiff)
tree940d9336e321939778770b7fd5d59da5946aacec /delta.jscad
parent27efa0c51613605858ead6186af5b7e47f50c687 (diff)
downloadredelta-34a65279effcec5f51a9853846f6593dadb72246.zip
redelta-34a65279effcec5f51a9853846f6593dadb72246.tar.gz
redelta-34a65279effcec5f51a9853846f6593dadb72246.tar.bz2
duet holder in alltogethernow
Diffstat (limited to 'delta.jscad') (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad13
1 files changed, 12 insertions, 1 deletions
diff --git a/delta.jscad b/delta.jscad
index 855d4f9..01a5dc7 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -657,177 +657,188 @@ function 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() { 671function duetholder() {
672 var DH = CONFIG.duetholder; 672 var DH = CONFIG.duetholder;
673 var DHD = CD.duetholder; 673 var DHD = CD.duetholder;
674 var hw = DH.bolt.head.d+2*DH.margin; 674 var hw = DH.bolt.head.d+2*DH.margin;
675 var s = DH.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2; 675 var s = DH.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2;
676 var lower = CONFIG.foot.h-2*DH.s; 676 var lower = CONFIG.foot.h-2*DH.s;
677 var hl = DHD.distance-CONFIG.extrusion.w; 677 var hl = DHD.distance-CONFIG.extrusion.w;
678 var rv = union([ 678 var rv = union([
679 CSG.cube({ // vertical 679 CSG.cube({ // vertical
680 corner1: [-hw/2,s,CONFIG.extrusion.w], 680 corner1: [-hw/2,s,CONFIG.extrusion.w],
681 corner2: [hw/2,0,-lower] 681 corner2: [hw/2,0,-lower]
682 }), 682 }),
683 CSG.cube({ // horizontal extrusion 683 CSG.cube({ // horizontal extrusion
684 corner1: [-hw/2,-CONFIG.extrusion.w,0], 684 corner1: [-hw/2,-CONFIG.extrusion.w,0],
685 corner2: [ hw/2,0,-s] 685 corner2: [ hw/2,0,-s]
686 }), 686 }),
687 CSG.cube({ // horizontal 687 CSG.cube({ // horizontal
688 corner1: [-hw/2,0,-lower], 688 corner1: [-hw/2,0,-lower],
689 corner2: [hw/2,hl,-lower+DH.s] 689 corner2: [hw/2,hl,-lower+DH.s]
690 }), 690 }),
691 CSG.cylinder({ // boltend of horizontal part 691 CSG.cylinder({ // boltend of horizontal part
692 start: [0,hl,-lower], end: [0,hl,-lower+DH.s], 692 start: [0,hl,-lower], end: [0,hl,-lower+DH.s],
693 radius: hw/2 693 radius: hw/2
694 }) 694 })
695 ]); 695 ]);
696 rv = rv.subtract([ 696 rv = rv.subtract([
697 CSG.cylinder({ // through vertical 697 CSG.cylinder({ // through vertical
698 start: [0,-1,CONFIG.extrusion.w/2], end: [0,s+1,CONFIG.extrusion.w/2], 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 699 radius: DH.bolt.d/2+PRINT.slide_tolerance
700 }), 700 }),
701 CSG.cylinder({ // through horizontal to extrusion 701 CSG.cylinder({ // through horizontal to extrusion
702 start: [0,-CONFIG.extrusion.w/2,-s-1], 702 start: [0,-CONFIG.extrusion.w/2,-s-1],
703 end: [0,-CONFIG.extrusion.w/2,1], 703 end: [0,-CONFIG.extrusion.w/2,1],
704 radius: DH.bolt.d/2+PRINT.slide_tolerance 704 radius: DH.bolt.d/2+PRINT.slide_tolerance
705 }), 705 }),
706 CSG.cube({ // cut off 706 CSG.cube({ // cut off
707 corner1: [-hw/2-1,-2*s,0], 707 corner1: [-hw/2-1,-2*s,0],
708 corner2: [hw/2+1,0,-2*s] 708 corner2: [hw/2+1,0,-2*s]
709 }).rotateX(45).translate([0,-CONFIG.extrusion.w,0]), 709 }).rotateX(45).translate([0,-CONFIG.extrusion.w,0]),
710 CSG.cylinder({ // duet bolt 710 CSG.cylinder({ // duet bolt
711 start: [0,hl,-lower], end: [0,hl,-lower+DH.s], 711 start: [0,hl,-lower], end: [0,hl,-lower+DH.s],
712 radius: DH.bolt.d/2+PRINT.slide_tolerance 712 radius: DH.bolt.d/2+PRINT.slide_tolerance
713 }) 713 })
714 ]); 714 ]);
715 var cp = [0,hl,-lower+DH.s]; 715 var cp = [0,hl,-lower+DH.s];
716 rv.properties.duet = new CSG.Properties(); 716 rv.properties.duet = new CSG.Properties();
717 rv.properties.duet.c_sw = new CSG.Connector(cp,[0,0,1],[1,0,0]); 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]); 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]); 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]); 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]); 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]); 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]); 723 rv.properties.P = new CSG.Connector([-hw/2,0,0],[1,0,0],[0,1,0]);
724 return rv.setColor(CONFIG.color.parts); 724 return rv.setColor(CONFIG.color.parts);
725} 725}
726 726
727function refaxes(o) { 727function refaxes(o) {
728 if(!o) o = {}; 728 if(!o) o = {};
729 var l = o.l||20, g = o.g||0.7; 729 var l = o.l||20, g = o.g||0.7;
730 return union([ 730 return union([
731 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]),
732 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]),
733 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])
734 ]); 734 ]);
735} 735}
736 736
737function P(x) { 737function P(x) {
738 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);
739} 739}
740 740
741var PARTS = { 741var PARTS = {
742 wip: function(params) { 742 wip: function(params) {
743 return foot(); 743 return foot();
744 return union(base_extrusions(),column_extrusions(),duet()); 744 return union(base_extrusions(),column_extrusions(),duet());
745 alltogethernow: function(params) { 745 alltogethernow: function(params) {
746 var cols = columns(); 746 var cols = columns();
747 var sides = base_sides(); 747 var sides = base_sides();
748 var feet = THREEWINDS.map(function(w,i) { 748 var feet = THREEWINDS.map(function(w,i) {
749 var rv = foot(); 749 var rv = foot();
750 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);
751 return rv; 751 return rv;
752 }); 752 });
753 var rv = union(cols).union(sides.map(union)).union(feet); 753 var dh = duetholder();
754 var dhsw = dh.connectTo(dh.properties.c_h,
755 new CSG.Connector([-CONFIG.duet.hole_spacing.x/2,-CD.base.mid_inscription_r,CONFIG.foot.h],[0,0,1],[1,0,0]),
756 false,0);
757 var d = duet();
758 d = d.connectTo(d.properties.holes.c_sw,dhsw.properties.duet.c_sw,false,0);
759 var dhse = dh.connectTo(dh.properties.duet.c_se,d.properties.holes.c_se,false,0);
760 var dhne = dh.connectTo(dh.properties.duet.c_ne,d.properties.holes.c_ne,false,0);
761 var dhnw = dh.connectTo(dh.properties.duet.c_nw,d.properties.holes.c_nw,false,0);
762 var rv = union(cols).union(sides.map(union)).union(feet).union([
763 d,dhsw,dhse,dhne,dhnw
764 ]);
754 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 765 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
755 return rv; 766 return rv;
756 }, 767 },
757 duetholder: function(params) { 768 duetholder: function(params) {
758 return duetholder(); 769 return duetholder();
759 } 770 }
760}; 771};
761 772
762function main(params) { 773function main(params) {
763 var part = params.part && PARTS[params.part]; 774 var part = params.part && PARTS[params.part];
764 if(!part) return refaxes(); 775 if(!part) return refaxes();
765 var rv = P(part(params)); 776 var rv = P(part(params));
766 if(!params.print) rv = rv.union(refaxes()); 777 if(!params.print) rv = rv.union(refaxes());
767 return rv; 778 return rv;
768} 779}
769 780
770function _main(params) { 781function _main(params) {
771 var e = EFFECTOR.effector(); 782 var e = EFFECTOR.effector();
772 var hs = E3DV6.heatsink(); 783 var hs = E3DV6.heatsink();
773 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); 784 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0);
774 var ms = microswitch(); 785 var ms = microswitch();
775 var hd = EFFECTOR.hinged({ 786 var hd = EFFECTOR.hinged({
776 microswitch:ms,effector:e 787 microswitch:ms,effector:e
777 }); 788 });
778 ms = ms.connectTo( 789 ms = ms.connectTo(
779 ms.properties.screw_connector[0], 790 ms.properties.screw_connector[0],
780 hd.properties.microswitch_screw_connector[0], 791 hd.properties.microswitch_screw_connector[0],
781 false, 0); 792 false, 0);
782 var hdhd = EFFECTOR.split_hinged(hd); 793 var hdhd = EFFECTOR.split_hinged(hd);
783 var fh = EFFECTOR.fanholder(); 794 var fh = EFFECTOR.fanholder();
784 return union({ 795 return union({
785 platform: e, 796 platform: e,
786 hinged: hdhd[1], 797 hinged: hdhd[1],
787 clamp: hdhd[0], 798 clamp: hdhd[0],
788 fanholder: fh, 799 fanholder: fh,
789 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh] 800 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh]
790 }[params.part||'alltogethernow']) 801 }[params.part||'alltogethernow'])
791 var rv = union( 802 var rv = union(
792 e, 803 e,
793 hs, 804 hs,
794 columns(), 805 columns(),
795 ///hd, 806 ///hd,
796 hdhd[0], hdhd[1], 807 hdhd[0], hdhd[1],
797 ms); 808 ms);
798 return rv; 809 return rv;
799} 810}
800 811
801function getParameterDefinitions() { 812function getParameterDefinitions() {
802 return [{ 813 return [{
803 name: 'part', 814 name: 'part',
804 type: 'choice', 815 type: 'choice',
805 values: [ 816 values: [
806 'platform', 817 'platform',
807 'hinged', 818 'hinged',
808 'clamp', 819 'clamp',
809 'fanholder', 820 'fanholder',
810 'duetholder', 821 'duetholder',
811 'alltogethernow', 822 'alltogethernow',
812 'wip' 823 'wip'
813 ], 824 ],
814 captions: [ 825 captions: [
815 'Effector platform', 826 'Effector platform',
816 'Hinged part', 827 'Hinged part',
817 'Clamp', 828 'Clamp',
818 'Fan holder', 829 'Fan holder',
819 'Duet holder', 830 'Duet holder',
820 'All together now!', 831 'All together now!',
821 'Work in progress' 832 'Work in progress'
822 ], 833 ],
823 caption: 'Part', 834 caption: 'Part',
824 initial: 'wip' 835 initial: 'wip'
825 },{ 836 },{
826 name: 'print', 837 name: 'print',
827 type: 'checkbox', 838 type: 'checkbox',
828 caption: 'For print, no nonsense', 839 caption: 'For print, no nonsense',
829 initial: false 840 initial: false
830 }]; 841 }];
831} 842}
832 843
833/* vim:set ft=javascript ai: */ 844/* vim:set ft=javascript ai: */