-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 | |||
@@ -557,6 +557,33 @@ function column_extrusions() { | |||
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; |