author | Michael Krelin <hacker@klever.net> | 2016-01-06 23:46:31 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2016-01-06 23:46:31 (UTC) |
commit | 4cb92354224641376d311adc7589ebb4bdc5639d (patch) (unidiff) | |
tree | f6d856a472a52f1af9a34803f72b305f955524e5 /delta.jscad | |
parent | 8cd03b0c3f807d552a6721886a3af0af8b592a1c (diff) | |
download | redelta-4cb92354224641376d311adc7589ebb4bdc5639d.zip redelta-4cb92354224641376d311adc7589ebb4bdc5639d.tar.gz redelta-4cb92354224641376d311adc7589ebb4bdc5639d.tar.bz2 |
duet()
-rw-r--r-- | delta.jscad | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/delta.jscad b/delta.jscad index 043f6f8..b3bb3d3 100644 --- a/delta.jscad +++ b/delta.jscad | |||
@@ -536,48 +536,75 @@ var E2020 = { | |||
536 | var THREEWINDS = [0,120,240]; | 536 | var THREEWINDS = [0,120,240]; |
537 | 537 | ||
538 | function base_extrusions() { | 538 | function base_extrusions() { |
539 | var rv = union( THREEWINDS.map(function(w) { | 539 | var rv = union( THREEWINDS.map(function(w) { |
540 | var e = E2020.extrusion({l:CONFIG.base.el}); | 540 | var e = E2020.extrusion({l:CONFIG.base.el}); |
541 | e = e.connectTo(e.properties.c_midway, | 541 | e = e.connectTo(e.properties.c_midway, |
542 | new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]), | 542 | new CSG.Connector([0,-CD.base.mid_inscription_r,CONFIG.extrusion.w/2],[1,0,0],[0,0,1]), |
543 | false, 0); | 543 | false, 0); |
544 | return union( [0,CONFIG.extrusion.w+CONFIG.base.gap].map(function(z) { | 544 | return union( [0,CONFIG.extrusion.w+CONFIG.base.gap].map(function(z) { |
545 | return e.translate([0,0,z]); | 545 | return e.translate([0,0,z]); |
546 | }) ).rotateZ(w); | 546 | }) ).rotateZ(w); |
547 | }) ); | 547 | }) ); |
548 | rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); | 548 | rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); |
549 | return rv.setColor(CONFIG.color.extrusion); | 549 | return rv.setColor(CONFIG.color.extrusion); |
550 | } | 550 | } |
551 | 551 | ||
552 | function column_extrusions() { | 552 | function column_extrusions() { |
553 | var rv = union( THREEWINDS.map(function(w) { | 553 | var rv = union( THREEWINDS.map(function(w) { |
554 | return E2020.extrusion({l:CONFIG.column.h}).translate([0,CD.base.column_r,0]).rotateZ(w); | 554 | return E2020.extrusion({l:CONFIG.column.h}).translate([0,CD.base.column_r,0]).rotateZ(w); |
555 | }) ); | 555 | }) ); |
556 | rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); | 556 | rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); |
557 | return rv.setColor(CONFIG.color.extrusion); | 557 | return rv.setColor(CONFIG.color.extrusion); |
558 | } | 558 | } |
559 | 559 | ||
560 | function duet() { | ||
561 | var C = CONFIG.duet; | ||
562 | var pholes = new CSG.Properties(); | ||
563 | var hx = C.hole_spacing.x/2; | ||
564 | var hy = C.hole_spacing.y/2; | ||
565 | var hh = { nw: [1,-1], ne: [1,1], se: [-1,1], sw: [-1,-1] }; | ||
566 | var holes = []; | ||
567 | for(w in hh) { | ||
568 | var h = hh[w],_x=h[0]*hx,_y=h[1]*hy; | ||
569 | holes.push(CSG.cylinder({start:[_x,_y,-1],end:[_x,_y,C.pcb_size.z+1],radius:3/2})); | ||
570 | pholes['c_'+w] = new CSG.Connector([_x,_y,0],[0,0,1],[1,0,0]); | ||
571 | } | ||
572 | rv = CSG.cube({ | ||
573 | corner1: [-C.pcb_size.x/2, -C.pcb_size.y/2, 0], | ||
574 | corner2: [ C.pcb_size.x/2, C.pcb_size.y/2, C.pcb_size.z] | ||
575 | }).subtract(holes).setColor(CONFIG.color.pcb).union( | ||
576 | CSG.cube({ | ||
577 | corner1: [-C.pcb_size.x/2,-C.hole_spacing.y/2+3,C.pcb_size.z], | ||
578 | corner2: [ C.pcb_size.x/2, C.hole_spacing.y/2-3,C.h] | ||
579 | }).setColor(CONFIG.color.bulk) | ||
580 | ); | ||
581 | rv.properties.holes = pholes; | ||
582 | rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); | ||
583 | rv.properties.vitamin = true; | ||
584 | return rv; | ||
585 | } | ||
586 | |||
560 | function refaxes(o) { | 587 | function refaxes(o) { |
561 | if(!o) o = {}; | 588 | if(!o) o = {}; |
562 | var l = o.l||20, g = o.g||0.7; | 589 | var l = o.l||20, g = o.g||0.7; |
563 | return union([ | 590 | return union([ |
564 | CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), | 591 | CSG.cylinder({start:[0,0,0],end:[l,0,0]}).setColor([1,0,0,g]), |
565 | CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), | 592 | CSG.cylinder({start:[0,0,0],end:[0,l,0]}).setColor([0,1,0,g]), |
566 | CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) | 593 | CSG.cylinder({start:[0,0,0],end:[0,0,l]}).setColor([0,0,1,g]) |
567 | ]); | 594 | ]); |
568 | } | 595 | } |
569 | 596 | ||
570 | function P(x) { | 597 | function P(x) { |
571 | return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); | 598 | return x.connectTo(x.properties.P,new CSG.Connector([0,0,0],[0,0,1],[1,0,0]), false, 0); |
572 | } | 599 | } |
573 | 600 | ||
574 | function main(params) { | 601 | function main(params) { |
575 | return refaxes().union(P(base_extrusions())); | 602 | return refaxes().union(P(base_extrusions())); |
576 | } | 603 | } |
577 | 604 | ||
578 | function _main(params) { | 605 | function _main(params) { |
579 | var e = EFFECTOR.effector(); | 606 | var e = EFFECTOR.effector(); |
580 | var hs = E3DV6.heatsink(); | 607 | var hs = E3DV6.heatsink(); |
581 | hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); | 608 | hs = hs.connectTo(hs.properties.grove_connector,e.properties.grove_connector,false,0); |
582 | var ms = microswitch(); | 609 | var ms = microswitch(); |
583 | var hd = EFFECTOR.hinged({ | 610 | var hd = EFFECTOR.hinged({ |