summaryrefslogtreecommitdiffabout
path: root/delta.jscad
authorMichael Krelin <hacker@klever.net>2016-01-08 22:17:13 (UTC)
committer Michael Krelin <hacker@klever.net>2016-01-08 22:17:13 (UTC)
commit717f3676d93e8b2f8d71ea4b25461614becb79ef (patch) (unidiff)
tree09e0de72b5828715c8c794ef10f513687caf12b4 /delta.jscad
parent34a65279effcec5f51a9853846f6593dadb72246 (diff)
downloadredelta-717f3676d93e8b2f8d71ea4b25461614becb79ef.zip
redelta-717f3676d93e8b2f8d71ea4b25461614becb79ef.tar.gz
redelta-717f3676d93e8b2f8d71ea4b25461614becb79ef.tar.bz2
wip wip
Diffstat (limited to 'delta.jscad') (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad6
1 files changed, 5 insertions, 1 deletions
diff --git a/delta.jscad b/delta.jscad
index 01a5dc7..8233e74 100644
--- a/delta.jscad
+++ b/delta.jscad
@@ -551,294 +551,298 @@ var E2020 = {
551 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness], 551 [ -e.T.width/2,e.outer/2-e.thickness-e.T.thickness],
552 [ -e.T.width/2,e.outer/2-e.thickness], 552 [ -e.T.width/2,e.outer/2-e.thickness],
553 [ -e.slot_width/2,e.outer/2-e.thickness], 553 [ -e.slot_width/2,e.outer/2-e.thickness],
554 [ -e.slot_width/2,e.outer/2], 554 [ -e.slot_width/2,e.outer/2],
555 ]).extrude({offset:[0,0,l+thickness]}).rotateZ(w); 555 ]).extrude({offset:[0,0,l+thickness]}).rotateZ(w);
556 })); 556 }));
557 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 557 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
558 return rv; 558 return rv;
559 } 559 }
560}; 560};
561 561
562var THREEWINDS = [0,120,240]; 562var THREEWINDS = [0,120,240];
563 563
564function base_sides() { 564function base_sides() {
565 return [0,1].map(function(l) { 565 return [0,1].map(function(l) {
566 return THREEWINDS.map(function(w) { 566 return THREEWINDS.map(function(w) {
567 var e = E2020.extrusion({l:CONFIG.base.el}); 567 var e = E2020.extrusion({l:CONFIG.base.el});
568 e = e.connectTo(e.properties.c_midway, 568 e = e.connectTo(e.properties.c_midway,
569 new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]), 569 new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]),
570 false, 0); 570 false, 0);
571 return ( e.translate([0,0,CONFIG.foot.h+l*(CONFIG.extrusion.w+CONFIG.base.gap)]) 571 return ( e.translate([0,0,CONFIG.foot.h+l*(CONFIG.extrusion.w+CONFIG.base.gap)])
572 .rotateZ(w) 572 .rotateZ(w)
573 .setColor(CONFIG.color.extrusion) ); 573 .setColor(CONFIG.color.extrusion) );
574 }); 574 });
575 }); 575 });
576} 576}
577function base_extrusions() { 577function base_extrusions() {
578 var rv = union( base_sides().map(function(x){return union(x)}) ); 578 var rv = union( base_sides().map(function(x){return union(x)}) );
579 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 579 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
580 return rv; 580 return rv;
581} 581}
582 582
583function columns() { 583function columns() {
584 return THREEWINDS.map(function(w) { 584 return THREEWINDS.map(function(w) {
585 return (E2020.extrusion({l:CONFIG.column.h}) 585 return (E2020.extrusion({l:CONFIG.column.h})
586 .translate([0,CD.base.column_r,CONFIG.foot.h]) 586 .translate([0,CD.base.column_r,CONFIG.foot.h])
587 .rotateZ(w).setColor(CONFIG.color.extrusion) 587 .rotateZ(w).setColor(CONFIG.color.extrusion)
588 ); 588 );
589 }); 589 });
590} 590}
591function column_extrusions() { 591function column_extrusions() {
592 var rv = union( columns() ); 592 var rv = union( columns() );
593 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 593 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
594 return rv; 594 return rv;
595} 595}
596 596
597function duet() { 597function duet() {
598 var C = CONFIG.duet; 598 var C = CONFIG.duet;
599 var pholes = new CSG.Properties(); 599 var pholes = new CSG.Properties();
600 var hx = C.hole_spacing.x/2; 600 var hx = C.hole_spacing.x/2;
601 var hy = C.hole_spacing.y/2; 601 var hy = C.hole_spacing.y/2;
602 var hh = { nw: [-1,1], ne: [1,1], se: [1,-1], sw: [-1,-1] }; 602 var hh = { nw: [-1,1], ne: [1,1], se: [1,-1], sw: [-1,-1] };
603 var holes = []; 603 var holes = [];
604 for(w in hh) { 604 for(w in hh) {
605 var h = hh[w],_x=h[0]*hx,_y=h[1]*hy; 605 var h = hh[w],_x=h[0]*hx,_y=h[1]*hy;
606 holes.push(CSG.cylinder({start:[_x,_y,-1],end:[_x,_y,C.pcb_size.z+1],radius:3/2})); 606 holes.push(CSG.cylinder({start:[_x,_y,-1],end:[_x,_y,C.pcb_size.z+1],radius:3/2}));
607 pholes['c_'+w] = new CSG.Connector([_x,_y,0],[0,0,1],[1,0,0]); 607 pholes['c_'+w] = new CSG.Connector([_x,_y,0],[0,0,1],[1,0,0]);
608 } 608 }
609 rv = CSG.cube({ 609 rv = CSG.cube({
610 corner1: [-C.pcb_size.x/2, -C.pcb_size.y/2, 0], 610 corner1: [-C.pcb_size.x/2, -C.pcb_size.y/2, 0],
611 corner2: [ C.pcb_size.x/2, C.pcb_size.y/2, C.pcb_size.z] 611 corner2: [ C.pcb_size.x/2, C.pcb_size.y/2, C.pcb_size.z]
612 }).subtract(holes).setColor(CONFIG.color.pcb).union( 612 }).subtract(holes).setColor(CONFIG.color.pcb).union(
613 CSG.cube({ 613 CSG.cube({
614 corner1: [-C.pcb_size.x/2,-C.hole_spacing.y/2+3,C.pcb_size.z], 614 corner1: [-C.pcb_size.x/2,-C.hole_spacing.y/2+3,C.pcb_size.z],
615 corner2: [ C.pcb_size.x/2, C.hole_spacing.y/2-3,C.h] 615 corner2: [ C.pcb_size.x/2, C.hole_spacing.y/2-3,C.h]
616 }).setColor(CONFIG.color.bulk) 616 }).setColor(CONFIG.color.bulk)
617 ); 617 );
618 rv.properties.holes = pholes; 618 rv.properties.holes = pholes;
619 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 619 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
620 rv.properties.vitamin = true; 620 rv.properties.vitamin = true;
621 return rv; 621 return rv;
622} 622}
623 623
624function foot() { 624function foot() {
625 var F = CONFIG.foot; 625 var F = CONFIG.foot;
626 var br = F.bolt.hd/2+F.margin; 626 var br = F.bolt.hd/2+F.margin;
627 var bh = F.zscalefactor*Math.sqrt(Math.pow(F.d/2,2)-Math.pow(br,2)); 627 var bh = F.zscalefactor*Math.sqrt(Math.pow(F.d/2,2)-Math.pow(br,2));
628 var th = F.h-bh; 628 var th = F.h-bh;
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.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() { 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 duetholder(params);
744 return PARTS.alltogethernow(params);
745 return base_extrusions();
743 return foot(); 746 return foot();
744 return union(base_extrusions(),column_extrusions(),duet()); 747 return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0]));
748 },
745 alltogethernow: function(params) { 749 alltogethernow: function(params) {
746 var cols = columns(); 750 var cols = columns();
747 var sides = base_sides(); 751 var sides = base_sides();
748 var feet = THREEWINDS.map(function(w,i) { 752 var feet = THREEWINDS.map(function(w,i) {
749 var rv = foot(); 753 var rv = foot();
750 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);
751 return rv; 755 return rv;
752 }); 756 });
753 var dh = duetholder(); 757 var dh = duetholder();
754 var dhsw = dh.connectTo(dh.properties.c_h, 758 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]), 759 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); 760 false,0);
757 var d = duet(); 761 var d = duet();
758 d = d.connectTo(d.properties.holes.c_sw,dhsw.properties.duet.c_sw,false,0); 762 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); 763 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); 764 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); 765 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([ 766 var rv = union(cols).union(sides.map(union)).union(feet).union([
763 d,dhsw,dhse,dhne,dhnw 767 d,dhsw,dhse,dhne,dhnw
764 ]); 768 ]);
765 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 769 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
766 return rv; 770 return rv;
767 }, 771 },
768 duetholder: function(params) { 772 duetholder: function(params) {
769 return duetholder(); 773 return duetholder();
770 } 774 }
771}; 775};
772 776
773function main(params) { 777function main(params) {
774 var part = params.part && PARTS[params.part]; 778 var part = params.part && PARTS[params.part];
775 if(!part) return refaxes(); 779 if(!part) return refaxes();
776 var rv = P(part(params)); 780 var rv = P(part(params));
777 if(!params.print) rv = rv.union(refaxes()); 781 if(!params.print) rv = rv.union(refaxes());
778 return rv; 782 return rv;
779} 783}
780 784
781function _main(params) { 785function _main(params) {
782 var e = EFFECTOR.effector(); 786 var e = EFFECTOR.effector();
783 var hs = E3DV6.heatsink(); 787 var hs = E3DV6.heatsink();
784 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); 788 hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0);
785 var ms = microswitch(); 789 var ms = microswitch();
786 var hd = EFFECTOR.hinged({ 790 var hd = EFFECTOR.hinged({
787 microswitch:ms,effector:e 791 microswitch:ms,effector:e
788 }); 792 });
789 ms = ms.connectTo( 793 ms = ms.connectTo(
790 ms.properties.screw_connector[0], 794 ms.properties.screw_connector[0],
791 hd.properties.microswitch_screw_connector[0], 795 hd.properties.microswitch_screw_connector[0],
792 false, 0); 796 false, 0);
793 var hdhd = EFFECTOR.split_hinged(hd); 797 var hdhd = EFFECTOR.split_hinged(hd);
794 var fh = EFFECTOR.fanholder(); 798 var fh = EFFECTOR.fanholder();
795 return union({ 799 return union({
796 platform: e, 800 platform: e,
797 hinged: hdhd[1], 801 hinged: hdhd[1],
798 clamp: hdhd[0], 802 clamp: hdhd[0],
799 fanholder: fh, 803 fanholder: fh,
800 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh] 804 alltogethernow: [e,hdhd[0],hdhd[1], columns(),hs,ms,fh]
801 }[params.part||'alltogethernow']) 805 }[params.part||'alltogethernow'])
802 var rv = union( 806 var rv = union(
803 e, 807 e,
804 hs, 808 hs,
805 columns(), 809 columns(),
806 ///hd, 810 ///hd,
807 hdhd[0], hdhd[1], 811 hdhd[0], hdhd[1],
808 ms); 812 ms);
809 return rv; 813 return rv;
810} 814}
811 815
812function getParameterDefinitions() { 816function getParameterDefinitions() {
813 return [{ 817 return [{
814 name: 'part', 818 name: 'part',
815 type: 'choice', 819 type: 'choice',
816 values: [ 820 values: [
817 'platform', 821 'platform',
818 'hinged', 822 'hinged',
819 'clamp', 823 'clamp',
820 'fanholder', 824 'fanholder',
821 'duetholder', 825 'duetholder',
822 'alltogethernow', 826 'alltogethernow',
823 'wip' 827 'wip'
824 ], 828 ],
825 captions: [ 829 captions: [
826 'Effector platform', 830 'Effector platform',
827 'Hinged part', 831 'Hinged part',
828 'Clamp', 832 'Clamp',
829 'Fan holder', 833 'Fan holder',
830 'Duet holder', 834 'Duet holder',
831 'All together now!', 835 'All together now!',
832 'Work in progress' 836 'Work in progress'
833 ], 837 ],
834 caption: 'Part', 838 caption: 'Part',
835 initial: 'wip' 839 initial: 'wip'
836 },{ 840 },{
837 name: 'print', 841 name: 'print',
838 type: 'checkbox', 842 type: 'checkbox',
839 caption: 'For print, no nonsense', 843 caption: 'For print, no nonsense',
840 initial: false 844 initial: false
841 }]; 845 }];
842} 846}
843 847
844/* vim:set ft=javascript ai: */ 848/* vim:set ft=javascript ai: */