summaryrefslogtreecommitdiffabout
path: root/delta.jscad
authorMichael Krelin <hacker@klever.net>2016-01-12 21:17:08 (UTC)
committer Michael Krelin <hacker@klever.net>2016-01-12 21:17:08 (UTC)
commit64a6bb173fd448fd0b8557f3ae79625380127a7e (patch) (unidiff)
tree1ed100596d79aa95899df14e3889970996629664 /delta.jscad
parent717f3676d93e8b2f8d71ea4b25461614becb79ef (diff)
downloadredelta-64a6bb173fd448fd0b8557f3ae79625380127a7e.zip
redelta-64a6bb173fd448fd0b8557f3ae79625380127a7e.tar.gz
redelta-64a6bb173fd448fd0b8557f3ae79625380127a7e.tar.bz2
added foot and shoe parts, connected to alltogethernow
Diffstat (limited to 'delta.jscad') (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad15
1 files changed, 11 insertions, 4 deletions
diff --git a/delta.jscad b/delta.jscad
index 8233e74..5621f0f 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -629,53 +629,53 @@ function foot() {
629 var r = 2*F.d; 629 var r = 2*F.d;
630 var rv = CSG.sphere({ // botom contorted sphere 630 var rv = CSG.sphere({ // botom contorted sphere
631 center: [0,0,0], radius: F.d/2, resolution: r 631 center: [0,0,0], radius: F.d/2, resolution: r
632 }).scale([1,1,F.zscalefactor]).translate([0,0,bh]).union(CSG.cylinder({ // top hat 632 }).scale([1,1,F.zscalefactor]).translate([0,0,bh]).union(CSG.cylinder({ // top hat
633 start: [0,0,bh], end: [0,0,F.h], radius: F.d/2, resolution: r 633 start: [0,0,bh], end: [0,0,F.h], radius: F.d/2, resolution: r
634 })).intersect(CSG.cylinder({ // cut off excess 634 })).intersect(CSG.cylinder({ // cut off excess
635 start: [0,0,0], end: [0,0,F.h], radius: F.d 635 start: [0,0,0], end: [0,0,F.h], radius: F.d
636 })).subtract([ 636 })).subtract([
637 CSG.cylinder({ // bolt hole 637 CSG.cylinder({ // bolt hole
638 start: [0,0,-1], end: [0,0,F.h+1], radius: F.bolt.d/2+PRINT.slide_tolerance 638 start: [0,0,-1], end: [0,0,F.h+1], radius: F.bolt.d/2+PRINT.slide_tolerance
639 }), CSG.cylinder({ // nut hole 639 }), CSG.cylinder({ // nut hole
640 start: [0,0,F.h-F.nut.h-PRINT.play_tolerance], 640 start: [0,0,F.h-F.nut.h-PRINT.play_tolerance],
641 end: [0,0,F.h], 641 end: [0,0,F.h],
642 radius: F.nut.d/2+PRINT.slide_tolerance, resolution: 6 642 radius: F.nut.d/2+PRINT.slide_tolerance, resolution: 6
643 }), CSG.cylinder({ // bolthead/washer hole 643 }), CSG.cylinder({ // bolthead/washer hole
644 start: [0,0,-1], end: [0,0,F.h-F.nut.h-PRINT.play_tolerance-F.shell], 644 start: [0,0,-1], end: [0,0,F.h-F.nut.h-PRINT.play_tolerance-F.shell],
645 radius: F.bolt.hd/2+PRINT.play_tolerance 645 radius: F.bolt.hd/2+PRINT.play_tolerance
646 }) 646 })
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.c_shoe = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
653 rv.properties.P = new CSG.Connector([0,0,F.h],[0,0,-1],[1,0,0]); 654 rv.properties.P = new CSG.Connector([0,0,F.h],[0,0,-1],[1,0,0]);
654 return rv.setColor(CONFIG.color.parts); 655 return rv.setColor(CONFIG.color.parts);
655} 656}
656function foot_foot() { 657function shoe() {
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]
@@ -731,68 +731,72 @@ function refaxes(o) {
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 duetholder(params); 743 return duetholder(params);
744 return PARTS.alltogethernow(params); 744 return PARTS.alltogethernow(params);
745 return base_extrusions(); 745 return base_extrusions();
746 return foot(); 746 return foot();
747 return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0])); 747 return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0]));
748 }, 748 },
749 alltogethernow: function(params) { 749 alltogethernow: function(params) {
750 var cols = columns(); 750 var cols = columns();
751 var sides = base_sides(); 751 var sides = base_sides();
752 var feet = THREEWINDS.map(function(w,i) { 752 var feet = THREEWINDS.map(function(w,i) {
753 var rv = foot(); 753 var rv = foot();
754 rv = rv.connectTo(rv.properties.c_column,cols[i].properties.c_bottom,false,0); 754 rv = rv.connectTo(rv.properties.c_column,cols[i].properties.c_bottom,false,0);
755 return rv; 755 var s = shoe();
756 s = s.connectTo(s.properties.c_foot,rv.properties.c_shoe,false,0);
757 return rv.union(s);
756 }); 758 });
757 var dh = duetholder(); 759 var dh = duetholder();
758 var dhsw = dh.connectTo(dh.properties.c_h, 760 var dhsw = dh.connectTo(dh.properties.c_h,
759 new CSG.Connector([-CONFIG.duet.hole_spacing.x/2,-CD.base.mid_inscription_r,CONFIG.foot.h],[0,0,1],[1,0,0]), 761 new CSG.Connector([-CONFIG.duet.hole_spacing.x/2,-CD.base.mid_inscription_r,CONFIG.foot.h],[0,0,1],[1,0,0]),
760 false,0); 762 false,0);
761 var d = duet(); 763 var d = duet();
762 d = d.connectTo(d.properties.holes.c_sw,dhsw.properties.duet.c_sw,false,0); 764 d = d.connectTo(d.properties.holes.c_sw,dhsw.properties.duet.c_sw,false,0);
763 var dhse = dh.connectTo(dh.properties.duet.c_se,d.properties.holes.c_se,false,0); 765 var dhse = dh.connectTo(dh.properties.duet.c_se,d.properties.holes.c_se,false,0);
764 var dhne = dh.connectTo(dh.properties.duet.c_ne,d.properties.holes.c_ne,false,0); 766 var dhne = dh.connectTo(dh.properties.duet.c_ne,d.properties.holes.c_ne,false,0);
765 var dhnw = dh.connectTo(dh.properties.duet.c_nw,d.properties.holes.c_nw,false,0); 767 var dhnw = dh.connectTo(dh.properties.duet.c_nw,d.properties.holes.c_nw,false,0);
766 var rv = union(cols).union(sides.map(union)).union(feet).union([ 768 var rv = union(cols).union(sides.map(union)).union(feet).union([
767 d,dhsw,dhse,dhne,dhnw 769 d,dhsw,dhse,dhne,dhnw
768 ]); 770 ]);
769 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 771 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
770 return rv; 772 return rv;
771 }, 773 },
772 duetholder: function(params) { 774 duetholder: function(params) {
773 return duetholder(); 775 return duetholder();
774 } 776 },
777 foot: foot,
778 shoe: shoe
775}; 779};
776 780
777function main(params) { 781function main(params) {
778 var part = params.part && PARTS[params.part]; 782 var part = params.part && PARTS[params.part];
779 if(!part) return refaxes(); 783 if(!part) return refaxes();
780 var rv = P(part(params)); 784 var rv = P(part(params));
781 if(!params.print) rv = rv.union(refaxes()); 785 if(!params.print) rv = rv.union(refaxes());
782 return rv; 786 return rv;
783} 787}
784 788
785function _main(params) { 789function _main(params) {
786 var e = EFFECTOR.effector(); 790 var e = EFFECTOR.effector();
787 var hs = E3DV6.heatsink(); 791 var hs = E3DV6.heatsink();
788 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); 792 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0);
789 var ms = microswitch(); 793 var ms = microswitch();
790 var hd = EFFECTOR.hinged({ 794 var hd = EFFECTOR.hinged({
791 microswitch:ms,effector:e 795 microswitch:ms,effector:e
792 }); 796 });
793 ms = ms.connectTo( 797 ms = ms.connectTo(
794 ms.properties.screw_connector[0], 798 ms.properties.screw_connector[0],
795 hd.properties.microswitch_screw_connector[0], 799 hd.properties.microswitch_screw_connector[0],
796 false, 0); 800 false, 0);
797 var hdhd = EFFECTOR.split_hinged(hd); 801 var hdhd = EFFECTOR.split_hinged(hd);
798 var fh = EFFECTOR.fanholder(); 802 var fh = EFFECTOR.fanholder();
@@ -802,47 +806,50 @@ function _main(params) {
802 clamp: hdhd[0], 806 clamp: hdhd[0],
803 fanholder: fh, 807 fanholder: fh,
804 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh] 808 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh]
805 }[params.part||'alltogethernow']) 809 }[params.part||'alltogethernow'])
806 var rv = union( 810 var rv = union(
807 e, 811 e,
808 hs, 812 hs,
809 columns(), 813 columns(),
810 ///hd, 814 ///hd,
811 hdhd[0], hdhd[1], 815 hdhd[0], hdhd[1],
812 ms); 816 ms);
813 return rv; 817 return rv;
814} 818}
815 819
816function getParameterDefinitions() { 820function getParameterDefinitions() {
817 return [{ 821 return [{
818 name: 'part', 822 name: 'part',
819 type: 'choice', 823 type: 'choice',
820 values: [ 824 values: [
821 'platform', 825 'platform',
822 'hinged', 826 'hinged',
823 'clamp', 827 'clamp',
824 'fanholder', 828 'fanholder',
825 'duetholder', 829 'duetholder',
830 'foot', 'shoe',
826 'alltogethernow', 831 'alltogethernow',
827 'wip' 832 'wip'
828 ], 833 ],
829 captions: [ 834 captions: [
830 'Effector platform', 835 'Effector platform',
831 'Hinged part', 836 'Hinged part',
832 'Clamp', 837 'Clamp',
833 'Fan holder', 838 'Fan holder',
834 'Duet holder', 839 'Duet holder',
840 'Foot',
841 'Shoe',
835 'All together now!', 842 'All together now!',
836 'Work in progress' 843 'Work in progress'
837 ], 844 ],
838 caption: 'Part', 845 caption: 'Part',
839 initial: 'wip' 846 initial: 'wip'
840 },{ 847 },{
841 name: 'print', 848 name: 'print',
842 type: 'checkbox', 849 type: 'checkbox',
843 caption: 'For print, no nonsense', 850 caption: 'For print, no nonsense',
844 initial: false 851 initial: false
845 }]; 852 }];
846} 853}
847 854
848/* vim:set ft=javascript ai: */ 855/* vim:set ft=javascript ai: */